/src/main/resources/com/onresolve/jira/groovy/test/TestCopyCustomField.groovy
https://bitbucket.org/sorin/jira-plugin-intellij · Groovy · 195 lines · 146 code · 31 blank · 18 comment · 7 complexity · 28af58a99819859b59fa259881cd18cb MD5 · raw file
- package com.onresolve.jira.groovy.test
-
- import org.apache.log4j.Category
- import org.junit.After
- import org.junit.Before
- import org.junit.Test
- import static junit.framework.Assert.assertNotNull
- import com.onresolve.jira.groovy.canned.admin.CopyCustomField
- import com.atlassian.jira.issue.fields.CustomField
- import static junit.framework.Assert.assertEquals
- import com.atlassian.jira.issue.search.SearchRequest
- import com.atlassian.jira.bc.filter.SearchRequestService
- import com.atlassian.jira.bc.JiraServiceContextImpl
- import com.atlassian.jira.bc.JiraServiceContext
- import com.atlassian.jira.security.JiraAuthenticationContext
- import com.atlassian.jira.issue.ModifiedValue
- import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
- import static junit.framework.Assert.assertNull
- import com.atlassian.jira.util.BuildUtils
- import com.atlassian.jira.ComponentManager
- import com.atlassian.jira.issue.customfields.manager.OptionsManager
- import com.atlassian.jira.issue.customfields.option.Option
- import com.atlassian.jira.jql.builder.JqlQueryBuilder
-
- /**
- * User: jechlin2
- * Date: 13-Dec-2010
- * Time: 17:36:00
- */
- class TestCopyCustomField extends BaseSubTaskTest {
-
- Category log = Category.getInstance(this.class)
- CustomField sourceField
- CustomField targetField
- static TEST_FILTER_ID
- JiraAuthenticationContext authenticationContext
- JiraServiceContext ctx
- def SearchRequest filter
- static String FILTER_NAME = "JRA project issues"
-
- TestCopyCustomField() {
- // def gcl = this.class.classLoader.parent
- // gcl.clearCache()
-
- authenticationContext = componentManager.getJiraAuthenticationContext()
- ctx = new JiraServiceContextImpl(authenticationContext.getUser());
- }
-
- @Before
- public void setUp() {
- log.debug ("setUp")
-
- tearDown()
-
- log.debug ("issueType: ${issueType.getName()}")
- assertNotNull(project)
-
- issue = componentManager.getIssueFactory().getIssue()
- issue.setProject(project.getGenericValue())
-
- issue.setSummary "my summary"
- issue.setReporterId "admin"
- issue.setIssueType issueType.getGenericValue()
- issue.setPriorityId('2')
-
- sourceField = customFieldManager.getCustomFieldObjectByName("TextFieldA")
- assertNotNull(sourceField)
- targetField = customFieldManager.getCustomFieldObjectByName("TextFieldB")
- assertNotNull(targetField)
- assertNotNull(customFieldManager.getCustomFieldObjectByName("FreeTextA"))
- assertNotNull(customFieldManager.getCustomFieldObjectByName("SelectListA"))
- assertNotNull(customFieldManager.getCustomFieldObjectByName("MultiSelectA"))
-
-
- def query = JqlQueryBuilder.newBuilder().where().project(project.id).buildQuery()
-
- def sr = new SearchRequest(query)
- sr.setName(FILTER_NAME)
- def serviceUser = ctx.user ?: ctx.loggedInUser
- sr.setOwnerUserName(serviceUser.getName())
- filter = searchRequestService.createFilter(ctx, sr, true)
-
- assertNotNull(filter)
- TEST_FILTER_ID = filter.id
-
- CustomField selectListCF = customFieldManager.getCustomFieldObjectByName("SelectListA")
-
- // jira 4.4+ - we need to provide an option here
- if ((BuildUtils.getCurrentBuildNumber() as Long) >= 649) {
- OptionsManager optionsManager = ComponentManager.getComponentInstanceOfType(OptionsManager.class)
- Option option = optionsManager.getOptions(selectListCF.getRelevantConfig(issue)).getOptionForValue("CCC", null)
- issue.setCustomFieldValue(selectListCF, option)
- }
- else {
- issue.setCustomFieldValue(selectListCF, "CCC")
-
- }
-
-
-
- issue.setCustomFieldValue(sourceField, "AAA")
- issueManager.createIssue(adminUser, issue);
- indexManager.reIndex(issue)
- log.debug ("Created issue: $issue")
-
- // issue = issueManager.getIssueObject("JRA-300")
- }
-
-
- // @After
- public void tearDown() {
- deleteAllIssues();
- searchRequestService.getOwnedFilters(componentManager.getJiraAuthenticationContext().user).each {
- if (it.name == FILTER_NAME) {
- deleteFilter(ctx, it)
- }
- }
- }
-
- @Test
- public void testCopyTextFields() {
- Map inputs
- Map params
-
- // short text to short text
- inputs = [
- (CopyCustomField.FIELD_FILTER_ID): TEST_FILTER_ID,
- (CopyCustomField.FIELD_SOURCE_FIELD_ID): sourceField.getId(),
- (CopyCustomField.FIELD_TARGET_FIELD_ID): this.targetField.getId(),
- ]
-
- params = new CopyCustomField().doScript(inputs)
- log.debug (params)
- assertEquals(sourceField.getValue(issue), this.targetField.getValue(issue))
-
- // short text to long text
- targetField = customFieldManager.getCustomFieldObjectByName("FreeTextA")
- inputs = [
- (CopyCustomField.FIELD_FILTER_ID): TEST_FILTER_ID,
- (CopyCustomField.FIELD_SOURCE_FIELD_ID): sourceField.getId(),
- (CopyCustomField.FIELD_TARGET_FIELD_ID): targetField.getId(),
- ]
- params = new CopyCustomField().doScript(inputs)
- log.debug (params)
- assertEquals(sourceField.getValue(issue), targetField.getValue(issue))
-
- // previous to 4.4 it would set a select list value even if the option did not exist, which isn't right but not changing that now
- if ((BuildUtils.getCurrentBuildNumber() as Long) >= 649) {
- // short text to select list - test when there is no valid target option - just log it and set to null
- sourceField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(sourceField), "XXYYZZ"), new DefaultIssueChangeHolder())
- targetField = customFieldManager.getCustomFieldObjectByName("SelectListA")
- inputs = [
- (CopyCustomField.FIELD_FILTER_ID): TEST_FILTER_ID,
- (CopyCustomField.FIELD_SOURCE_FIELD_ID): sourceField.getId(),
- (CopyCustomField.FIELD_TARGET_FIELD_ID): targetField.getId(),
- ]
- params = new CopyCustomField().doScript(inputs)
- assertNull(targetField.getValue(issue))
- }
-
- // short text to select list
- sourceField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(sourceField), "AAA"), new DefaultIssueChangeHolder())
- targetField = customFieldManager.getCustomFieldObjectByName("SelectListA")
- inputs = [
- (CopyCustomField.FIELD_FILTER_ID): TEST_FILTER_ID,
- (CopyCustomField.FIELD_SOURCE_FIELD_ID): sourceField.getId(),
- (CopyCustomField.FIELD_TARGET_FIELD_ID): targetField.getId(),
- ]
- params = new CopyCustomField().doScript(inputs)
- log.debug (params)
- assertEquals(sourceField.getValue(issue), targetField.getValue(issue).toString())
- }
-
- // doesn't work on 5.0-beta1 for some reason
- @Test
- public void testSingleSelectToMultiSelect() {
- // single select to multi select
- sourceField = customFieldManager.getCustomFieldObjectByName("SelectListA")
- targetField = customFieldManager.getCustomFieldObjectByName("MultiSelectA")
- Map inputs = [
- (CopyCustomField.FIELD_FILTER_ID): TEST_FILTER_ID,
- (CopyCustomField.FIELD_SOURCE_FIELD_ID): sourceField.getId(),
- (CopyCustomField.FIELD_TARGET_FIELD_ID): targetField.getId(),
- ]
- Map params = new CopyCustomField().doScript(inputs)
- log.debug (params)
- if ((BuildUtils.getCurrentBuildNumber() as Long) >= 649) {
- // 4.4 - compare LazyLoadedOptions by value
- assertEquals([sourceField.getValue(issue).value], targetField.getValue(issue)*.value)
- }
- else {
- assertEquals([sourceField.getValue(issue)], targetField.getValue(issue))
- }
- }
- }