Skip to content

Commit 183c039

Browse files
committed
Added test for retrieving repos for org.
1 parent 33746ee commit 183c039

File tree

4 files changed

+550
-65
lines changed

4 files changed

+550
-65
lines changed

CCMenu.xcodeproj/project.pbxproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
039B524629676D0700994910 /* Build.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039B524529676D0700994910 /* Build.swift */; };
5858
03A3EF932D3459D400407A6F /* GitHubUserResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 03A3EF922D3459D400407A6F /* GitHubUserResponse.json */; };
5959
03A3EF942D3459D400407A6F /* GitHubUserOrgResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 03A3EF912D3459D400407A6F /* GitHubUserOrgResponse.json */; };
60+
03A3EF982D34650300407A6F /* GitHubReposByOrgResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 03A3EF972D34650300407A6F /* GitHubReposByOrgResponse.json */; };
6061
03B021252A5D9F9D00B889BE /* MenuExtraModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03B021242A5D9F9D00B889BE /* MenuExtraModelTests.swift */; };
6162
03B1D75F2A6079CD007BCB8A /* MenuItemModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03B1D75E2A6079CD007BCB8A /* MenuItemModelTests.swift */; };
6263
03B1D7612A607DD0007BCB8A /* PipelineRowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03B1D7602A607DD0007BCB8A /* PipelineRowViewModel.swift */; };
@@ -182,6 +183,7 @@
182183
039B524529676D0700994910 /* Build.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Build.swift; sourceTree = "<group>"; };
183184
03A3EF912D3459D400407A6F /* GitHubUserOrgResponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = GitHubUserOrgResponse.json; sourceTree = "<group>"; };
184185
03A3EF922D3459D400407A6F /* GitHubUserResponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = GitHubUserResponse.json; sourceTree = "<group>"; };
186+
03A3EF972D34650300407A6F /* GitHubReposByOrgResponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = GitHubReposByOrgResponse.json; sourceTree = "<group>"; };
185187
03B021242A5D9F9D00B889BE /* MenuExtraModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuExtraModelTests.swift; sourceTree = "<group>"; };
186188
03B1D75E2A6079CD007BCB8A /* MenuItemModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItemModelTests.swift; sourceTree = "<group>"; };
187189
03B1D7602A607DD0007BCB8A /* PipelineRowViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineRowViewModel.swift; sourceTree = "<group>"; };
@@ -298,11 +300,12 @@
298300
0322051F2B913BC900205DC6 /* Responses */ = {
299301
isa = PBXGroup;
300302
children = (
301-
03A3EF912D3459D400407A6F /* GitHubUserOrgResponse.json */,
302303
03A3EF922D3459D400407A6F /* GitHubUserResponse.json */,
304+
03A3EF912D3459D400407A6F /* GitHubUserOrgResponse.json */,
303305
032205222B913CC000205DC6 /* GitHubWorkflowRunsResponse.json */,
304306
032205242B913D4000205DC6 /* GitHubReposByUserResponse.json */,
305307
038FF7152BB62E6D0017CD4C /* GitHubReposByUserCCM2OnlyResponse.json */,
308+
03A3EF972D34650300407A6F /* GitHubReposByOrgResponse.json */,
306309
032205282B96677200205DC6 /* GitHubUserReposResponse.json */,
307310
032205202B913C4E00205DC6 /* GitHubWorkflowsResponse.json */,
308311
038FF7132BB6212D0017CD4C /* GitHubBranchesResponse.json */,
@@ -719,6 +722,7 @@
719722
0322052B2B96708200205DC6 /* GitHubPipelineLocalhost.json in Resources */,
720723
03A3EF932D3459D400407A6F /* GitHubUserResponse.json in Resources */,
721724
03A3EF942D3459D400407A6F /* GitHubUserOrgResponse.json in Resources */,
725+
03A3EF982D34650300407A6F /* GitHubReposByOrgResponse.json in Resources */,
722726
032205252B913D4000205DC6 /* GitHubReposByUserResponse.json in Resources */,
723727
038FF7162BB62E6D0017CD4C /* GitHubReposByUserCCM2OnlyResponse.json in Resources */,
724728
03825EA5259FFD1500DEB003 /* DefaultPipelines.json in Resources */,

CCMenuUITests/GitHubTests.swift

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,7 @@ class GitHubTests: XCTestCase {
9999

100100
let app = TestHelper.launchApp(pipelines: "EmptyPipelines.json", pauseMonitor: false)
101101
let window = app.windows["Pipelines"]
102-
let sheet = window.sheets.firstMatch
103-
104-
// Navigate to add workflow sheet
105-
window.toolbars.popUpButtons["Add pipeline menu"].click()
106-
window.toolbars.menuItems["Add GitHub Actions workflow..."].click()
102+
let sheet = openAddGitHubPipelineSheet(app: app)
107103

108104
// Enter owner
109105
sheet.textFields["Owner field"].click()
@@ -155,11 +151,7 @@ class GitHubTests: XCTestCase {
155151

156152
let app = TestHelper.launchApp(pipelines: "EmptyPipelines.json", pauseMonitor: false)
157153
let window = app.windows["Pipelines"]
158-
let sheet = window.sheets.firstMatch
159-
160-
// Navigate to add workflow sheet
161-
window.toolbars.popUpButtons["Add pipeline menu"].click()
162-
window.toolbars.menuItems["Add GitHub Actions workflow..."].click()
154+
let sheet = openAddGitHubPipelineSheet(app: app)
163155

164156
// Enter owner
165157
sheet.textFields["Owner field"].click()
@@ -202,11 +194,7 @@ class GitHubTests: XCTestCase {
202194

203195
let app = TestHelper.launchApp(pipelines: "EmptyPipelines.json", pauseMonitor: false)
204196
let window = app.windows["Pipelines"]
205-
let sheet = window.sheets.firstMatch
206-
207-
// Navigate to add workflow sheet
208-
window.toolbars.popUpButtons["Add pipeline menu"].click()
209-
window.toolbars.menuItems["Add GitHub Actions workflow..."].click()
197+
let sheet = openAddGitHubPipelineSheet(app: app)
210198

211199
// Enter owner
212200
sheet.textFields["Owner field"].click()
@@ -231,7 +219,7 @@ class GitHubTests: XCTestCase {
231219
XCTAssertEqual("main", branchParam)
232220
}
233221

234-
func testAddGitHubPipelinePrivateRepos() throws {
222+
func testFindsPrivateReposForUser() throws {
235223
webapp.router.get("/users/erikdoe") { _ in
236224
try TestHelper.contentsOfFile("GitHubUserResponse.json")
237225
}
@@ -243,23 +231,17 @@ class GitHubTests: XCTestCase {
243231
}
244232

245233
let app = TestHelper.launchApp(pipelines: "EmptyPipelines.json", pauseMonitor: false, token: "TEST-TOKEN")
246-
let window = app.windows["Pipelines"]
247-
let sheet = window.sheets.firstMatch
248-
249-
// Navigate to add workflow sheet
250-
window.toolbars.popUpButtons["Add pipeline menu"].click()
251-
window.toolbars.menuItems["Add GitHub Actions workflow..."].click()
234+
let sheet = openAddGitHubPipelineSheet(app: app)
252235

253236
// Make sure the token is shown
254237
let tokenField = sheet.textFields["Token field"]
255238
XCTAssertEqual("TEST-TOKEN", tokenField.value as? String)
256239

257240
// Enter owner and wait for the repo list to load
258-
let ownerField = sheet.textFields["Owner field"]
259-
ownerField.click()
241+
sheet.textFields["Owner field"].click()
260242
sheet.typeText("erikdoe" + "\n")
261243

262-
// Make sure that the repositories are loaded and sorted
244+
// Make sure that the repositories are loaded
263245
let repositoryBox = sheet.comboBoxes["Repository combo box"]
264246
expectation(for: NSPredicate(format: "value == 'ccmenu'"), evaluatedWith: repositoryBox)
265247
waitForExpectations(timeout: 2)
@@ -274,6 +256,27 @@ class GitHubTests: XCTestCase {
274256
XCTAssertTrue(repositoryBox.textFields["jekyll-site-test"].exists)
275257
}
276258

259+
func testRetrievesReposForOrg() throws {
260+
webapp.router.get("/users/ccmenu") { _ in
261+
try TestHelper.contentsOfFile("GitHubUserOrgResponse.json")
262+
}
263+
webapp.router.get("/orgs/ccmenu/repos") { _ in
264+
try TestHelper.contentsOfFile("GitHubReposByOrgResponse.json")
265+
}
266+
267+
let app = TestHelper.launchApp(pipelines: "EmptyPipelines.json", pauseMonitor: false)
268+
let sheet = openAddGitHubPipelineSheet(app: app)
269+
270+
// Enter owner
271+
sheet.textFields["Owner field"].click()
272+
sheet.typeText("ccmenu" + "\n")
273+
274+
// Make sure that the repositories and workflows are loaded and the default display name is set
275+
let repositoryBox = sheet.comboBoxes["Repository combo box"]
276+
expectation(for: NSPredicate(format: "value == 'ccmenu'"), evaluatedWith: repositoryBox)
277+
waitForExpectations(timeout: 3)
278+
}
279+
277280
func testShowsRateLimitExceededForRepositories() throws {
278281
webapp.router.get("/users/erikdoe", options: .editResponse) { r -> String in
279282
r.response.status = .forbidden
@@ -282,12 +285,7 @@ class GitHubTests: XCTestCase {
282285
}
283286

284287
let app = TestHelper.launchApp(pipelines: "EmptyPipelines.json", pauseMonitor: false)
285-
let window = app.windows["Pipelines"]
286-
let sheet = window.sheets.firstMatch
287-
288-
// Navigate to add workflow sheet
289-
window.toolbars.popUpButtons["Add pipeline menu"].click()
290-
window.toolbars.menuItems["Add GitHub Actions workflow..."].click()
288+
let sheet = openAddGitHubPipelineSheet(app: app)
291289

292290
// Enter owner
293291
sheet.textFields["Owner field"].click()
@@ -310,16 +308,10 @@ class GitHubTests: XCTestCase {
310308
}
311309

312310
let app = TestHelper.launchApp(pipelines: "EmptyPipelines.json")
313-
let window = app.windows["Pipelines"]
314-
let sheet = window.sheets.firstMatch
315-
316-
// Navigate to add workflow sheet
317-
window.toolbars.popUpButtons["Add pipeline menu"].click()
318-
window.toolbars.menuItems["Add GitHub Actions workflow..."].click()
311+
let sheet = openAddGitHubPipelineSheet(app: app)
319312

320313
// Enter owner and wait for the repo list to load
321-
let ownerField = sheet.textFields["Owner field"]
322-
ownerField.click()
314+
sheet.textFields["Owner field"].click()
323315
sheet.typeText("erikdoe") // Note: not pressing return here
324316

325317
// Make sure that the repositories are loaded and sorted
@@ -330,9 +322,18 @@ class GitHubTests: XCTestCase {
330322
// Now press return and wait for a little while
331323
sheet.typeText("\n")
332324
Thread.sleep(forTimeInterval: 1)
333-
325+
334326
// Assert that no further fetch occured
335327
XCTAssertEqual(1, fetchCount)
328+
329+
}
330+
331+
private func openAddGitHubPipelineSheet(app: XCUIApplication) -> XCUIElement {
332+
let window = app.windows["Pipelines"]
333+
let sheet = window.sheets.firstMatch
334+
window.toolbars.popUpButtons["Add pipeline menu"].click()
335+
window.toolbars.menuItems["Add GitHub Actions workflow..."].click()
336+
return sheet
336337
}
337338

338339
}

0 commit comments

Comments
 (0)