PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/jira-project/jira-components/jira-plugins/jira-project-config-plugin/src/test/java/com/atlassian/jira/projectconfig/contextproviders/TestComponentsSummaryPanelContextProvider.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 195 lines | 149 code | 31 blank | 15 comment | 6 complexity | 18cb1d6b02607ba57e5135bfd23ab678 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.projectconfig.contextproviders;
  2. import com.atlassian.jira.bc.project.component.MockProjectComponent;
  3. import com.atlassian.jira.bc.project.component.ProjectComponent;
  4. import com.atlassian.jira.bc.project.component.ProjectComponentService;
  5. import com.atlassian.jira.plugin.profile.UserFormat;
  6. import com.atlassian.jira.plugin.userformat.ProfileLinkUserFormat;
  7. import com.atlassian.jira.plugin.userformat.UserFormats;
  8. import com.atlassian.jira.project.MockProject;
  9. import com.atlassian.jira.project.Project;
  10. import com.atlassian.jira.projectconfig.util.TabUrlFactory;
  11. import com.atlassian.jira.util.ErrorCollection;
  12. import com.atlassian.jira.util.collect.MapBuilder;
  13. import com.google.common.collect.Lists;
  14. import com.google.common.collect.Sets;
  15. import org.junit.Test;
  16. import org.junit.runner.RunWith;
  17. import org.mockito.Mock;
  18. import org.mockito.runners.MockitoJUnitRunner;
  19. import java.util.Arrays;
  20. import java.util.Collections;
  21. import java.util.List;
  22. import java.util.ListIterator;
  23. import java.util.Map;
  24. import static com.atlassian.jira.projectconfig.contextproviders.ComponentsSummaryPanelContextProvider.SimpleComponent;
  25. import static org.junit.Assert.assertEquals;
  26. import static org.mockito.Mockito.eq;
  27. import static org.mockito.Mockito.notNull;
  28. import static org.mockito.Mockito.when;
  29. /**
  30. * @since v4.4
  31. */
  32. @RunWith(MockitoJUnitRunner.class)
  33. public class TestComponentsSummaryPanelContextProvider {
  34. private static final String COMPONENT_LEAD_ID = "component-summary-panel-lead";
  35. private static final String URL = "something";
  36. @Mock
  37. private ContextProviderUtils utils;
  38. @Mock
  39. private ProjectComponentService pcs;
  40. @Mock
  41. private UserFormats ufm;
  42. @Mock
  43. private UserFormat userFormat;
  44. @Mock
  45. private TabUrlFactory tabUrlFactory;
  46. @Test
  47. public void testGetContextMapNone() throws Exception {
  48. // set up
  49. final Map<String, Object> arguments = MapBuilder.<String, Object>build("argument", true);
  50. final Project mockProject = new MockProject(181818L, "KEY");
  51. when(utils.getProject()).thenReturn(mockProject);
  52. when(pcs.findAllForProject(notNull(ErrorCollection.class), eq(mockProject.getId()))).thenReturn(Collections.<ProjectComponent>emptyList());
  53. when(ufm.forType(ProfileLinkUserFormat.TYPE)).thenReturn(userFormat);
  54. when(utils.flattenErrors(notNull(ErrorCollection.class))).thenReturn(Collections.<String>emptySet());
  55. when(tabUrlFactory.forComponents()).thenReturn(URL);
  56. // execute
  57. final ComponentsSummaryPanelContextProvider testing = new ComponentsSummaryPanelContextProvider(utils, pcs, ufm, tabUrlFactory);
  58. final Map<String, Object> actualContext = testing.getContextMap(arguments);
  59. // verify
  60. final MapBuilder<String, Object> expectedContext = MapBuilder.newBuilder("components", Collections.<Object>emptyList(),
  61. "errors", Collections.<String>emptySet(),
  62. "totalSize", 0,
  63. "actualSize", 0);
  64. expectedContext.add("manageUrl", URL);
  65. expectedContext.addAll(arguments);
  66. assertEquals(expectedContext.toMap(), actualContext);
  67. }
  68. @Test
  69. public void testGetContextMapAll() throws Exception {
  70. // set up
  71. final String leaderFormatted = "<user>leader</user>";
  72. final Map<String, Object> arguments = MapBuilder.<String, Object>build("argument", true);
  73. final Project mockProject = new MockProject(181818L, "KEY");
  74. final MockProjectComponent projectComponent1 = new MockProjectComponent(67L, "name1").setLead("leader");
  75. final MockProjectComponent projectComponent2 = new MockProjectComponent(56L, "name2");
  76. final List<ProjectComponent> components = Lists.<ProjectComponent>newArrayList(projectComponent1, projectComponent2);
  77. when(utils.getProject()).thenReturn(mockProject);
  78. when(pcs.findAllForProject(notNull(ErrorCollection.class), eq(mockProject.getId()))).thenReturn(components);
  79. when(ufm.forType(ProfileLinkUserFormat.TYPE)).thenReturn(userFormat);
  80. when(utils.flattenErrors(notNull(ErrorCollection.class))).thenReturn(Collections.<String>emptySet());
  81. when(tabUrlFactory.forComponents()).thenReturn(URL);
  82. when(userFormat.format(projectComponent1.getLead(), COMPONENT_LEAD_ID)).thenReturn(leaderFormatted);
  83. // execute
  84. final ComponentsSummaryPanelContextProvider testing = new ComponentsSummaryPanelContextProvider(utils, pcs, ufm, tabUrlFactory);
  85. final Map<String, Object> actualContext = testing.getContextMap(arguments);
  86. // verify
  87. final List<SimpleComponent> simpleComponents = Lists.newArrayList(
  88. new SimpleComponent(projectComponent1.getName(), leaderFormatted),
  89. new SimpleComponent(projectComponent2.getName(), null));
  90. final MapBuilder<String, Object> expectedContext = MapBuilder.newBuilder("components", simpleComponents,
  91. "errors", Collections.<String>emptySet(),
  92. "totalSize", 2,
  93. "actualSize", 2);
  94. expectedContext.add("manageUrl", URL);
  95. expectedContext.addAll(arguments);
  96. assertEquals(expectedContext.toMap(), actualContext);
  97. }
  98. @Test
  99. public void testGetContextMapSome() throws Exception {
  100. // setup
  101. final Map<String, Object> arguments = MapBuilder.<String, Object>build("argument", true);
  102. final Project mockProject = new MockProject(181818L, "KEY");
  103. final List<ProjectComponent> components = Lists.newArrayList();
  104. for (int i = 0; i < 20; i++) {
  105. String user = i % 2 == 0 ? String.format("User-%d", i) : null;
  106. components.add(new MockProjectComponent((long) i, String.format("Component-%d", i)).setLead(user));
  107. }
  108. when(utils.getProject()).thenReturn(mockProject);
  109. when(pcs.findAllForProject(notNull(ErrorCollection.class), eq(mockProject.getId()))).thenReturn(components);
  110. when(ufm.forType(ProfileLinkUserFormat.TYPE)).thenReturn(userFormat);
  111. when(utils.flattenErrors(notNull(ErrorCollection.class))).thenReturn(Collections.<String>emptySet());
  112. when(tabUrlFactory.forComponents()).thenReturn(URL);
  113. List<SimpleComponent> expectedComponents = Lists.newArrayList();
  114. for (ListIterator<ProjectComponent> iterator = components.listIterator(); iterator.hasNext() && iterator.nextIndex() < 5; ) {
  115. ProjectComponent next = iterator.next();
  116. String user = null;
  117. if (next.getLead() != null) {
  118. user = String.format("<user>%s</user>", next.getLead());
  119. when(userFormat.format(next.getLead(), COMPONENT_LEAD_ID))
  120. .thenReturn(user);
  121. }
  122. expectedComponents.add(new SimpleComponent(next.getName(), user));
  123. }
  124. // execute
  125. final ComponentsSummaryPanelContextProvider testing = new ComponentsSummaryPanelContextProvider(utils, pcs, ufm, tabUrlFactory);
  126. final Map<String, Object> actualContext = testing.getContextMap(arguments);
  127. // verify
  128. final MapBuilder<String, Object> expectedContext = MapBuilder.newBuilder("components", expectedComponents,
  129. "errors", Collections.<String>emptySet(),
  130. "totalSize", 20,
  131. "actualSize", 5);
  132. expectedContext.add("manageUrl", URL);
  133. expectedContext.addAll(arguments);
  134. assertEquals(expectedContext.toMap(), actualContext);
  135. }
  136. @Test
  137. public void testGetContextMapError() throws Exception {
  138. // set up
  139. final Map<String, Object> arguments = MapBuilder.<String, Object>build("argument", true);
  140. final Project mockProject = new MockProject(181818L, "KEY");
  141. final ProjectComponent component = new MockProjectComponent(78L, "Name");
  142. final List<ProjectComponent> components = Lists.newArrayList(component);
  143. final String error1 = "Error1";
  144. final String error2 = "Error1";
  145. when(utils.getProject()).thenReturn(mockProject);
  146. when(ufm.forType(ProfileLinkUserFormat.TYPE)).thenReturn(userFormat);
  147. when(pcs.findAllForProject(notNull(ErrorCollection.class), eq(mockProject.getId()))).thenReturn(components);
  148. when(utils.flattenErrors(notNull(ErrorCollection.class)))
  149. .thenReturn(Sets.<String>newLinkedHashSet(Arrays.asList(error1, error2)));
  150. when(tabUrlFactory.forComponents()).thenReturn(URL);
  151. final List<SimpleComponent> expectedComponents = Lists.newArrayList(new SimpleComponent(component.getName(), null));
  152. // execute
  153. final ComponentsSummaryPanelContextProvider testing = new ComponentsSummaryPanelContextProvider(utils, pcs, ufm, tabUrlFactory);
  154. final Map<String, Object> actualContext = testing.getContextMap(arguments);
  155. // verify
  156. final MapBuilder<String, Object> expectedContext = MapBuilder.newBuilder("components", expectedComponents,
  157. "errors", Sets.<Object>newLinkedHashSet(Arrays.asList(error1, error2)),
  158. "totalSize", 1,
  159. "actualSize", 1);
  160. expectedContext.add("manageUrl", URL);
  161. expectedContext.addAll(arguments);
  162. assertEquals(expectedContext.toMap(), actualContext);
  163. }
  164. }