Skip to content

Commit

Permalink
Merge pull request #3 from sandammeer/feature/issue-components
Browse files Browse the repository at this point in the history
Add parsing of components
  • Loading branch information
cpageler93 authored Mar 6, 2019
2 parents 9830489 + e0ff26e commit 4a69d52
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 14 deletions.
28 changes: 28 additions & 0 deletions Sources/JiraSwift/JiraIssue.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,39 @@ extension Jira.Issue {

public let summary: String?
public let project: Jira.Project
public let components: [Jira.Issue.Component]

public required init?(json: JSON) {
guard let project = Jira.Project(json: json["project"]) else { return nil }
self.summary = json["summary"].string
self.project = project
self.components = json["components"].array?.compactMap { Component(json: $0) } ?? []
}

}

}


extension Jira.Issue {

public class Component: Quack.Model {

public let id: String
public let name: String
public let selfURL: String

public required init?(json: JSON) {
guard let idString = json.dictionary?["id"]?.string,
let nameString = json.dictionary?["name"]?.string,
let selfURL = json.dictionary?["self"]?.string
else {
return nil
}

self.id = idString
self.name = nameString
self.selfURL = selfURL
}

}
Expand Down
44 changes: 30 additions & 14 deletions Tests/JiraSwiftTests/JiraSwiftSearchTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
// Created by Christoph Pageler on 11.04.18.
//


import XCTest
@testable import JiraSwift


class JiraSwiftSearchTests: XCTestCase {
class JiraSwiftSearchTests: JiraSwiftTest {

static var allTests = [
("testSearchShouldReturnSomeIssues", testSearchShouldReturnSomeIssues),
Expand All @@ -19,10 +19,9 @@ class JiraSwiftSearchTests: XCTestCase {

func testSearchShouldReturnSomeIssues() {
let e = expectation(description: "searchExpecation")
let jiraClient = Jira.Client(url: URL(string: "your_jira_url")!,
username: "your_username",
password: "your_password")
jiraClient.search(jql: "key in (EWE027-65, EWE038-3, EWE027-58)") { result in
let (url, username, password) = jiraCredentialsFromEnvironment()
let jiraClient = Jira.Client(url: url, username: username, password: password)
jiraClient.search(jql: "key in (EWE27-65, EWE038-3, EWE027-58)") { result in
switch result {
case .success(let result):
XCTAssertEqual(result.issues.count, 3)
Expand All @@ -35,10 +34,29 @@ class JiraSwiftSearchTests: XCTestCase {
waitForExpectations(timeout: 15, handler: nil)
}

func testSearchShouldReturnIssuesWithComponents() {
let e = expectation(description: "searchWithComponentsExpecation")
let (url, username, password) = jiraCredentialsFromEnvironment()
let jiraClient = Jira.Client(url: url, username: username, password: password)
jiraClient.search(jql: "key in (SPEED-28, BA-10)") { result in
switch result {
case .success(let result):
XCTAssertEqual(result.issues.count, 2)
XCTAssertFalse(result.issues[0].fields.components.isEmpty)
XCTAssertFalse(result.issues[1].fields.components.isEmpty)
case .failure:
XCTFail()
}
e.fulfill()
}

waitForExpectations(timeout: 15, handler: nil)
}

func testClientSearchWithOAuthTokenShouldReturnSomeIssues() {
let e = expectation(description: "searchExpecationWithOAuth")
let jiraClient = Jira.Client(url: URL(string: "your_jira_url")!,
oAuthAccessToken: "oauth_token")
let (url, token) = jiraOAuthTokenFromCredentials()
let jiraClient = Jira.Client(url: url, oAuthAccessToken: token)

jiraClient.search(jql: "key in (EWE027-65, EWE038-3, EWE027-58)") { result in
switch result {
Expand All @@ -55,9 +73,8 @@ class JiraSwiftSearchTests: XCTestCase {

func testGetServerInfoShouldReturnServerInfo() {
let e = expectation(description: "serverInfoExpectation")
let jiraClient = Jira.Client(url: URL(string: "your_jira_url")!,
username: "your_username",
password: "your_password")
let (url, username, password) = jiraCredentialsFromEnvironment()
let jiraClient = Jira.Client(url: url, username: username, password: password)
jiraClient.getServerInfo { result in
switch result {
case .success(let result):
Expand All @@ -74,9 +91,8 @@ class JiraSwiftSearchTests: XCTestCase {

func testMyself() {
let e = expectation(description: "myselfExpectation")
let jiraClient = Jira.Client(url: URL(string: "your_jira_url")!,
username: "your_username",
password: "your_password")
let (url, username, password) = jiraCredentialsFromEnvironment()
let jiraClient = Jira.Client(url: url, username: username, password: password)
jiraClient.getMyself() { result in
switch result {
case .success(let result):
Expand Down
37 changes: 37 additions & 0 deletions Tests/JiraSwiftTests/JiraSwiftTest.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
//
// JiraSwiftTest.swift
// JiraSwiftTests
//
// Created by Sandro Wehrhahn on 05.03.19.
//


import XCTest


class JiraSwiftTest: XCTestCase {

func jiraCredentialsFromEnvironment() -> (URL, String, String) {
guard let jiraUsername = ProcessInfo.processInfo.environment["jiraUsername"],
let jiraPassword = ProcessInfo.processInfo.environment["jiraPassword"],
let urlString = ProcessInfo.processInfo.environment["jiraURL"],
let jiraURL = URL(string: urlString)
else {
fatalError()
}

return (jiraURL, jiraUsername, jiraPassword)
}

func jiraOAuthTokenFromCredentials() -> (URL, String) {
guard let urlString = ProcessInfo.processInfo.environment["jiraURL"],
let jiraURL = URL(string: urlString),
let oAuthToken = ProcessInfo.processInfo.environment["jiraOAuthToken"]
else {
fatalError()
}

return (jiraURL, oAuthToken)
}

}

0 comments on commit 4a69d52

Please sign in to comment.