1
0
Fork 0
jira-client/src/test/groovy/net/rcarz/jiraclient/agile/EpicTest.groovy

110 lines
4.4 KiB
Groovy

package net.rcarz.jiraclient.agile
import net.rcarz.jiraclient.JiraException
import net.rcarz.jiraclient.RestClient
import net.rcarz.jiraclient.RestException
import net.sf.json.JSONObject
import net.sf.json.JSONSerializer
import org.hamcrest.core.IsEqual
import org.hamcrest.core.IsNot
import org.hamcrest.core.IsNull
import org.junit.Rule
import org.junit.Test
import org.junit.rules.ExpectedException
import static org.junit.Assert.assertThat
import static org.mockito.Mockito.when
/**
* Created on 2016-05-20.
* @author pldupont
*/
class EpicTest extends AbstractResourceTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
void "Given a valid Epic ID, when calling Epic.get(id), then receive one Epic."() {
RestClient mockRestClient = "given a REST Client"()
when(mockRestClient.get(AgileResource.RESOURCE_URI + "epic/" + JSONResources.EPIC_ID))
.thenReturn(JSONSerializer.toJSON(JSONResources.EPIC))
Epic epic = Epic.get(mockRestClient, JSONResources.EPIC_ID);
"Assert equals to Epic"(epic)
}
@Test
void "Given an invalid epic ID, when calling getEpic(666), then throws an 404 error."() {
RestException unauthorized = new RestException("Do not have access", 404, "Unauthorized")
RestClient mockRestClient = "given a REST Client"()
when(mockRestClient.get(AgileResource.RESOURCE_URI + "epic/666"))
.thenThrow(unauthorized)
expectedException.expect(JiraException.class);
expectedException.expectMessage("Failed to retrieve Epic : /rest/agile/1.0/epic/666");
Epic.get(mockRestClient, 666);
}
@Test
void "Given an epic without the issue cache, when calling asIssue(false), then call the REST Api."() {
RestClient mockRestClient = "given a REST Client"()
when(mockRestClient.get(AgileResource.RESOURCE_URI + "issue/" + JSONResources.EPIC_ID))
.thenReturn(JSONSerializer.toJSON(JSONResources.ISSUE))
Epic mockEpic = new Epic(mockRestClient, JSONSerializer.toJSON(JSONResources.EPIC) as JSONObject)
assertThat mockEpic.issue, new IsNull()
Issue issue = mockEpic.asIssue(false)
"Assert equals to Issue"(issue)
assertThat mockEpic.issue, new IsNot<>(new IsNull())
}
@Test
void "Given an epic with the issue cache, when calling asIssue(false), then use the cache version."() {
RestClient mockRestClient = "given a REST Client"()
Epic mockEpic = new Epic(mockRestClient, JSONSerializer.toJSON(JSONResources.EPIC) as JSONObject)
Issue mockIssue = new Issue(mockRestClient, JSONSerializer.toJSON(JSONResources.ISSUE) as JSONObject)
mockEpic.issue = mockIssue
assertThat mockEpic.issue, new IsNot<>(new IsNull())
Issue issue = mockEpic.asIssue(false)
"Assert equals to Issue"(issue)
assertThat mockEpic.issue, new IsNot<>(new IsNull())
assert mockEpic.issue == mockIssue
}
@Test
void "Given an epic with the issue cache, when calling asIssue(true), then call the REST Api."() {
RestClient mockRestClient = "given a REST Client"()
when(mockRestClient.get(AgileResource.RESOURCE_URI + "issue/" + JSONResources.EPIC_ID))
.thenReturn(JSONSerializer.toJSON(JSONResources.ISSUE))
Epic mockEpic = new Epic(mockRestClient, JSONSerializer.toJSON(JSONResources.EPIC) as JSONObject)
Issue mockIssue = new Issue(mockRestClient, JSONSerializer.toJSON(JSONResources.ISSUE) as JSONObject)
mockEpic.issue = mockIssue
assertThat mockEpic.issue, new IsNot<>(new IsNull())
Issue issue = mockEpic.asIssue(true)
"Assert equals to Issue"(issue)
assertThat mockEpic.issue, new IsNot<>(new IsNull())
assert mockEpic.issue != mockIssue
}
@Test
void "Given a valid Epic, when calling getIssues(), then receive a list of Issues."() {
RestClient mockRestClient = "given a REST Client"()
Epic mockEpic = new Epic(mockRestClient, JSONSerializer.toJSON(JSONResources.EPIC) as JSONObject)
when(mockRestClient.get(AgileResource.RESOURCE_URI + "epic/${JSONResources.EPIC_ID}/issue"))
.thenReturn(JSONSerializer.toJSON(JSONResources.LIST_OF_ISSUES))
List<Issue> issues = mockEpic.getIssues();
assertThat issues, new IsNot<>(new IsNull())
assertThat issues.size(), new IsEqual<Integer>(4)
"Assert equals to Issue"(issues.get(0))
}
}