PageRenderTime 25ms 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/plugin/jql/function/TestEarliestUnreleasedVersionFunction.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 157 lines | 132 code | 22 blank | 3 comment | 0 complexity | f078e1a66095a29fa31922a27bd915a9 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.plugin.jql.function;
  2. import com.atlassian.jira.JiraDataTypes;
  3. import com.atlassian.jira.jql.operand.QueryLiteral;
  4. import com.atlassian.jira.jql.query.QueryCreationContext;
  5. import com.atlassian.jira.jql.query.QueryCreationContextImpl;
  6. import com.atlassian.jira.jql.resolver.ProjectResolver;
  7. import com.atlassian.jira.mock.plugin.jql.operand.MockJqlFunctionModuleDescriptor;
  8. import com.atlassian.jira.mock.project.MockVersion;
  9. import com.atlassian.jira.project.MockProject;
  10. import com.atlassian.jira.project.Project;
  11. import com.atlassian.jira.project.version.Version;
  12. import com.atlassian.jira.project.version.VersionManager;
  13. import com.atlassian.jira.security.PermissionManager;
  14. import com.atlassian.jira.user.ApplicationUser;
  15. import com.atlassian.jira.user.MockApplicationUser;
  16. import com.atlassian.jira.util.I18nHelper;
  17. import com.atlassian.jira.util.MessageSet;
  18. import com.atlassian.jira.web.bean.MockI18nBean;
  19. import com.atlassian.query.clause.TerminalClause;
  20. import com.atlassian.query.operand.FunctionOperand;
  21. import org.junit.Before;
  22. import org.junit.Rule;
  23. import org.junit.Test;
  24. import org.mockito.Mock;
  25. import org.mockito.junit.MockitoJUnit;
  26. import org.mockito.junit.MockitoRule;
  27. import java.util.ArrayList;
  28. import java.util.Arrays;
  29. import java.util.Collections;
  30. import java.util.List;
  31. import static com.atlassian.jira.permission.ProjectPermissions.BROWSE_PROJECTS;
  32. import static org.junit.Assert.assertEquals;
  33. import static org.junit.Assert.assertFalse;
  34. import static org.junit.Assert.assertNotNull;
  35. import static org.junit.Assert.assertTrue;
  36. import static org.mockito.Mockito.verify;
  37. import static org.mockito.Mockito.when;
  38. /**
  39. * @since v4.3
  40. */
  41. public class TestEarliestUnreleasedVersionFunction {
  42. @Rule
  43. public MockitoRule mockito = MockitoJUnit.rule();
  44. @Mock
  45. private PermissionManager permissionManager;
  46. @Mock
  47. private ProjectResolver projectResolver;
  48. @Mock
  49. private VersionManager versionManager;
  50. private ApplicationUser theUser;
  51. private QueryCreationContext queryCreationContext;
  52. private TerminalClause terminalClause = null;
  53. private List<Version> unreleasedVersionList = new ArrayList<Version>();
  54. private Project project1;
  55. @Before
  56. public void setUp() throws Exception {
  57. theUser = new MockApplicationUser("fred");
  58. queryCreationContext = new QueryCreationContextImpl(theUser);
  59. project1 = new MockProject(21l, "c1");
  60. unreleasedVersionList.add(new MockVersion(3, "V5", project1, 5l));
  61. unreleasedVersionList.add(new MockVersion(4, "V3", project1, 3l)); // Earliest
  62. unreleasedVersionList.add(new MockVersion(5, "V4", project1, 4l));
  63. }
  64. @Test
  65. public void testValidateProjectArgument() throws Exception {
  66. EarliestUnreleasedVersionFunction earliestunreleasedversionFunction = new EarliestUnreleasedVersionFunction(versionManager, projectResolver, permissionManager) {
  67. @Override
  68. protected I18nHelper getI18n() {
  69. return new MockI18nBean();
  70. }
  71. };
  72. earliestunreleasedversionFunction.init(MockJqlFunctionModuleDescriptor.create("earliestUnreleasedVersion", true));
  73. FunctionOperand function = new FunctionOperand(EarliestUnreleasedVersionFunction.FUNCTION_EARLIEST_UNRELEASED_VERSION, Arrays.asList("c1"));
  74. when(projectResolver.getIdsFromName("c1")).thenReturn(Arrays.asList("21"));
  75. when(projectResolver.get(21l)).thenReturn(project1);
  76. when(permissionManager.hasPermission(BROWSE_PROJECTS, project1, null)).thenReturn(true);
  77. final MessageSet messageSet = earliestunreleasedversionFunction.validate(null, function, terminalClause);
  78. assertTrue(!messageSet.hasAnyMessages());
  79. }
  80. @Test
  81. public void testValidateBadProjectArgument() throws Exception {
  82. EarliestUnreleasedVersionFunction earliestunreleasedversionFunction = new EarliestUnreleasedVersionFunction(versionManager, projectResolver, permissionManager) {
  83. @Override
  84. protected I18nHelper getI18n() {
  85. return new MockI18nBean();
  86. }
  87. };
  88. earliestunreleasedversionFunction.init(MockJqlFunctionModuleDescriptor.create("earliestUnreleasedVersion", true));
  89. FunctionOperand function = new FunctionOperand(EarliestUnreleasedVersionFunction.FUNCTION_EARLIEST_UNRELEASED_VERSION, Arrays.asList("badproject"));
  90. when(projectResolver.getIdsFromName("badproject")).thenReturn(Collections.<String>emptyList());
  91. final MessageSet messageSet = earliestunreleasedversionFunction.validate(null, function, terminalClause);
  92. assertTrue(messageSet.hasAnyMessages());
  93. assertTrue(messageSet.hasAnyErrors());
  94. assertFalse(messageSet.hasAnyWarnings());
  95. assertEquals(1, messageSet.getErrorMessages().size());
  96. assertEquals("Could not resolve the project 'badproject' provided to function 'earliestUnreleasedVersion'.", messageSet.getErrorMessages().iterator().next());
  97. }
  98. @Test
  99. public void testDataType() throws Exception {
  100. EarliestUnreleasedVersionFunction earliestunreleasedversionFunction = new EarliestUnreleasedVersionFunction(versionManager, projectResolver, permissionManager);
  101. assertEquals(JiraDataTypes.VERSION, earliestunreleasedversionFunction.getDataType());
  102. }
  103. @Test
  104. public void testGetValues() throws Exception {
  105. EarliestUnreleasedVersionFunction earliestunreleasedversionFunction = new EarliestUnreleasedVersionFunction(versionManager, projectResolver, permissionManager);
  106. FunctionOperand function = new FunctionOperand(EarliestUnreleasedVersionFunction.FUNCTION_EARLIEST_UNRELEASED_VERSION, Arrays.asList("c1"));
  107. when(projectResolver.getIdsFromName("c1")).thenReturn(Arrays.asList("21"));
  108. when(projectResolver.get(21l)).thenReturn(project1);
  109. when(permissionManager.hasPermission(BROWSE_PROJECTS, project1, theUser)).thenReturn(true);
  110. when(versionManager.getVersionsUnreleased(21L, false)).thenReturn(unreleasedVersionList);
  111. final List<QueryLiteral> value = earliestunreleasedversionFunction.getValues(queryCreationContext, function, terminalClause);
  112. verify(versionManager).getVersionsUnreleased(21L, false);
  113. assertNotNull(value);
  114. assertEquals(1, value.size());
  115. assertEquals(4, value.get(0).getLongValue().longValue());
  116. }
  117. @Test
  118. public void testGetValuesNoVersions() throws Exception {
  119. EarliestUnreleasedVersionFunction earliestunreleasedversionFunction = new EarliestUnreleasedVersionFunction(versionManager, projectResolver, permissionManager);
  120. FunctionOperand function = new FunctionOperand(EarliestUnreleasedVersionFunction.FUNCTION_EARLIEST_UNRELEASED_VERSION, Arrays.asList("c1"));
  121. when(projectResolver.getIdsFromName("c1")).thenReturn(Arrays.asList("21"));
  122. when(projectResolver.get(21l)).thenReturn(project1);
  123. when(permissionManager.hasPermission(BROWSE_PROJECTS, project1, theUser)).thenReturn(true);
  124. when(versionManager.getVersionsUnreleased(21L, false)).thenReturn(Collections.<Version>emptyList());
  125. final List<QueryLiteral> value = earliestunreleasedversionFunction.getValues(queryCreationContext, function, terminalClause);
  126. verify(versionManager).getVersionsUnreleased(21L, false);
  127. assertNotNull(value);
  128. assertEquals(0, value.size());
  129. }
  130. @Test
  131. public void testGetMinimumNumberOfExpectedArguments() throws Exception {
  132. EarliestUnreleasedVersionFunction earliestunreleasedversionFunction = new EarliestUnreleasedVersionFunction(versionManager, projectResolver, permissionManager);
  133. assertEquals(0, earliestunreleasedversionFunction.getMinimumNumberOfExpectedArguments());
  134. }
  135. }