Skip to content

Commit 3111517

Browse files
author
Konstantin Semenov
committed
test: Add JSON conversion sanity check
1 parent 7942a10 commit 3111517

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

Radar.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
2F0F463C2AB8C54700DCFF05 /* RemoteDataConversionSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F0F463B2AB8C54700DCFF05 /* RemoteDataConversionSpec.swift */; };
1011
2F3A24AB2968FDCE00DB071B /* FetchTokenView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F3A24AA2968FDCE00DB071B /* FetchTokenView.swift */; };
1112
2F3A24AD2969002200DB071B /* PipelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F3A24AC2969002200DB071B /* PipelineView.swift */; };
1213
2F3A24AF296901BB00DB071B /* DashboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F3A24AE296901BB00DB071B /* DashboardView.swift */; };
@@ -57,6 +58,7 @@
5758
/* End PBXContainerItemProxy section */
5859

5960
/* Begin PBXFileReference section */
61+
2F0F463B2AB8C54700DCFF05 /* RemoteDataConversionSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteDataConversionSpec.swift; sourceTree = "<group>"; };
6062
2F3A24AA2968FDCE00DB071B /* FetchTokenView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchTokenView.swift; sourceTree = "<group>"; };
6163
2F3A24AC2969002200DB071B /* PipelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineView.swift; sourceTree = "<group>"; };
6264
2F3A24AE296901BB00DB071B /* DashboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardView.swift; sourceTree = "<group>"; };
@@ -188,6 +190,7 @@
188190
E1136DF4E174B54A906A2672 /* PipelineSpec.swift */,
189191
E1136E630A4C0ED4C7164841 /* TeamSpec.swift */,
190192
E1136708BD2783BF94465981 /* Fixtures.swift */,
193+
2F0F463B2AB8C54700DCFF05 /* RemoteDataConversionSpec.swift */,
191194
);
192195
path = RadarTests;
193196
sourceTree = "<group>";
@@ -374,6 +377,7 @@
374377
isa = PBXSourcesBuildPhase;
375378
buildActionMask = 2147483647;
376379
files = (
380+
2F0F463C2AB8C54700DCFF05 /* RemoteDataConversionSpec.swift in Sources */,
377381
2F872B1F2971DAB500B4144D /* AppDataConverterSpec.swift in Sources */,
378382
2F872B212971EF1900B4144D /* JobSpec.swift in Sources */,
379383
E1136B212ED16E7A7BA5F134 /* PipelineSpec.swift in Sources */,

Radar/ConcourseJob.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ struct JobInput: Codable {
3333

3434
struct ConcourseJob: Codable, Identifiable {
3535
enum CodingKeys: String, CodingKey {
36-
case id, name, teamName, inputs
36+
case id, name, inputs
37+
case teamName = "team_name"
3738
case pipelineId = "pipeline_id"
3839
case pipelineName = "pipeline_name"
3940
case finishedBuild = "finished_build"
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
import Quick
4+
import Nimble
5+
import Foundation
6+
@testable import Radar
7+
8+
class RemoteDataConversionSpec: QuickSpec {
9+
let samplePipelines = "[{\"id\": 33937,\"name\": \"slack-delegate-bot\",\"paused\": false,\"public\": false,\"archived\": false,\"team_name\": \"dash-core\",\"last_updated\": 1694500551}]"
10+
let sampleJobs = "[{\"id\":87813,\"name\":\"build-and-push-image\",\"team_name\":\"davros\",\"pipeline_id\":3845,\"pipeline_name\":\"davros\",\"groups\":[\"secondary\",\"all\"],\"finished_build\":{\"id\":1420927292,\"name\":\"27.1\",\"status\":\"succeeded\",\"start_time\":1671440226,\"end_time\":1671440994,\"team_name\":\"davros\",\"pipeline_id\":3845,\"pipeline_name\":\"davros\",\"job_name\":\"build-and-push-image\"},\"transition_build\":{\"id\":1420927292,\"name\":\"27.1\",\"status\":\"succeeded\",\"start_time\":1671440226,\"end_time\":1671440994,\"team_name\":\"davros\",\"pipeline_id\":3845,\"pipeline_name\":\"davros\",\"job_name\":\"build-and-push-image\"},\"inputs\":[{\"name\":\"master-image-src\",\"resource\":\"master-image-src\"}],\"outputs\":[{\"name\":\"master-image\",\"resource\":\"master-image\"}]}]"
11+
let sampleTeams = "[{\"id\":2385,\"name\":\"cybergenics\",\"auth\":{\"member\":{\"groups\":[],\"users\":[\"this\",\"is\",\"the\",\"house\",\"that\",\"jack\",\"built\",\"malt\",\"lay\",\"rat\"]},\"owner\":{\"groups\":[],\"users\":[\"local:worker\",\"local:concourse\"]},\"pipeline-operator\":{\"groups\":[],\"users\":[\"pipeline-user\",\"operator-user\"]},\"viewer\":{\"groups\":[],\"users\":[\"viewer-user\"]}}}]"
12+
13+
override func spec() {
14+
it("converts pipelines from JSON") {
15+
expect { try JSONDecoder().decode([ConcoursePipeline].self, from: self.samplePipelines.data(using: .utf8)!) }.notTo(throwError())
16+
}
17+
18+
it("converts jobs from JSON") {
19+
expect { try JSONDecoder().decode([ConcourseJob].self, from: self.sampleJobs.data(using: .utf8)!) }.notTo(throwError())
20+
}
21+
22+
it("converts teams from JSON") {
23+
expect { try JSONDecoder().decode([ConcourseTeam].self, from: self.sampleTeams.data(using: .utf8)!) }.notTo(throwError())
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)