1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.exoplatform.social.core.storage.impl;
19
20 import org.exoplatform.container.xml.InitParams;
21 import org.exoplatform.social.core.BaseActivityProcessorPlugin;
22 import org.exoplatform.social.core.activity.model.ExoSocialActivity;
23 import org.exoplatform.social.core.activity.model.ExoSocialActivityImpl;
24 import org.exoplatform.social.core.application.RelationshipPublisher.TitleId;
25 import org.exoplatform.social.core.identity.model.Identity;
26 import org.exoplatform.social.core.identity.provider.SpaceIdentityProvider;
27 import org.exoplatform.social.core.space.impl.DefaultSpaceApplicationHandler;
28 import org.exoplatform.social.core.space.model.Space;
29 import org.exoplatform.social.core.storage.ActivityStorageException;
30 import org.exoplatform.social.core.storage.api.IdentityStorage;
31 import org.exoplatform.social.core.storage.api.SpaceStorage;
32 import org.exoplatform.social.core.test.AbstractCoreTest;
33 import org.exoplatform.social.core.test.MaxQueryNumber;
34 import org.exoplatform.social.core.test.QueryNumberTest;
35 import org.junit.FixMethodOrder;
36 import org.junit.runners.MethodSorters;
37
38 import java.util.ArrayList;
39 import java.util.Arrays;
40 import java.util.Calendar;
41 import java.util.HashMap;
42 import java.util.Iterator;
43 import java.util.LinkedHashMap;
44 import java.util.List;
45 import java.util.Map;
46
47
48
49
50
51
52
53
54 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
55 @QueryNumberTest
56 public class ActivityStorageImplTestCase extends AbstractCoreTest {
57 private IdentityStorage identityStorage;
58 private ActivityStorageImpl activityStorage;
59 private RelationshipStorageImpl relationshipStorage;
60 private List<ExoSocialActivity> tearDownActivityList;
61 private List<Space> tearDownSpaceList;
62 private SpaceStorage spaceStorage;
63
64 private Identity rootIdentity;
65 private Identity johnIdentity;
66 private Identity maryIdentity;
67 private Identity demoIdentity;
68
69 @Override
70 protected void setUp() throws Exception {
71 super.setUp();
72
73 identityStorage = (IdentityStorage) getContainer().getComponentInstanceOfType(IdentityStorage.class);
74 activityStorage = (ActivityStorageImpl) getContainer().getComponentInstanceOfType(ActivityStorageImpl.class);
75 relationshipStorage = (RelationshipStorageImpl) getContainer().getComponentInstanceOfType(RelationshipStorageImpl.class);
76 spaceStorage = (SpaceStorage) this.getContainer().getComponentInstanceOfType(SpaceStorage.class);
77
78 assertNotNull(identityStorage);
79 assertNotNull(activityStorage);
80 assertNotNull(relationshipStorage);
81
82 rootIdentity = new Identity("organization", "root");
83 johnIdentity = new Identity("organization", "john");
84 maryIdentity = new Identity("organization", "mary");
85 demoIdentity = new Identity("organization", "demo");
86
87 identityStorage.saveIdentity(rootIdentity);
88 identityStorage.saveIdentity(johnIdentity);
89 identityStorage.saveIdentity(maryIdentity);
90 identityStorage.saveIdentity(demoIdentity);
91
92 assertNotNull(rootIdentity.getId());
93 assertNotNull(johnIdentity.getId());
94 assertNotNull(maryIdentity.getId());
95 assertNotNull(demoIdentity.getId());
96
97 tearDownActivityList = new ArrayList<ExoSocialActivity>();
98 tearDownSpaceList = new ArrayList<Space>();
99 }
100
101 @Override
102 protected void tearDown() throws Exception {
103
104 for (ExoSocialActivity activity : tearDownActivityList) {
105 activityStorage.deleteActivity(activity.getId());
106 }
107
108 for (Space sp : tearDownSpaceList) {
109 spaceStorage.deleteSpace(sp.getId());
110 }
111
112 identityStorage.deleteIdentity(rootIdentity);
113 identityStorage.deleteIdentity(johnIdentity);
114 identityStorage.deleteIdentity(maryIdentity);
115 identityStorage.deleteIdentity(demoIdentity);
116
117 super.tearDown();
118 }
119
120 @MaxQueryNumber(273)
121 public void testSaveActivity() throws Exception {
122
123
124 ExoSocialActivity activity = new ExoSocialActivityImpl();
125 activity.setTitle("title ");
126 activityStorage.saveActivity(rootIdentity, activity);
127 assertNotNull(activity.getId());
128
129
130 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
131 assertEquals(activity.getId(), got.getId());
132 assertEquals(activity.getTitle(), got.getTitle());
133
134
135 ExoSocialActivity act = new ExoSocialActivityImpl();
136 act.setTitle("@#$%^&*(()_+:<>?");
137 activityStorage.saveActivity(rootIdentity, act);
138 assertNotNull(act.getId());
139 }
140
141
142
143
144
145
146
147
148
149 @MaxQueryNumber(162)
150 public void testTemplateParams() throws Exception {
151 ExoSocialActivity activity = new ExoSocialActivityImpl();
152 activity.setTitle("title ");
153 Map<String, String> templateParams = new LinkedHashMap<String, String>();
154 templateParams.put("key1", "value1");
155 templateParams.put("key2", "value2");
156 templateParams.put("key3", "value3");
157 activity.setTemplateParams(templateParams);
158 activityStorage.saveActivity(rootIdentity, activity);
159 assertNotNull(activity.getId());
160
161 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
162 Map<String, String> gotTemplateParams = got.getTemplateParams();
163 List<String> arrayList = new ArrayList(gotTemplateParams.values());
164 assertEquals("value1", arrayList.get(0));
165 assertEquals("value2", arrayList.get(1));
166 assertEquals("value3", arrayList.get(2));
167
168 }
169
170 @MaxQueryNumber(248)
171 public void testUpdateActivity() throws Exception {
172
173
174 ExoSocialActivity activity = new ExoSocialActivityImpl();
175 activity.setTitle("&");
176 activity.setBody("test&");
177 activityStorage.saveActivity(rootIdentity, activity);
178 assertNotNull(activity.getId());
179
180
181 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
182
183 got.setBody(null);
184 got.setTitle(null);
185
186 activityStorage.updateActivity(got);
187
188 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
189
190 assertEquals(activity.getId(), got.getId());
191 assertEquals(activity.getTitle(), got.getTitle());
192
193 }
194
195 @MaxQueryNumber(428)
196 public void testUpdateActivityForLike() throws Exception {
197
198
199 ExoSocialActivity activity = new ExoSocialActivityImpl();
200 activity.setTitle("a");
201 activity.setBody("test");
202 activityStorage.saveActivity(rootIdentity, activity);
203 assertNotNull(activity.getId());
204
205
206 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
207
208 got.setBody(null);
209 got.setTitle(null);
210 got.setLikeIdentityIds(new String[] {maryIdentity.getId()});
211 activityStorage.updateActivity(got);
212
213
214 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
215
216 assertEquals(got.getId(), updatedActivity.getId());
217 assertEquals(got.getTitle(), updatedActivity.getTitle());
218 assertEquals(got.getBody(), updatedActivity.getBody());
219
220 }
221
222
223
224
225
226
227
228
229 @MaxQueryNumber(428)
230 public void testUpdateActivityForWrong() throws Exception {
231
232
233 ExoSocialActivity activity = new ExoSocialActivityImpl();
234 activity.setTitle("&");
235 activity.setBody("test&");
236 activityStorage.saveActivity(rootIdentity, activity);
237 assertNotNull(activity.getId());
238
239
240 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
241
242 got.setLikeIdentityIds(new String[] {maryIdentity.getId()});
243 activityStorage.updateActivity(got);
244
245
246 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
247
248 assertEquals(got.getId(), updatedActivity.getId());
249 assertNotSame(got.getTitle(), updatedActivity.getTitle());
250 assertNotSame(got.getBody(), updatedActivity.getBody());
251
252 }
253
254 @MaxQueryNumber(428)
255 public void testUpdateActivityForUnLike() throws Exception {
256
257
258 ExoSocialActivity activity = new ExoSocialActivityImpl();
259 activity.setTitle("title ");
260 activity.setLikeIdentityIds(new String[] {maryIdentity.getId()});
261 activityStorage.saveActivity(rootIdentity, activity);
262 assertNotNull(activity.getId());
263
264
265 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
266
267 got.setBody(null);
268 got.setTitle(null);
269 got.setLikeIdentityIds(new String[] {});
270 activityStorage.updateActivity(got);
271
272
273 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
274
275 assertEquals(got.getId(), updatedActivity.getId());
276 assertEquals(got.getTitle(), updatedActivity.getTitle());
277 assertEquals(got.getBody(), updatedActivity.getBody());
278
279 }
280
281
282
283
284
285
286
287
288 @MaxQueryNumber(428)
289 public void testUpdateActivityForUnLikeWrong() throws Exception {
290
291
292 ExoSocialActivity activity = new ExoSocialActivityImpl();
293 activity.setTitle("&");
294 activity.setBody("test&");
295 activity.setLikeIdentityIds(new String[] {maryIdentity.getId()});
296 activityStorage.saveActivity(rootIdentity, activity);
297 assertNotNull(activity.getId());
298
299
300 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
301
302
303 got.setLikeIdentityIds(new String[] {});
304 activityStorage.updateActivity(got);
305
306
307 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
308
309 assertEquals(got.getId(), updatedActivity.getId());
310 assertNotSame(got.getTitle(), updatedActivity.getTitle());
311 assertNotSame(got.getBody(), updatedActivity.getBody());
312
313 }
314
315 @MaxQueryNumber(366)
316 public void testSaveComment() throws Exception {
317
318
319 ExoSocialActivity activity = new ExoSocialActivityImpl();
320 activity.setTitle("activity ");
321 activityStorage.saveActivity(rootIdentity, activity);
322 assertNotNull(activity.getId());
323
324
325 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
326 assertEquals(activity.getId(), got.getId());
327 assertEquals(activity.getTitle(), got.getTitle());
328
329
330 ExoSocialActivity comment = new ExoSocialActivityImpl();
331 comment.setTitle("comment");
332 comment.setUserId(rootIdentity.getId());
333 activityStorage.saveComment(activity, comment);
334 assertNotNull(comment.getId());
335
336
337 ExoSocialActivity gotComment = activityStorage.getActivity(comment.getId());
338 assertEquals(comment.getId(), gotComment.getId());
339 assertEquals(comment.getTitle(), gotComment.getTitle());
340
341
342 ExoSocialActivity gotParentActivity = activityStorage.getParentActivity(comment);
343 assertEquals(activity.getId(), gotParentActivity.getId());
344 assertEquals(activity.getTitle(), gotParentActivity.getTitle());
345 assertEquals(1, activity.getReplyToId().length);
346 assertEquals(comment.getId(), activity.getReplyToId()[0]);
347
348 }
349
350 @MaxQueryNumber(2685)
351 public void testActivityCount() throws Exception {
352
353
354 for (int i = 0; i < 10; ++i) {
355 ExoSocialActivity activity = new ExoSocialActivityImpl();
356 activity.setTitle("title " + i);
357 activityStorage.saveActivity(rootIdentity, activity);
358 }
359
360
361 assertEquals(10, activityStorage.getNumberOfUserActivities(rootIdentity));
362
363
364 Iterator<ExoSocialActivity> it = activityStorage.getUserActivities(rootIdentity, 0, 100).iterator();
365
366 for (int i = 0; i < 5; ++i) {
367 activityStorage.deleteActivity(it.next().getId());
368 }
369
370 it = activityStorage.getUserActivities(rootIdentity, 0, 100).iterator();
371
372
373 assertEquals(5, activityStorage.getNumberOfUserActivities(rootIdentity));
374
375 while(it.hasNext()) {
376 tearDownActivityList.add(it.next());
377 }
378
379
380 }
381
382
383
384
385 @MaxQueryNumber(888)
386 public void testUserPostActivityToSpace() throws ActivityStorageException {
387
388 Space space = getSpaceInstance();
389 SpaceIdentityProvider spaceIdentityProvider = (SpaceIdentityProvider) getContainer().getComponentInstanceOfType(SpaceIdentityProvider.class);
390 Identity spaceIdentity = spaceIdentityProvider.createIdentity(space);
391 identityStorage.saveIdentity(spaceIdentity);
392
393
394 ExoSocialActivity activity = new ExoSocialActivityImpl();
395 activity.setTitle("Space's Activity");
396 activity.setUserId(johnIdentity.getId());
397
398 activityStorage.saveActivity(spaceIdentity, activity);
399
400
401 ExoSocialActivity gotActivity = activityStorage.getActivity(activity.getId());
402
403 assertEquals("userId must be " + johnIdentity.getId(), johnIdentity.getId(), gotActivity.getUserId());
404
405
406 List<ExoSocialActivity> gotActivities = activityStorage.getUserActivities(johnIdentity, 0, 20);
407 assertEquals(1, gotActivities.size());
408 assertEquals(johnIdentity.getId(), gotActivities.get(0).getUserId());
409
410 identityStorage.deleteIdentity(spaceIdentity);
411 }
412
413 @MaxQueryNumber(1527)
414 public void testActivityOrder() throws Exception {
415
416 for (int i = 0; i < 10; ++i) {
417 ExoSocialActivity activity = new ExoSocialActivityImpl();
418 activity.setTitle("title " + i);
419 activityStorage.saveActivity(rootIdentity, activity);
420 tearDownActivityList.add(activity);
421 }
422
423 int i = 9;
424 for (ExoSocialActivity activity : activityStorage.getUserActivities(rootIdentity)) {
425 assertEquals("title " + i, activity.getTitle());
426 --i;
427 }
428 }
429
430 @MaxQueryNumber(1500)
431 public void testActivityOrderByPostedTime() throws Exception {
432
433 Calendar cal = Calendar.getInstance();
434 long today = cal.getTime().getTime();
435 cal.add(Calendar.DATE, -1);
436 long yesterday = cal.getTime().getTime();
437
438
439 for (int i = 0; i < 10; ++i) {
440 ExoSocialActivity activity = new ExoSocialActivityImpl();
441 activity.setTitle("title " + i);
442 activity.setPostedTime(i> 5 ? today + i : yesterday + i);
443 activityStorage.saveActivity(rootIdentity, activity);
444 }
445
446 int i = 9;
447 for (ExoSocialActivity activity : activityStorage.getUserActivities(rootIdentity)) {
448 assertEquals("title " + i, activity.getTitle());
449
450 if (i>5) {
451 assertEquals(today + i, activity.getPostedTime().longValue());
452 } else {
453 assertEquals(yesterday + i, activity.getPostedTime().longValue());
454 }
455
456 --i;
457 }
458 }
459
460
461
462
463 @MaxQueryNumber(1494)
464 public void testActivityOrderByPostedTime2() throws Exception {
465
466 Calendar cal = Calendar.getInstance();
467 cal.set(Calendar.DATE, 1);
468 long today = cal.getTime().getTime();
469 cal.add(Calendar.DATE, -1);
470 long yesterday = cal.getTime().getTime();
471
472
473 for (int i = 0; i < 10; ++i) {
474 ExoSocialActivity activity = new ExoSocialActivityImpl();
475 activity.setTitle("title " + i);
476 activity.setPostedTime(i >= 5 ? today + i : yesterday + i);
477 activityStorage.saveActivity(rootIdentity, activity);
478 }
479
480 int i = 9;
481 for (ExoSocialActivity activity : activityStorage.getUserActivities(rootIdentity)) {
482 assertEquals("title " + i, activity.getTitle());
483
484 if (i>= 5) {
485 assertEquals(today + i, activity.getPostedTime().longValue());
486 } else {
487 assertEquals(yesterday + i, activity.getPostedTime().longValue());
488 }
489
490 --i;
491 }
492 }
493
494 @MaxQueryNumber(4155)
495 public void testActivityOrder2() throws Exception {
496
497 for (int i = 0; i < 10; ++i) {
498 ExoSocialActivity activity = new ExoSocialActivityImpl();
499 activity.setTitle("title " + i);
500 activityStorage.saveActivity(rootIdentity, activity);
501
502 }
503
504
505 Iterator<ExoSocialActivity> it = activityStorage.getUserActivities(rootIdentity).iterator();
506
507 for (int i = 0; i < 5; ++i) {
508 activityStorage.deleteActivity(it.next().getId());
509 }
510
511 while (it.hasNext()) {
512 tearDownActivityList.add(it.next());
513 }
514
515
516 for (int i = 0; i < 10; ++i) {
517 ExoSocialActivity activity = new ExoSocialActivityImpl();
518 activity.setTitle("title " + i);
519 activityStorage.saveActivity(rootIdentity, activity);
520 tearDownActivityList.add(activity);
521 }
522
523 List<ExoSocialActivity> activityies = activityStorage.getUserActivities(rootIdentity);
524 int i = 0;
525 int[] values = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 4, 3, 2, 1, 0};
526 for (ExoSocialActivity activity : activityies) {
527 assertEquals("title " + values[i], activity.getTitle());
528 ++i;
529 }
530 }
531
532 @MaxQueryNumber(318)
533 public void testActivityHidden() throws Exception {
534
535
536 ExoSocialActivity activity = new ExoSocialActivityImpl();
537 activity.setTitle("title");
538 activity.setBody("body");
539 activity.isHidden(false);
540 activityStorage.saveActivity(rootIdentity, activity);
541 assertNotNull(activity.getId());
542
543
544 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
545 got.isHidden(true);
546
547 activityStorage.updateActivity(got);
548
549 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
550 assertEquals(true, updatedActivity.isHidden());
551 }
552
553 @MaxQueryNumber(366)
554 public void testActivityUnHidden() throws Exception {
555
556
557 ExoSocialActivity activity = new ExoSocialActivityImpl();
558 activity.setTitle("title");
559 activity.setBody("body");
560 activity.isHidden(true);
561 activityStorage.saveActivity(rootIdentity, activity);
562 assertNotNull(activity.getId());
563
564
565 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
566 got.isHidden(false);
567
568 activityStorage.updateActivity(got);
569
570 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
571 assertEquals(false, updatedActivity.isHidden());
572 }
573
574 @MaxQueryNumber(248)
575 public void testActivityLock() throws Exception {
576
577
578 ExoSocialActivity activity = new ExoSocialActivityImpl();
579 activity.setTitle("title");
580 activity.setBody("body");
581 activity.isLocked(false);
582 activityStorage.saveActivity(rootIdentity, activity);
583 assertNotNull(activity.getId());
584
585
586 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
587 got.isLocked(true);
588
589 activityStorage.updateActivity(got);
590
591 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
592 assertEquals(true, updatedActivity.isLocked());
593 }
594
595 @MaxQueryNumber(248)
596 public void testActivityUnLock() throws Exception {
597
598
599 ExoSocialActivity activity = new ExoSocialActivityImpl();
600 activity.setTitle("title");
601 activity.setBody("body");
602 activity.isLocked(true);
603 activityStorage.saveActivity(rootIdentity, activity);
604 assertNotNull(activity.getId());
605
606
607 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
608 got.isLocked(false);
609
610 activityStorage.updateActivity(got);
611
612 ExoSocialActivity updatedActivity = activityStorage.getActivity(activity.getId());
613 assertEquals(false, updatedActivity.isLocked());
614 }
615
616 @MaxQueryNumber(32430)
617 public void testCommentOrder() throws Exception {
618
619 for (int i = 0; i < 10; ++i) {
620 Thread.sleep(10);
621 ExoSocialActivity activity = new ExoSocialActivityImpl();
622 activity.setTitle("title " + i);
623 activityStorage.saveActivity(rootIdentity, activity);
624 tearDownActivityList.add(activity);
625
626
627 for(int j = 0; j < 10; ++j) {
628 Thread.sleep(10);
629 ExoSocialActivity comment = new ExoSocialActivityImpl();
630 comment.setTitle("title " + i + j);
631 comment.setUserId(rootIdentity.getId());
632 activityStorage.saveComment(activity, comment);
633 }
634 }
635
636 int i = 9;
637 for (ExoSocialActivity activity : activityStorage.getUserActivities(rootIdentity)) {
638 int j = 0;
639 for (String commentId : activity.getReplyToId()) {
640 if (!"".equals(commentId)) {
641 assertEquals("title " + i + j, activityStorage.getActivity(commentId).getTitle());
642 ++j;
643 }
644 }
645 --i;
646 }
647 }
648
649 @MaxQueryNumber(3180)
650 public void testDeleteComment() throws Exception {
651 ExoSocialActivity activity = new ExoSocialActivityImpl();
652 activity.setTitle("activity title");
653
654 activityStorage.saveActivity(rootIdentity, activity);
655 tearDownActivityList.add(activity);
656
657 activity = activityStorage.getActivity(activity.getId());
658
659 for (int i = 0; i < 10; ++i) {
660 Thread.sleep(10);
661
662 ExoSocialActivity comment = new ExoSocialActivityImpl();
663 comment.setTitle("comment title " + i);
664 comment.setUserId(rootIdentity.getId());
665
666 activityStorage.saveComment(activity, comment);
667 }
668
669 assertEquals(10, activityStorage.getActivity(activity.getId()).getReplyToId().length);
670
671 int i = 0;
672 activity = activityStorage.getActivity(activity.getId());
673 for (String commentId : activity.getReplyToId()) {
674 if (!"".equals(commentId) && i < 5) {
675 activityStorage.deleteActivity(commentId);
676 ++i;
677 }
678 }
679
680 assertEquals(5, activityStorage.getActivity(activity.getId()).getReplyToId().length);
681 }
682
683 @MaxQueryNumber(630)
684 public void testLike() throws Exception {
685 ExoSocialActivity activity = new ExoSocialActivityImpl();
686 activity.setTitle("activity title");
687
688 activityStorage.saveActivity(rootIdentity, activity);
689
690 activity.setLikeIdentityIds(new String[] {rootIdentity.getId(), johnIdentity.getId(), demoIdentity.getId()});
691
692 activityStorage.saveActivity(rootIdentity, activity);
693
694 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
695
696 assertEquals(1, activities.size());
697 assertEquals(3, activities.get(0).getLikeIdentityIds().length);
698
699 List<String> ids = Arrays.asList(activities.get(0).getLikeIdentityIds());
700
701 assertTrue(ids.contains(rootIdentity.getId()));
702 assertTrue(ids.contains(johnIdentity.getId()));
703 assertTrue(ids.contains(demoIdentity.getId()));
704 assertTrue(!ids.contains(maryIdentity.getId()));
705 }
706
707 @MaxQueryNumber(4263)
708 public void testContactActivities() throws Exception {
709
710
711 assertEquals(0, activityStorage.getActivitiesOfIdentities(Arrays.asList(rootIdentity, johnIdentity), 0, 100).size());
712
713 for (int i = 0; i < 10; ++i) {
714
715 ExoSocialActivity activity = new ExoSocialActivityImpl();
716 activity.setTitle("root activity " + i);
717 activityStorage.saveActivity(rootIdentity, activity);
718
719 ExoSocialActivity activity2 = new ExoSocialActivityImpl();
720 activity2.setTitle("john activity " + i);
721 activityStorage.saveActivity(johnIdentity, activity2);
722
723 ExoSocialActivity activity3 = new ExoSocialActivityImpl();
724 activity3.setTitle("mary activity " + i);
725 activityStorage.saveActivity(maryIdentity, activity3);
726 }
727
728
729 List<ExoSocialActivity> activities = activityStorage.getActivitiesOfIdentities(Arrays.asList(rootIdentity, johnIdentity), 0, 100);
730 assertEquals(20, activities.size());
731
732 int i = 9;
733 Iterator<ExoSocialActivity> it = activities.iterator();
734 while (it.hasNext()) {
735
736 ExoSocialActivity activity = it.next();
737 assertEquals("john activity " + i, activity.getTitle());
738
739 activity = it.next();
740 assertEquals("root activity " + i, activity.getTitle());
741 --i;
742 }
743
744 }
745
746 @MaxQueryNumber(372)
747 public void testTimeStamp() throws Exception {
748 ExoSocialActivity activity = new ExoSocialActivityImpl();
749 activity.setTitle("activity title");
750 activityStorage.saveActivity(rootIdentity, activity);
751
752 ExoSocialActivity comment = new ExoSocialActivityImpl();
753 comment.setUserId(rootIdentity.getId());
754 comment.setTitle("comment title");
755
756 activityStorage.saveComment(activity, comment);
757
758 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
759
760 assertEquals(1, activities.size());
761 assertFalse(activities.get(0).getPostedTime() == 0);
762 assertEquals(1, activities.get(0).getReplyToId().length);
763
764 ExoSocialActivity gotComment = activityStorage.getActivity(activities.get(0).getReplyToId()[0]);
765 assertFalse(gotComment.getPostedTime() == 0);
766
767 }
768
769 @MaxQueryNumber(1347)
770 public void testManyDays() throws Exception {
771
772 long timestamp111 = timestamp(2001, 1, 1);
773 long timestamp112 = timestamp(2001, 1, 2);
774 long timestamp121 = timestamp(2001, 2, 1);
775 long timestamp122 = timestamp(2001, 2, 2);
776 long timestamp211 = timestamp(2002, 1, 1);
777 long timestamp212 = timestamp(2002, 1, 2);
778 long timestamp221 = timestamp(2002, 2, 1);
779 long timestamp222 = timestamp(2002, 2, 2);
780
781 addActivity(rootIdentity, timestamp111);
782 addActivity(rootIdentity, timestamp112);
783 addActivity(rootIdentity, timestamp121);
784 addActivity(rootIdentity, timestamp122);
785 addActivity(rootIdentity, timestamp211);
786 addActivity(rootIdentity, timestamp212);
787 addActivity(rootIdentity, timestamp221);
788 addActivity(rootIdentity, timestamp222);
789
790 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
791 assertEquals(8, activities.size());
792 assertEquals(timestamp111, activities.get(7).getPostedTime().longValue());
793 assertEquals(timestamp112, activities.get(6).getPostedTime().longValue());
794 assertEquals(timestamp121, activities.get(5).getPostedTime().longValue());
795 assertEquals(timestamp122, activities.get(4).getPostedTime().longValue());
796 assertEquals(timestamp211, activities.get(3).getPostedTime().longValue());
797 assertEquals(timestamp212, activities.get(2).getPostedTime().longValue());
798 assertEquals(timestamp221, activities.get(1).getPostedTime().longValue());
799 assertEquals(timestamp222, activities.get(0).getPostedTime().longValue());
800
801 }
802
803 @MaxQueryNumber(561)
804 public void testManyDaysNoActivityOnDay() throws Exception {
805
806 long timestamp1 = timestamp(2001, 1, 1);
807 long timestamp2 = timestamp(2001, 1, 2);
808
809 addActivity(rootIdentity, timestamp1);
810 ExoSocialActivity activity2 = addActivity(rootIdentity, timestamp2);
811
812 activityStorage.deleteActivity(activity2.getId());
813
814 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
815 assertEquals(1, activities.size());
816 assertEquals(timestamp1, activities.get(0).getPostedTime().longValue());
817
818 }
819
820 @MaxQueryNumber(1131)
821 public void testManyDaysNoActivityOnMonth() throws Exception {
822
823 long timestamp11 = timestamp(2001, 1, 1);
824 long timestamp12 = timestamp(2001, 1, 2);
825 long timestamp21 = timestamp(2001, 2, 1);
826 long timestamp22 = timestamp(2001, 2, 2);
827
828 addActivity(rootIdentity, timestamp11);
829 addActivity(rootIdentity, timestamp12);
830 ExoSocialActivity activity21 = addActivity(rootIdentity, timestamp21);
831 ExoSocialActivity activity22 = addActivity(rootIdentity, timestamp22);
832
833 activityStorage.deleteActivity(activity21.getId());
834 activityStorage.deleteActivity(activity22.getId());
835
836 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
837 assertEquals(2, activities.size());
838 assertEquals(timestamp11, activities.get(1).getPostedTime().longValue());
839 assertEquals(timestamp12, activities.get(0).getPostedTime().longValue());
840
841 }
842
843 @MaxQueryNumber(2271)
844 public void testManyDaysNoActivityOnYear() throws Exception {
845
846 long timestamp111 = timestamp(2001, 1, 1);
847 long timestamp112 = timestamp(2001, 1, 2);
848 long timestamp121 = timestamp(2001, 2, 1);
849 long timestamp122 = timestamp(2001, 2, 2);
850 long timestamp211 = timestamp(2002, 1, 1);
851 long timestamp212 = timestamp(2002, 1, 2);
852 long timestamp221 = timestamp(2002, 2, 1);
853 long timestamp222 = timestamp(2002, 2, 2);
854
855 addActivity(rootIdentity, timestamp111);
856 addActivity(rootIdentity, timestamp112);
857 addActivity(rootIdentity, timestamp121);
858 addActivity(rootIdentity, timestamp122);
859 ExoSocialActivity activity211 = addActivity(rootIdentity, timestamp211);
860 ExoSocialActivity activity212 = addActivity(rootIdentity, timestamp212);
861 ExoSocialActivity activity221 = addActivity(rootIdentity, timestamp221);
862 ExoSocialActivity activity222 = addActivity(rootIdentity, timestamp222);
863
864 activityStorage.deleteActivity(activity211.getId());
865 activityStorage.deleteActivity(activity212.getId());
866 activityStorage.deleteActivity(activity221.getId());
867 activityStorage.deleteActivity(activity222.getId());
868
869 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
870 assertEquals(4, activities.size());
871 assertEquals(timestamp111, activities.get(3).getPostedTime().longValue());
872 assertEquals(timestamp112, activities.get(2).getPostedTime().longValue());
873 assertEquals(timestamp121, activities.get(1).getPostedTime().longValue());
874 assertEquals(timestamp122, activities.get(0).getPostedTime().longValue());
875
876 }
877
878 @MaxQueryNumber(3207)
879 public void testManyDaysNoActivityOnAll() throws Exception {
880
881 long timestamp111 = timestamp(2001, 1, 1);
882 long timestamp112 = timestamp(2001, 1, 2);
883 long timestamp121 = timestamp(2001, 2, 1);
884 long timestamp122 = timestamp(2001, 2, 2);
885 long timestamp211 = timestamp(2002, 1, 1);
886 long timestamp212 = timestamp(2002, 1, 2);
887 long timestamp221 = timestamp(2002, 2, 1);
888 long timestamp222 = timestamp(2002, 2, 2);
889
890 ExoSocialActivity activity111 = addActivity(rootIdentity, timestamp111);
891 ExoSocialActivity activity112 = addActivity(rootIdentity, timestamp112);
892 ExoSocialActivity activity121 = addActivity(rootIdentity, timestamp121);
893 ExoSocialActivity activity122 = addActivity(rootIdentity, timestamp122);
894 ExoSocialActivity activity211 = addActivity(rootIdentity, timestamp211);
895 ExoSocialActivity activity212 = addActivity(rootIdentity, timestamp212);
896 ExoSocialActivity activity221 = addActivity(rootIdentity, timestamp221);
897 ExoSocialActivity activity222 = addActivity(rootIdentity, timestamp222);
898
899 activityStorage.deleteActivity(activity111.getId());
900 activityStorage.deleteActivity(activity112.getId());
901 activityStorage.deleteActivity(activity121.getId());
902 activityStorage.deleteActivity(activity122.getId());
903 activityStorage.deleteActivity(activity211.getId());
904 activityStorage.deleteActivity(activity212.getId());
905 activityStorage.deleteActivity(activity221.getId());
906 activityStorage.deleteActivity(activity222.getId());
907
908 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
909 assertEquals(0, activities.size());
910
911 }
912
913 @MaxQueryNumber(165)
914 public void testRelationshipActivity() throws Exception {
915 ExoSocialActivity activity = new ExoSocialActivityImpl();
916 activity.setTitle("I am now connected with @receiverRemoteId");
917 activity.setType("exosocial:relationship");
918
919 activity.setAppId("appId");
920 activity.setBody("body");
921 activity.setBodyId("bodyId");
922 activity.setTitleId(TitleId.CONNECTION_REQUESTED.toString());
923 activity.setExternalId("externalId");
924
925 activity.setUrl("http://www.exoplatform.org");
926
927 Map<String,String> params = new HashMap<String,String>();
928 params.put("SENDER", "senderRemoteId");
929 params.put("RECEIVER", "receiverRemoteId");
930 params.put("RELATIONSHIP_UUID", "relationship_id");
931 activity.setTemplateParams(params);
932
933 activityStorage.saveActivity(rootIdentity, activity);
934
935 List<ExoSocialActivity> activities = activityStorage.getUserActivities(rootIdentity);
936 assertNotNull(activities);
937 assertEquals(1, activities.size());
938
939 for(ExoSocialActivity element : activities) {
940
941
942 assertNotNull(element.getTitle());
943
944 assertNotNull(element.getType());
945
946 assertNotNull(element.getAppId());
947
948 assertNotNull(element.getBody());
949
950 assertNotNull(element.getBodyId());
951
952 assertEquals(TitleId.CONNECTION_REQUESTED.toString(), element.getTitleId());
953
954 assertNotNull(element.getExternalId());
955
956
957
958 assertEquals("http://www.exoplatform.org", element.getUrl());
959
960 assertNotNull(element.getUserId());
961
962 assertNotNull(element.getTemplateParams());
963
964 }
965
966
967 }
968
969 @MaxQueryNumber(366)
970 public void testActivityProcessing() throws Exception {
971
972
973 BaseActivityProcessorPlugin processor = new DummyProcessor(null);
974 activityStorage.getActivityProcessors().add(processor);
975
976
977 ExoSocialActivity activity = new ExoSocialActivityImpl();
978 activity.setTitle("activity");
979 activityStorage.saveActivity(rootIdentity, activity);
980 assertNotNull(activity.getId());
981
982
983 ExoSocialActivity got = activityStorage.getActivity(activity.getId());
984 assertEquals(activity.getId(), got.getId());
985 assertEquals("edited", got.getTitle());
986
987
988 ExoSocialActivity comment = new ExoSocialActivityImpl();
989 comment.setTitle("comment");
990 comment.setUserId(rootIdentity.getId());
991 activityStorage.saveComment(activity, comment);
992 assertNotNull(comment.getId());
993
994
995 ExoSocialActivity gotComment = activityStorage.getActivity(comment.getId());
996 assertEquals(comment.getId(), gotComment.getId());
997 assertEquals("edited", gotComment.getTitle());
998
999
1000 ExoSocialActivity gotParentActivity = activityStorage.getParentActivity(comment);
1001 assertEquals(activity.getId(), gotParentActivity.getId());
1002 assertEquals("edited", gotParentActivity.getTitle());
1003 assertEquals(1, activity.getReplyToId().length);
1004 assertEquals(comment.getId(), activity.getReplyToId()[0]);
1005
1006
1007 activityStorage.getActivityProcessors().remove(processor);
1008
1009 }
1010
1011
1012
1013
1014
1015
1016 private Space getSpaceInstance() {
1017 Space space = new Space();
1018 space.setDisplayName("myspace");
1019 space.setPrettyName(space.getDisplayName());
1020 space.setRegistration(Space.OPEN);
1021 space.setDescription("add new space");
1022 space.setType(DefaultSpaceApplicationHandler.NAME);
1023 space.setVisibility(Space.PUBLIC);
1024 space.setPriority(Space.INTERMEDIATE_PRIORITY);
1025 space.setGroupId("/space/space");
1026 space.setUrl(space.getPrettyName());
1027 String[] managers = new String[] {"john", "demo"};
1028 space.setManagers(managers);
1029 return space;
1030 }
1031
1032 private ExoSocialActivity addActivity(Identity identity, long timestamp) {
1033
1034 ExoSocialActivity activity = new ExoSocialActivityImpl();
1035 activity.setTitle("activity title");
1036 activity.setPostedTime(timestamp);
1037 activityStorage.saveActivity(identity, activity);
1038
1039 return activity;
1040
1041 }
1042
1043 private long timestamp(int year, int month, int day) {
1044
1045 Calendar cal = Calendar.getInstance();
1046 cal.set(year, month, day, 0, 0, 0);
1047 return cal.getTime().getTime();
1048
1049 }
1050
1051 class DummyProcessor extends BaseActivityProcessorPlugin {
1052
1053 DummyProcessor(final InitParams params) {
1054 super(params);
1055 }
1056
1057 @Override
1058 public void processActivity(final ExoSocialActivity activity) {
1059 activity.setTitle("edited");
1060 }
1061 }
1062
1063 private Space getSpaceInstance(int number) {
1064 Space space = new Space();
1065 space.setApp("app");
1066 space.setDisplayName("myspace " + number);
1067 space.setPrettyName(space.getDisplayName());
1068 space.setRegistration(Space.OPEN);
1069 space.setDescription("add new space " + number);
1070 space.setType(DefaultSpaceApplicationHandler.NAME);
1071 space.setVisibility(Space.PUBLIC);
1072 space.setPriority(Space.INTERMEDIATE_PRIORITY);
1073 space.setGroupId("/spaces/space" + number);
1074 String[] managers = new String[] {"demo", "tom"};
1075 String[] members = new String[] {"raul", "ghost", "dragon"};
1076 String[] invitedUsers = new String[] {"register1", "mary"};
1077 String[] pendingUsers = new String[] {"jame", "paul", "hacker"};
1078 space.setInvitedUsers(invitedUsers);
1079 space.setPendingUsers(pendingUsers);
1080 space.setManagers(managers);
1081 space.setMembers(members);
1082 space.setUrl(space.getPrettyName());
1083 return space;
1084 }
1085
1086 private long getSinceTime() {
1087 Calendar cal = Calendar.getInstance();
1088 return cal.getTimeInMillis();
1089 }
1090 }