Skip to content

Commit

Permalink
JENKINS-44524 Add tests for new class and JiraSite.get
Browse files Browse the repository at this point in the history
  • Loading branch information
bluesliverx committed Jul 10, 2017
1 parent b1408fe commit 0869169
Show file tree
Hide file tree
Showing 2 changed files with 152 additions and 0 deletions.
43 changes: 43 additions & 0 deletions src/test/groovy/hudson/plugins/jira/JiraFolderPropertyTest.groovy
@@ -0,0 +1,43 @@
package hudson.plugins.jira

import net.sf.json.JSONObject
import org.kohsuke.stapler.Stapler
import org.kohsuke.stapler.StaplerRequest
import spock.lang.Specification
import spock.lang.Unroll

/**
* @author saville
*/
@Unroll
class JiraFolderPropertyTest extends Specification {
def "reconfigure"() {
given:
JiraFolderProperty subject = new JiraFolderProperty()
JiraSite site = Mock()
StaplerRequest req = Mock()
JSONObject formData = new JSONObject()
JSONObject sites = new JSONObject()
formData.put("sites", sites)

expect:
subject.sites.length==0

when:
def result = subject.reconfigure(req, null)

then:
0 * _._
result==null

when:
subject.reconfigure(req, formData)

then:
1 * req.bindJSONToList(JiraSite, sites) >> [site]
0 * _._
Stapler.CONVERT_UTILS.converters[URL.class] instanceof EmptyFriendlyURLConverter
subject.sites.length==1
subject.sites[0]==site
}
}
109 changes: 109 additions & 0 deletions src/test/groovy/hudson/plugins/jira/JiraSiteTest.groovy
@@ -0,0 +1,109 @@
package hudson.plugins.jira

import com.cloudbees.hudson.plugins.folder.AbstractFolder
import com.cloudbees.hudson.plugins.folder.AbstractFolderProperty
import hudson.model.ItemGroup
import hudson.model.Job
import hudson.util.DescribableList
import jenkins.model.Jenkins
import org.junit.runner.RunWith
import org.powermock.core.PowerMockUtils
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
import spock.lang.Specification
import spock.lang.Unroll

/**
* @author saville
*/
@Unroll
class JiraSiteTest extends Specification {
def "get"() {
given:
Jenkins jenkins = Mock()
Jenkins.theInstance = jenkins
Job<?, ?> job = Mock()
JiraProjectProperty jpp = Spy(JiraProjectProperty)
JiraFolderProperty jfp = Mock()
ItemGroup nonFolderParent = Mock()
AbstractFolder folder1 = Mock()
AbstractFolder folder2 = Mock()
AbstractFolder folder3 = Mock()
DescribableList<AbstractFolderProperty> folder1Properties = Mock()
DescribableList<AbstractFolderProperty> folder2Properties = Mock()
DescribableList<AbstractFolderProperty> folder3Properties = Mock()
JiraSite site1 = Mock()
JiraSite site2 = Mock()

when: "site is configured on project property"
def result = JiraSite.get(job)

then:
1 * job.getProperty(JiraProjectProperty) >> jpp
1 * jpp.getSite() >> site1
0 * _._
result==site1

when: "project property site and parent are both null"
result = JiraSite.get(job)

then:
1 * job.getProperty(JiraProjectProperty) >> jpp
1 * jpp.getSite() >> null
1 * job.getParent() >> null
0 * _._
result==null

when: "no project property, parent is not a folder and is not an item"
result = JiraSite.get(job)

then:
1 * job.getProperty(JiraProjectProperty) >> null
1 * job.getParent() >> nonFolderParent
0 * _._
result==null

when: "no project property, go up folders with no property"
result = JiraSite.get(job)

then:
1 * job.getProperty(JiraProjectProperty.class) >> null
1 * job.getParent() >> folder1
1 * folder1.getProperties() >> folder1Properties
1 * folder1Properties.get(JiraFolderProperty) >> null
1 * folder1.getParent() >> folder2
1 * folder2.getProperties() >> folder2Properties
1 * folder2Properties.get(JiraFolderProperty) >> null
1 * folder2.getParent() >> nonFolderParent
0 * _._
result==null

when: "no project property, find folder property with null, 0 length, and valid sites"
result = JiraSite.get(job)

then:
1 * job.getProperty(JiraProjectProperty.class) >> null
1 * job.getParent() >> folder1
1 * folder1.getProperties() >> folder1Properties
1 * folder1Properties.get(JiraFolderProperty) >> jfp
1 * folder1.getParent() >> folder2
1 * folder2.getProperties() >> folder2Properties
1 * folder2Properties.get(JiraFolderProperty) >> jfp
1 * folder2.getParent() >> folder3
1 * folder3.getProperties() >> folder3Properties
1 * folder3Properties.get(JiraFolderProperty) >> jfp
3 * jfp.getSites() >>> [null, [] as JiraSite[], [site2, site1] as JiraSite[]]
0 * _._
result==site2

when: "site is configured globally"
JiraProjectProperty.DESCRIPTOR.setSites(site2)
result = JiraSite.get(job)

then:
1 * job.getProperty(JiraProjectProperty.class) >> null
1 * job.getParent() >> nonFolderParent
0 * _._
result==site2
}
}

0 comments on commit 0869169

Please sign in to comment.