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  }