Skip to content

Commit f61f6f0

Browse files
committed
Convert KeywordControllerTests
1 parent 2709184 commit f61f6f0

File tree

1 file changed

+100
-93
lines changed

1 file changed

+100
-93
lines changed

Tests/AppTests/KeywordControllerTests.swift

Lines changed: 100 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -12,124 +12,131 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
import XCTest
16-
1715
@testable import App
1816

1917
import Dependencies
18+
import Testing
2019
import Vapor
2120

2221

23-
class KeywordControllerTests: AppTestCase {
24-
25-
func test_query() async throws {
26-
// setup
27-
do {
28-
let p = try await savePackage(on: app.db, "0")
29-
try await Repository(package: p,
30-
keywords: ["bar"],
31-
name: "0",
32-
owner: "owner")
33-
.save(on: app.db)
34-
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
35-
}
36-
do {
37-
let p = try await savePackage(on: app.db, "1")
38-
try await Repository(package: p,
39-
keywords: ["foo"],
40-
name: "1",
41-
owner: "owner")
42-
.save(on: app.db)
43-
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
44-
}
45-
do {
46-
let p = try await savePackage(on: app.db, "2")
47-
try await Repository(package: p,
48-
name: "2",
49-
owner: "owner")
50-
.save(on: app.db)
51-
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
52-
}
53-
// MUT
54-
let page = try await KeywordController.query(on: app.db,
55-
keyword: "foo",
56-
page: 1,
57-
pageSize: 10)
58-
59-
// validation
60-
XCTAssertEqual(page.results.map(\.repository.name), ["1"])
61-
XCTAssertEqual(page.hasMoreResults, false)
62-
}
22+
@Suite struct KeywordControllerTests {
6323

64-
func test_query_pagination() async throws {
65-
// setup
66-
for idx in (0..<9).shuffled() {
67-
let p = Package(url: "\(idx)".url, score: 10 - idx)
68-
try await p.save(on: app.db)
69-
try await Repository(package: p,
70-
keywords: ["foo"],
71-
name: "\(idx)",
72-
owner: "owner").save(on: app.db)
73-
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
74-
}
75-
do { // first page
76-
// MUT
24+
@Test func query() async throws {
25+
try await withApp { app in
26+
// setup
27+
do {
28+
let p = try await savePackage(on: app.db, "0")
29+
try await Repository(package: p,
30+
keywords: ["bar"],
31+
name: "0",
32+
owner: "owner")
33+
.save(on: app.db)
34+
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
35+
}
36+
do {
37+
let p = try await savePackage(on: app.db, "1")
38+
try await Repository(package: p,
39+
keywords: ["foo"],
40+
name: "1",
41+
owner: "owner")
42+
.save(on: app.db)
43+
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
44+
}
45+
do {
46+
let p = try await savePackage(on: app.db, "2")
47+
try await Repository(package: p,
48+
name: "2",
49+
owner: "owner")
50+
.save(on: app.db)
51+
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
52+
}
53+
// MUT
7754
let page = try await KeywordController.query(on: app.db,
7855
keyword: "foo",
7956
page: 1,
80-
pageSize: 3)
81-
// validate
82-
XCTAssertEqual(page.results.map(\.repository.name), ["0", "1", "2"])
83-
XCTAssertEqual(page.hasMoreResults, true)
84-
}
85-
do { // second page
86-
// MUT
87-
let page = try await KeywordController.query(on: app.db,
88-
keyword: "foo",
89-
page: 2,
90-
pageSize: 3)
91-
// validate
92-
XCTAssertEqual(page.results.map(\.repository.name), ["3", "4", "5"])
93-
XCTAssertEqual(page.hasMoreResults, true)
94-
}
95-
do { // last page
96-
// MUT
97-
let page = try await KeywordController.query(on: app.db,
98-
keyword: "foo",
99-
page: 3,
100-
pageSize: 3)
101-
// validate
102-
XCTAssertEqual(page.results.map(\.repository.name), ["6", "7", "8"])
103-
XCTAssertEqual(page.hasMoreResults, false)
57+
pageSize: 10)
58+
59+
// validation
60+
#expect(page.results.map(\.repository.name) == ["1"])
61+
#expect(page.hasMoreResults == false)
10462
}
10563
}
10664

107-
func test_show_keyword() async throws {
108-
try await withDependencies {
109-
$0.environment.dbId = { nil }
110-
} operation: {
111-
do {
112-
let p = try await savePackage(on: app.db, "1")
65+
@Test func query_pagination() async throws {
66+
try await withApp { app in
67+
// setup
68+
for idx in (0..<9).shuffled() {
69+
let p = Package(url: "\(idx)".url, score: 10 - idx)
70+
try await p.save(on: app.db)
11371
try await Repository(package: p,
11472
keywords: ["foo"],
115-
name: "1",
73+
name: "\(idx)",
11674
owner: "owner").save(on: app.db)
11775
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
11876
}
119-
// MUT
120-
try await app.test(.GET, "/keywords/foo") { req async in
77+
do { // first page
78+
// MUT
79+
let page = try await KeywordController.query(on: app.db,
80+
keyword: "foo",
81+
page: 1,
82+
pageSize: 3)
12183
// validate
122-
XCTAssertEqual(req.status, .ok)
84+
#expect(page.results.map(\.repository.name) == ["0", "1", "2"])
85+
#expect(page.hasMoreResults == true)
86+
}
87+
do { // second page
88+
// MUT
89+
let page = try await KeywordController.query(on: app.db,
90+
keyword: "foo",
91+
page: 2,
92+
pageSize: 3)
93+
// validate
94+
#expect(page.results.map(\.repository.name) == ["3", "4", "5"])
95+
#expect(page.hasMoreResults == true)
96+
}
97+
do { // last page
98+
// MUT
99+
let page = try await KeywordController.query(on: app.db,
100+
keyword: "foo",
101+
page: 3,
102+
pageSize: 3)
103+
// validate
104+
#expect(page.results.map(\.repository.name) == ["6", "7", "8"])
105+
#expect(page.hasMoreResults == false)
106+
}
107+
}
108+
}
109+
110+
@Test func show_keyword() async throws {
111+
try await withDependencies {
112+
$0.environment.dbId = { nil }
113+
} operation: {
114+
try await withApp { app in
115+
do {
116+
let p = try await savePackage(on: app.db, "1")
117+
try await Repository(package: p,
118+
keywords: ["foo"],
119+
name: "1",
120+
owner: "owner").save(on: app.db)
121+
try await Version(package: p, latest: .defaultBranch).save(on: app.db)
122+
}
123+
// MUT
124+
try await app.test(.GET, "/keywords/foo") { req async in
125+
// validate
126+
#expect(req.status == .ok)
127+
}
123128
}
124129
}
125130
}
126131

127-
func test_not_found() throws {
128-
try withDependencies {
132+
@Test func not_found() async throws {
133+
try await withDependencies {
129134
$0.environment.dbId = { nil }
130135
} operation: {
131-
try app.test(.GET, "/keywords/baz") {
132-
XCTAssertEqual($0.status, .notFound)
136+
try await withApp { app in
137+
try await app.test(.GET, "/keywords/baz") { res async in
138+
#expect(res.status == .notFound)
139+
}
133140
}
134141
}
135142
}

0 commit comments

Comments
 (0)