PageRenderTime 26ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/jira-project/jira-components/jira-tests-parent/jira-tests-unit/src/test/java/com/atlassian/jira/issue/fields/rest/TestFieldHtmlFactoryImpl.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 211 lines | 168 code | 43 blank | 0 comment | 0 complexity | 69d08836e3034201836039d040949b5d MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.issue.fields.rest;
  2. import com.atlassian.jira.issue.Issue;
  3. import com.atlassian.jira.issue.customfields.OperationContext;
  4. import com.atlassian.jira.issue.customfields.view.CustomFieldParams;
  5. import com.atlassian.jira.issue.fields.CustomField;
  6. import com.atlassian.jira.issue.fields.FieldManager;
  7. import com.atlassian.jira.issue.fields.OrderableField;
  8. import com.atlassian.jira.issue.fields.rest.FieldHtmlFactoryImpl.FieldRenderItemWithTab;
  9. import com.atlassian.jira.issue.fields.rest.json.beans.FieldHtmlBean;
  10. import com.atlassian.jira.issue.fields.rest.json.beans.FieldTab;
  11. import com.atlassian.jira.issue.fields.screen.FieldScreenRendererFactory;
  12. import com.atlassian.jira.issue.operation.ScreenableIssueOperation;
  13. import com.atlassian.jira.issue.transport.CollectionParams;
  14. import com.atlassian.jira.security.PermissionManager;
  15. import com.atlassian.jira.user.ApplicationUser;
  16. import com.atlassian.jira.util.I18nHelper;
  17. import com.google.common.collect.Lists;
  18. import org.junit.Before;
  19. import org.junit.Test;
  20. import org.junit.runner.RunWith;
  21. import org.mockito.Mock;
  22. import org.mockito.Mockito;
  23. import org.mockito.invocation.InvocationOnMock;
  24. import org.mockito.runners.MockitoJUnitRunner;
  25. import org.mockito.stubbing.Answer;
  26. import webwork.action.Action;
  27. import java.util.Collections;
  28. import java.util.List;
  29. import java.util.Map;
  30. import static org.junit.Assert.assertEquals;
  31. import static org.mockito.Matchers.any;
  32. import static org.mockito.Mockito.mock;
  33. import static org.mockito.Mockito.when;
  34. @RunWith(MockitoJUnitRunner.class)
  35. public class TestFieldHtmlFactoryImpl {
  36. @Mock
  37. private I18nHelper.BeanFactory beanFactory;
  38. @Mock
  39. private I18nHelper i18nHelper;
  40. @Mock
  41. private FieldManager fieldManager;
  42. @Mock
  43. private FieldScreenRendererFactory fieldScreenRendererFactory;
  44. @Mock
  45. private PermissionManager permissionManager;
  46. @Mock
  47. private OperationContext operationContext;
  48. @Mock
  49. private Map<String, Object> fieldValuesHolder;
  50. @Before
  51. public void setUp() {
  52. when(beanFactory.getInstance(any(ApplicationUser.class))).thenReturn(i18nHelper);
  53. when(i18nHelper.getText(any(String.class))).thenAnswer(new Answer<String>() {
  54. @Override
  55. public String answer(final InvocationOnMock invocation) throws Throwable {
  56. return invocation.getArguments()[0].toString();
  57. }
  58. });
  59. when(operationContext.getFieldValuesHolder()).thenReturn(fieldValuesHolder);
  60. }
  61. @Test
  62. public void testGetInlineEditFieldsNonEmptyCustomField() {
  63. final FieldRenderItemWithTab fieldRenderWithTab = mock(FieldRenderItemWithTab.class);
  64. when(fieldRenderWithTab.getEditHtml(any(Action.class), any(OperationContext.class), any(Issue.class), any(Map.class))).thenReturn("someHtml");
  65. when(fieldRenderWithTab.getId()).thenReturn("someId");
  66. when(fieldRenderWithTab.getNameKey()).thenReturn("someNameKey");
  67. final FieldTab fieldTab = mock(FieldTab.class);
  68. when(fieldRenderWithTab.getFieldTab()).thenReturn(fieldTab);
  69. final CustomFieldParams customFieldParams = mock(CustomFieldParams.class);
  70. when(fieldValuesHolder.get(Mockito.eq("someId"))).thenReturn(customFieldParams);
  71. when(customFieldParams.getAllValues()).thenReturn(Collections.singletonList("someValue"));
  72. final CustomField field = mock(CustomField.class);
  73. when(field.getValue(null)).thenReturn("value");
  74. when(fieldRenderWithTab.getOrderableField()).thenReturn(field);
  75. final FieldHtmlFactoryImpl fieldHtmlFactory = createFieldHtmlFactoryImplForEditTest(Lists.newArrayList(fieldRenderWithTab));
  76. final List<FieldHtmlBean> editFields = fieldHtmlFactory.getInlineEditFields(null, operationContext, null, null, false);
  77. assertEquals(1, editFields.size());
  78. final FieldHtmlBean fieldHtmlBean = editFields.get(0);
  79. assertEquals("someId", fieldHtmlBean.getId());
  80. assertEquals("someHtml", fieldHtmlBean.getEditHtml());
  81. assertEquals("someNameKey", fieldHtmlBean.getLabel());
  82. assertEquals(fieldTab, fieldHtmlBean.getTab());
  83. }
  84. @Test
  85. public void testGetInlineEditFieldsEmptyPropertyField() {
  86. final FieldRenderItemWithTab fieldRenderWithTab = mock(FieldRenderItemWithTab.class);
  87. when(fieldRenderWithTab.getEditHtml(any(Action.class), any(OperationContext.class), any(Issue.class), any(Map.class))).thenReturn("someHtml");
  88. when(fieldRenderWithTab.getId()).thenReturn("someId");
  89. when(fieldRenderWithTab.getNameKey()).thenReturn("someNameKey");
  90. final FieldTab fieldTab = mock(FieldTab.class);
  91. when(fieldRenderWithTab.getFieldTab()).thenReturn(fieldTab);
  92. final CollectionParams collectionParams = mock(CollectionParams.class);
  93. when(fieldValuesHolder.get(Mockito.eq("someId"))).thenReturn(collectionParams);
  94. when(collectionParams.getAllValues()).thenReturn(Collections.emptyList());
  95. final OrderableField field = mock(OrderableField.class);
  96. when(fieldRenderWithTab.getOrderableField()).thenReturn(field);
  97. final FieldHtmlFactoryImpl fieldHtmlFactory = createFieldHtmlFactoryImplForEditTest(Lists.newArrayList(fieldRenderWithTab));
  98. final List<FieldHtmlBean> editFields = fieldHtmlFactory.getInlineEditFields(null, operationContext, null, null, false);
  99. assertEquals(1, editFields.size());
  100. final FieldHtmlBean fieldHtmlBean = editFields.get(0);
  101. assertEquals("someId", fieldHtmlBean.getId());
  102. assertEquals("someHtml", fieldHtmlBean.getEditHtml());
  103. assertEquals("someNameKey", fieldHtmlBean.getLabel());
  104. assertEquals(fieldTab, fieldHtmlBean.getTab());
  105. }
  106. @Test
  107. public void testGetInlineEditFieldsNonEmptyCustomFieldWithEmptyHtml() {
  108. final FieldRenderItemWithTab fieldRenderWithTab = mock(FieldRenderItemWithTab.class);
  109. when(fieldRenderWithTab.getEditHtml(any(Action.class), any(OperationContext.class), any(Issue.class), any(Map.class))).thenReturn("\n");
  110. when(fieldRenderWithTab.getId()).thenReturn("someId");
  111. when(fieldRenderWithTab.getNameKey()).thenReturn("someNameKey");
  112. final FieldTab fieldTab = mock(FieldTab.class);
  113. when(fieldRenderWithTab.getFieldTab()).thenReturn(fieldTab);
  114. final CustomFieldParams customFieldParams = mock(CustomFieldParams.class);
  115. when(fieldValuesHolder.get(Mockito.eq("someId"))).thenReturn(customFieldParams);
  116. when(customFieldParams.getAllValues()).thenReturn(Collections.singletonList("someValue"));
  117. final CustomField field = mock(CustomField.class);
  118. when(field.getValue(null)).thenReturn("value");
  119. when(fieldRenderWithTab.getOrderableField()).thenReturn(field);
  120. final FieldHtmlFactoryImpl fieldHtmlFactory = createFieldHtmlFactoryImplForEditTest(Lists.newArrayList(fieldRenderWithTab));
  121. final List<FieldHtmlBean> editFields = fieldHtmlFactory.getInlineEditFields(null, operationContext, null, null, false);
  122. assertEquals(0, editFields.size());
  123. }
  124. @Test
  125. public void testGetInlineEditFieldsEmptyCustomField() {
  126. final FieldRenderItemWithTab fieldRenderWithTab = mock(FieldRenderItemWithTab.class);
  127. when(fieldRenderWithTab.getEditHtml(any(Action.class), any(OperationContext.class), any(Issue.class), any(Map.class))).thenReturn("someHtml");
  128. when(fieldRenderWithTab.getId()).thenReturn("someId");
  129. when(fieldRenderWithTab.getNameKey()).thenReturn("someNameKey");
  130. final FieldTab fieldTab = mock(FieldTab.class);
  131. when(fieldRenderWithTab.getFieldTab()).thenReturn(fieldTab);
  132. final CustomFieldParams customFieldParams = mock(CustomFieldParams.class);
  133. when(fieldValuesHolder.get(Mockito.eq("someId"))).thenReturn(customFieldParams);
  134. when(customFieldParams.getAllValues()).thenReturn(Collections.emptyList());
  135. final CustomField field = mock(CustomField.class);
  136. when(field.getValue(null)).thenReturn(null);
  137. when(fieldRenderWithTab.getOrderableField()).thenReturn(field);
  138. final FieldHtmlFactoryImpl fieldHtmlFactory = createFieldHtmlFactoryImplForEditTest(Lists.newArrayList(fieldRenderWithTab));
  139. final List<FieldHtmlBean> editFields = fieldHtmlFactory.getInlineEditFields(null, operationContext, null, null, false);
  140. assertEquals(0, editFields.size());
  141. }
  142. @Test
  143. public void testGetInlineEditFieldsCustomFieldWithEmptyResult() {
  144. final FieldRenderItemWithTab fieldRenderWithTab = mock(FieldRenderItemWithTab.class);
  145. when(fieldRenderWithTab.getEditHtml(any(Action.class), any(OperationContext.class), any(Issue.class), any(Map.class))).thenReturn("someHtml");
  146. when(fieldRenderWithTab.getId()).thenReturn("someId");
  147. when(fieldRenderWithTab.getNameKey()).thenReturn("someNameKey");
  148. final FieldTab fieldTab = mock(FieldTab.class);
  149. when(fieldRenderWithTab.getFieldTab()).thenReturn(fieldTab);
  150. final CustomFieldParams customFieldParams = mock(CustomFieldParams.class);
  151. when(fieldValuesHolder.get(Mockito.eq("someId"))).thenReturn(customFieldParams);
  152. when(customFieldParams.getAllValues()).thenReturn(Collections.emptyList());
  153. final CustomField field = mock(CustomField.class);
  154. when(field.getValue(null)).thenReturn(Collections.emptyList());
  155. when(fieldRenderWithTab.getOrderableField()).thenReturn(field);
  156. final FieldHtmlFactoryImpl fieldHtmlFactory = createFieldHtmlFactoryImplForEditTest(Lists.newArrayList(fieldRenderWithTab));
  157. final List<FieldHtmlBean> editFields = fieldHtmlFactory.getInlineEditFields(null, operationContext, null, null, false);
  158. assertEquals(1, editFields.size());
  159. }
  160. private FieldHtmlFactoryImpl createFieldHtmlFactoryImplForEditTest(final List<FieldRenderItemWithTab> fieldRendersWithTabs) {
  161. return new FieldHtmlFactoryImpl(beanFactory, fieldManager, fieldScreenRendererFactory, permissionManager) {
  162. @Override
  163. List<FieldRenderItemWithTab> getPopulatedRenderableItems(final Issue issue, final Boolean retainValues, final Map<String, Object> fieldValuesHolder, final ScreenableIssueOperation operation) {
  164. return fieldRendersWithTabs;
  165. }
  166. };
  167. }
  168. }