/src/test/java/com/google/ie/business/service/impl/ProjectCommentServiceImplTest.java

http://thoughtsite.googlecode.com/ · Java · 200 lines · 152 code · 28 blank · 20 comment · 14 complexity · b38ef88556848217a29c4aeb6d82d80b MD5 · raw file

  1. // Copyright 2009 Google Inc. All Rights Reserved.
  2. /**
  3. *
  4. */
  5. package com.google.ie.business.service.impl;
  6. import static org.junit.Assert.assertEquals;
  7. import static org.junit.Assert.assertNotNull;
  8. import static org.mockito.Mockito.doNothing;
  9. import static org.mockito.Mockito.mock;
  10. import static org.mockito.Mockito.when;
  11. import com.google.ie.business.dao.AdminRequestDao;
  12. import com.google.ie.business.dao.CommentDao;
  13. import com.google.ie.business.dao.impl.AdminRequestDaoImpl;
  14. import com.google.ie.business.dao.impl.CommentDaoImpl;
  15. import com.google.ie.business.dao.impl.DaoConstants;
  16. import com.google.ie.business.domain.AdminRequest;
  17. import com.google.ie.business.domain.Comment;
  18. import com.google.ie.business.domain.EntityIndex;
  19. import com.google.ie.business.domain.ProjectComment;
  20. import com.google.ie.business.domain.User;
  21. import com.google.ie.business.service.EntityIndexService;
  22. import com.google.ie.business.service.ServiceConstants;
  23. import com.google.ie.common.audit.AuditManager;
  24. import com.google.ie.common.taskqueue.IndexQueueUpdater;
  25. import com.google.ie.dto.RetrievalInfo;
  26. import com.google.ie.test.ServiceTest;
  27. import org.junit.Before;
  28. import org.junit.Test;
  29. import java.util.ArrayList;
  30. import java.util.Date;
  31. import java.util.List;
  32. /**
  33. * @author asirohi
  34. *
  35. */
  36. public class ProjectCommentServiceImplTest extends ServiceTest {
  37. ProjectCommentServiceImpl projectCommentServiceImpl;
  38. private CommentDao commentDao = mock(CommentDaoImpl.class);
  39. private AuditManager auditmanager = mock(AuditManager.class);
  40. private AdminRequestDao mockAdminRequestDao = mock(AdminRequestDaoImpl.class);
  41. private EntityIndexService entityIndexService = mock(EntityIndexServiceImpl.class);
  42. private IndexQueueUpdater indexQueueUpdater = mock(IndexQueueUpdater.class);
  43. /**
  44. */
  45. @Before
  46. public void setUp() {
  47. if (projectCommentServiceImpl == null) {
  48. projectCommentServiceImpl = new ProjectCommentServiceImpl();
  49. }
  50. projectCommentServiceImpl.setCommentDao(commentDao);
  51. projectCommentServiceImpl.setAuditManager(auditmanager);
  52. projectCommentServiceImpl.setAdminRequestDao(mockAdminRequestDao);
  53. projectCommentServiceImpl.setEntityIndexService(entityIndexService);
  54. projectCommentServiceImpl.setIndexQueueUpdater(indexQueueUpdater);
  55. }
  56. /**
  57. * Test method for
  58. * {@link com.google.ie.business.service.impl.ProjectCommentServiceImpl#addComment(com.google.ie.business.domain.Comment, com.google.ie.business.domain.User)}
  59. * .
  60. */
  61. @Test
  62. public void addComment() {
  63. ProjectComment projectComment = new ProjectComment();
  64. projectComment.setText("Nice project");
  65. projectComment.setProjectKey("projectKey");
  66. projectComment.setKey("key");
  67. User user = new User();
  68. user.setUserKey("userKey");
  69. EntityIndex index = new EntityIndex();
  70. // index.setKey(KeyFactory.createKey("projectComment", 12345));
  71. // index.setIndexed(0);
  72. when(projectCommentServiceImpl.getCommentDao().saveComment(projectComment))
  73. .thenReturn(projectComment);
  74. when(projectCommentServiceImpl.getEntityIndexService().createEntityIndex(
  75. projectComment.getKey()))
  76. .thenReturn(index);
  77. doNothing().when(projectCommentServiceImpl.getIndexQueueUpdater()).indexEntity(
  78. index.getKey());
  79. assertNotNull(projectCommentServiceImpl.addComment(projectComment, user));
  80. assertEquals(projectComment,
  81. projectCommentServiceImpl.addComment(projectComment,
  82. user));
  83. }
  84. @Test
  85. public void getComments() {
  86. String projKey = "testKey";
  87. List<Comment> comments = new ArrayList<Comment>();
  88. ProjectComment projComment = new ProjectComment();
  89. projComment.setKey("testCommentKey");
  90. comments.add(projComment);
  91. RetrievalInfo retrievalInfo = prepareRetrievalInfo(null);
  92. when(commentDao.getComments(projKey, retrievalInfo,
  93. "projectKey")).thenReturn(comments);
  94. assertNotNull(projectCommentServiceImpl.getComments(projKey, retrievalInfo));
  95. assertEquals("testCommentKey", projectCommentServiceImpl.getComments(projKey,
  96. retrievalInfo)
  97. .get(0).getKey());
  98. }
  99. private RetrievalInfo prepareRetrievalInfo(RetrievalInfo retrievalInfo) {
  100. if (retrievalInfo == null) {
  101. retrievalInfo = new RetrievalInfo();
  102. retrievalInfo.setStartIndex(ServiceConstants.ZERO);
  103. retrievalInfo.setNoOfRecords(ServiceConstants.IDEA_COMMENT_LIST_DEFAULT_SIZE);
  104. retrievalInfo.setOrderType(ServiceConstants.DEFAULT_IDEA_COMMENT_ORDERING_TYPE);
  105. retrievalInfo.setOrderBy(ServiceConstants.DEFAULT_IDEA_COMMENT_ORDERING_FIELD);
  106. } else {
  107. // Handle garbage values if any.
  108. String orderOn = retrievalInfo.getOrderBy();
  109. String orderByParam = retrievalInfo.getOrderType();
  110. if (retrievalInfo.getStartIndex() < ServiceConstants.ZERO)
  111. retrievalInfo.setStartIndex(ServiceConstants.ZERO);
  112. if (retrievalInfo.getNoOfRecords() <= ServiceConstants.ZERO)
  113. retrievalInfo.setNoOfRecords(ServiceConstants.IDEA_COMMENT_LIST_DEFAULT_SIZE);
  114. if (orderByParam == null || !((orderByParam.equals(DaoConstants.ORDERING_ASCENDING)
  115. || orderByParam.equals(DaoConstants.ORDERING_DESCENDING))))
  116. retrievalInfo.setOrderType(ServiceConstants.DEFAULT_IDEA_COMMENT_ORDERING_TYPE);
  117. if (orderOn == null
  118. || !(orderOn
  119. .equals(ServiceConstants.IDEA_COMMENT_ORDERING_FIELD_CREATED_ON)
  120. )) {
  121. retrievalInfo.setOrderBy(ServiceConstants.DEFAULT_IDEA_COMMENT_ORDERING_FIELD);
  122. }
  123. }
  124. return retrievalInfo;
  125. }
  126. @Test
  127. public void flagComment() {
  128. ProjectComment ProjectComment = new ProjectComment();
  129. ProjectComment.setKey("testCommentKey");
  130. ProjectComment.setText("He this is an awesome project. Keep it up and do " +
  131. "let us know about the latest advancements in the project");
  132. ProjectComment.setStatus("Saved");
  133. ProjectComment saveProjectComment = new ProjectComment();
  134. saveProjectComment.setKey("testCommentKey");
  135. saveProjectComment.setText("He this is an awesome project. Keep it up and do " +
  136. "let us know about the latest advancements in the project");
  137. saveProjectComment.setStatus("Flagged");
  138. User user = new User();
  139. user.setUserKey("key");
  140. user.setEmailId("surabhi@gmail.com");
  141. AdminRequest adminRequest = new AdminRequest();
  142. adminRequest.setEntityKey("projectCommentKey");
  143. adminRequest.setEntityType(ProjectComment.class.getSimpleName());
  144. adminRequest.setRequesterkey("UserKey");
  145. adminRequest.setRequestType(AdminRequest.REQUEST_OBJECTIONABLE);
  146. adminRequest.setCreatedOn(new Date());
  147. adminRequest.setStatus(AdminRequest.STATUS_PENDING);
  148. adminRequest.setEntityTitle(projectCommentServiceImpl.getTrimmedComment(ProjectComment
  149. .getText()));
  150. when(projectCommentServiceImpl.getCommentById(ProjectComment.getKey()))
  151. .thenReturn(ProjectComment);
  152. when(projectCommentServiceImpl.getCommentDao().saveComment(ProjectComment)).thenReturn(
  153. saveProjectComment);
  154. when(mockAdminRequestDao.saveRequest(adminRequest)).thenReturn(true);
  155. projectCommentServiceImpl.flagComment(ProjectComment.getKey(), user);
  156. assertEquals("Flagged", saveProjectComment.getStatus());
  157. }
  158. @Test
  159. public void getTrimmedComment() {
  160. /* checking if comment text is greater than 40 */
  161. String commentText = "Hey this is an awesome project. Keep it up and do " +
  162. "let us know about the latest advancements in the project";
  163. String trimmedComment = projectCommentServiceImpl
  164. .getTrimmedComment(commentText);
  165. assertEquals(42, trimmedComment.length());
  166. /* checking if comment text is smaller than 40 */
  167. commentText = "Hey this is an awesome project";
  168. trimmedComment =
  169. projectCommentServiceImpl.getTrimmedComment(commentText);
  170. assertEquals(commentText.length(), trimmedComment.length());
  171. }
  172. }