/*
* Copyright (C) 2003-2011 eXo Platform SAS.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.exoplatform.social.core.storage.cache;
import org.exoplatform.social.core.activity.model.ExoSocialActivity;
import org.exoplatform.social.core.activity.model.ExoSocialActivityImpl;
import org.exoplatform.social.core.identity.model.Identity;
import org.exoplatform.social.core.storage.impl.IdentityStorageImpl;
import org.exoplatform.social.core.test.AbstractCoreTest;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:alain.defrance@exoplatform.com">Alain Defrance</a>
* @version $Revision$
*/
public class CachedActivityStorageTestCase extends AbstractCoreTest {
private CachedActivityStorage activityStorage;
private IdentityStorageImpl identityStorage;
private SocialStorageCacheService cacheService;
private Identity identity;
private List<String> tearDownIdentityList;
@Override
protected void setUp() throws Exception {
super.setUp();
//
activityStorage = (CachedActivityStorage) getContainer().getComponentInstanceOfType(CachedActivityStorage.class);
identityStorage = (IdentityStorageImpl) getContainer().getComponentInstanceOfType(IdentityStorageImpl.class);
cacheService = (SocialStorageCacheService) getContainer().getComponentInstanceOfType(SocialStorageCacheService.class);
//
cacheService.getActivitiesCache().clearCache();
cacheService.getActivitiesCountCache().clearCache();
cacheService.getActivityCache().clearCache();
//
identity = new Identity("p", "r");
identityStorage.saveIdentity(identity);
//
tearDownIdentityList = new ArrayList<String>();
tearDownIdentityList.add(identity.getId());
}
@Override
protected void tearDown() throws Exception {
for (String id : tearDownIdentityList) {
identityStorage.deleteIdentity(new Identity(id));
}
super.tearDown();
}
public void testSaveActivity() throws Exception {
//
ExoSocialActivity activity = new ExoSocialActivityImpl();
activity.setTitle("hello");
activity.setUserId(identity.getId());
activityStorage.saveActivity(identity, activity);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(0, cacheService.getActivitiesCache().getCacheSize());
//
activityStorage.getActivityFeed(identity, 0, 20);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(1, cacheService.getActivitiesCache().getCacheSize());
//
ExoSocialActivity activity2 = new ExoSocialActivityImpl();
activity2.setTitle("hello 2");
activity2.setUserId(identity.getId());
activityStorage.saveActivity(identity, activity2);
//
assertEquals(2, cacheService.getActivityCache().getCacheSize());
assertEquals(0, cacheService.getActivitiesCache().getCacheSize());
}
public void testRemoveActivity() throws Exception {
//
ExoSocialActivity activity = new ExoSocialActivityImpl();
activity.setTitle("hello");
activity.setUserId(identity.getId());
activityStorage.saveActivity(identity, activity);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(0, cacheService.getActivitiesCache().getCacheSize());
//
activityStorage.getActivityFeed(identity, 0, 20);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(1, cacheService.getActivitiesCache().getCacheSize());
//
activityStorage.deleteActivity(activity.getId());
//
assertEquals(0, cacheService.getActivityCache().getCacheSize());
assertEquals(0, cacheService.getActivitiesCache().getCacheSize());
}
public void testSaveComment() throws Exception {
//
ExoSocialActivity activity = new ExoSocialActivityImpl();
activity.setTitle("hello");
activity.setUserId(identity.getId());
activityStorage.saveActivity(identity, activity);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(0, cacheService.getActivitiesCache().getCacheSize());
//
activityStorage.getActivityFeed(identity, 0, 20);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(1, cacheService.getActivitiesCache().getCacheSize());
ExoSocialActivity comment = new ExoSocialActivityImpl();
comment.setTitle("comment");
comment.setUserId(identity.getId());
activityStorage.saveComment(activity, comment);
//
assertEquals(2, cacheService.getActivityCache().getCacheSize());
assertEquals(1, cacheService.getActivitiesCache().getCacheSize());
assertEquals(activity.getId(), activityStorage.getActivityFeed(identity, 0, 20).get(0).getId());
assertEquals(comment.getId(), activityStorage.getActivityFeed(identity, 0, 20).get(0).getReplyToId()[0]);
}
public void testRemoveComment() throws Exception {
//
ExoSocialActivity activity = new ExoSocialActivityImpl();
activity.setTitle("hello");
activity.setUserId(identity.getId());
activityStorage.saveActivity(identity, activity);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(0, cacheService.getActivitiesCache().getCacheSize());
//
activityStorage.getActivityFeed(identity, 0, 20);
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(1, cacheService.getActivitiesCache().getCacheSize());
ExoSocialActivity comment = new ExoSocialActivityImpl();
comment.setTitle("comment");
comment.setUserId(identity.getId());
activityStorage.saveComment(activity, comment);
//
assertEquals(2, cacheService.getActivityCache().getCacheSize());
assertEquals(1, cacheService.getActivitiesCache().getCacheSize());
assertEquals(activity.getId(), activityStorage.getActivityFeed(identity, 0, 20).get(0).getId());
assertEquals(comment.getId(), activityStorage.getActivityFeed(identity, 0, 20).get(0).getReplyToId()[0]);
//
activityStorage.deleteComment(activity.getId(), comment.getId());
//
assertEquals(1, cacheService.getActivityCache().getCacheSize());
assertEquals(1, cacheService.getActivitiesCache().getCacheSize());
assertEquals(activity.getId(), activityStorage.getActivityFeed(identity, 0, 20).get(0).getId());
assertEquals(0, activityStorage.getActivityFeed(identity, 0, 20).get(0).getReplyToId().length);
}
}