1 package org.unitedfront2.domain.communication;
2
3 import java.util.HashMap;
4 import java.util.Locale;
5 import java.util.Map;
6
7 import org.junit.Assert;
8 import org.junit.Test;
9 import org.unitedfront2.domain.accesscontrol.AccessControl;
10 import org.unitedfront2.domain.accesscontrol.OwnerOnly;
11 import org.unitedfront2.domain.accesscontrol.Public;
12 import org.unitedfront2.domain.accesscontrol.UserOnly;
13 import org.unitedfront2.test.TransactionalTestCaseWithInitialData;
14
15 public class BlogEntryTest extends TransactionalTestCaseWithInitialData {
16
17 @Test
18 public void testPost() throws BlogCodeUsedByOtherException {
19 AccessControl readAccessControl = domainFactory.prototype(Public.class);
20 AccessControl writeAccessControl = domainFactory.prototype(OwnerOnly.class);
21 Blog blog = domainFactory.prototype(new Blog("test",
22 createOverview(readAccessControl, writeAccessControl),
23 simpleUser1.getId(), readAccessControl, writeAccessControl,
24 domainFactory.prototype(UserOnly.class)));
25 blog.store();
26 BlogEntry blogEntry = domainFactory.prototype(new BlogEntry(createEntry(
27 blog.getReadAccessControl(), blog.getWriteAccessControl())));
28 blog.post(blogEntry);
29 Comment comment = createComment();
30
31 blogEntry.retrieveComments();
32 Assert.assertSame(0, blogEntry.getComments().size());
33 blogEntry.post(comment);
34 blogEntry.retrieveComments();
35 Assert.assertSame(1, blogEntry.getComments().size());
36 Assert.assertEquals(comment, blogEntry.getComments().get(0));
37 }
38
39 private Message createOverview(AccessControl readAccessControl,
40 AccessControl writeAccessControl) {
41 MessageEntry entry = new MessageEntry();
42 entry.setSubject("テストブログ");
43 entry.setBody("これはテストブログです。");
44 Map<Locale, MessageEntry> entryMap
45 = new HashMap<Locale, MessageEntry>();
46 entryMap.put(Locale.JAPANESE, entry);
47 Message overview = domainFactory.prototype(new Message(null, entryMap,
48 simpleUser1.getId(), simpleUser1.getId(),
49 readAccessControl, writeAccessControl));
50 return overview;
51 }
52
53 private Message createEntry(AccessControl readAccessControl,
54 AccessControl writeAccessControl) {
55 MessageEntry entry = new MessageEntry();
56 entry.setSubject("今日の記事です。");
57 entry.setBody("これは今日の記事です。");
58 Map<Locale, MessageEntry> entryMap = new HashMap<Locale, MessageEntry>();
59 entryMap.put(Locale.JAPANESE, entry);
60 Message article = domainFactory.prototype(new Message(null, entryMap,
61 simpleUser1.getId(), simpleUser1.getId(),
62 readAccessControl, writeAccessControl));
63 return article;
64 }
65
66 private Comment createComment() {
67 return domainFactory.prototype(new Comment(simpleUser1.getId(),
68 "これはコメントのテストです。"));
69 }
70
71 @Test
72 public void testRetrieveCommenterProfiles匿名のコメントは復元されない() throws BlogCodeUsedByOtherException {
73 AccessControl readAccessControl = domainFactory.prototype(Public.class);
74 AccessControl writeAccessControl = domainFactory.prototype(OwnerOnly.class);
75 Blog blog = domainFactory.prototype(new Blog("test",
76 createOverview(readAccessControl, writeAccessControl),
77 simpleUser1.getId(), readAccessControl, writeAccessControl,
78 domainFactory.prototype(UserOnly.class)));
79 blog.store();
80 BlogEntry blogEntry = domainFactory.prototype(new BlogEntry(createEntry(
81 blog.getReadAccessControl(), blog.getWriteAccessControl())));
82 blog.post(blogEntry);
83 Comment comment = domainFactory.prototype(new Comment(null, "匿名からのコメント"));
84 blogEntry.post(comment);
85 blogEntry.retrieveCommenterProfiles();
86 Assert.assertTrue(true);
87 }
88 }