Skip to content

Commit 618cef9

Browse files
committed
Fix RSSTests
1 parent 0a23031 commit 618cef9

File tree

1 file changed

+152
-131
lines changed

1 file changed

+152
-131
lines changed

Tests/AppTests/RSSTests.swift

Lines changed: 152 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
@testable import App
1616

17+
import Dependencies
1718
import SnapshotTesting
1819
import XCTVapor
1920

@@ -132,157 +133,177 @@ class RSSTests: SnapshotTestCase {
132133
}
133134

134135
func test_recentPackages_route() throws {
135-
// Test request handler
136-
try app.test(.GET, "packages.rss", afterResponse: { res in
137-
XCTAssertEqual(res.status, .ok)
138-
XCTAssertEqual(res.content.contentType,
139-
.some(.init(type: "application", subType: "rss+xml")))
140-
})
136+
try withDependencies {
137+
$0.httpClient.postPlausibleEvent = App.HTTPClient.noop
138+
} operation: {
139+
// Test request handler
140+
try app.test(.GET, "packages.rss", afterResponse: { res in
141+
XCTAssertEqual(res.status, .ok)
142+
XCTAssertEqual(res.content.contentType,
143+
.some(.init(type: "application", subType: "rss+xml")))
144+
})
145+
}
141146
}
142147

143148
func test_recentReleases_route_all() async throws {
144-
// Test request handler - without parameters (all)
145-
// setup
146-
// see RecentViewsTests.test_recentReleases_filter for filter results
147-
for idx in 1...10 {
148-
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3
149-
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1
150-
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
151-
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
152-
try await pkg.save(on: app.db)
153-
try await Repository(package: pkg,
154-
name: "pkg-\(idx)",
155-
owner: "owner-\(idx)",
156-
summary: "Summary")
157-
.create(on: app.db)
158-
try await Version(package: pkg,
159-
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
160-
packageName: "pkg-\(idx)",
161-
reference: .tag(.init(major, minor, patch)),
162-
url: "https://example.com/release-url")
163-
.save(on: app.db)
164-
}
165-
// make sure to refresh the materialized view
166-
try await RecentRelease.refresh(on: app.db)
149+
try await withDependencies {
150+
$0.httpClient.postPlausibleEvent = App.HTTPClient.noop
151+
} operation: {
152+
// Test request handler - without parameters (all)
153+
// setup
154+
// see RecentViewsTests.test_recentReleases_filter for filter results
155+
for idx in 1...10 {
156+
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3
157+
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1
158+
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
159+
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
160+
try await pkg.save(on: app.db)
161+
try await Repository(package: pkg,
162+
name: "pkg-\(idx)",
163+
owner: "owner-\(idx)",
164+
summary: "Summary")
165+
.create(on: app.db)
166+
try await Version(package: pkg,
167+
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
168+
packageName: "pkg-\(idx)",
169+
reference: .tag(.init(major, minor, patch)),
170+
url: "https://example.com/release-url")
171+
.save(on: app.db)
172+
}
173+
// make sure to refresh the materialized view
174+
try await RecentRelease.refresh(on: app.db)
167175

168-
// MUT
169-
try await app.test(.GET, "releases.rss", afterResponse: { @MainActor res async in
170-
XCTAssertEqual(res.status, .ok)
171-
XCTAssertEqual(res.content.contentType,
172-
.some(.init(type: "application", subType: "rss+xml")))
173-
// validation
174-
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
175-
as: .init(pathExtension: "xml", diffing: .lines))
176-
})
176+
// MUT
177+
try await app.test(.GET, "releases.rss", afterResponse: { @MainActor res async in
178+
XCTAssertEqual(res.status, .ok)
179+
XCTAssertEqual(res.content.contentType,
180+
.some(.init(type: "application", subType: "rss+xml")))
181+
// validation
182+
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
183+
as: .init(pathExtension: "xml", diffing: .lines))
184+
})
185+
}
177186
}
178187

179188
func test_recentReleases_route_major() async throws {
180-
// Test request handler - major releases only
181-
// setup
182-
// see RecentViewsTests.test_recentReleases_filter for filter results
183-
for idx in 1...10 {
184-
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3
185-
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1
186-
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
187-
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
188-
try await pkg.save(on: app.db)
189-
try await Repository(package: pkg,
190-
name: "pkg-\(idx)",
191-
owner: "owner-\(idx)",
192-
summary: "Summary")
193-
.create(on: app.db)
194-
try await Version(package: pkg,
195-
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
196-
packageName: "pkg-\(idx)",
197-
reference: .tag(.init(major, minor, patch)),
198-
url: "https://example.com/release-url")
199-
.save(on: app.db)
200-
}
201-
// make sure to refresh the materialized view
202-
try await RecentRelease.refresh(on: app.db)
189+
try await withDependencies {
190+
$0.httpClient.postPlausibleEvent = App.HTTPClient.noop
191+
} operation: {
192+
// Test request handler - major releases only
193+
// setup
194+
// see RecentViewsTests.test_recentReleases_filter for filter results
195+
for idx in 1...10 {
196+
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3
197+
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1
198+
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
199+
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
200+
try await pkg.save(on: app.db)
201+
try await Repository(package: pkg,
202+
name: "pkg-\(idx)",
203+
owner: "owner-\(idx)",
204+
summary: "Summary")
205+
.create(on: app.db)
206+
try await Version(package: pkg,
207+
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
208+
packageName: "pkg-\(idx)",
209+
reference: .tag(.init(major, minor, patch)),
210+
url: "https://example.com/release-url")
211+
.save(on: app.db)
212+
}
213+
// make sure to refresh the materialized view
214+
try await RecentRelease.refresh(on: app.db)
203215

204-
// MUT
205-
try await app.test(.GET, "releases.rss?major=true", afterResponse: { @MainActor res async in
206-
XCTAssertEqual(res.status, .ok)
207-
XCTAssertEqual(res.content.contentType,
208-
.some(.init(type: "application", subType: "rss+xml")))
209-
// validation
210-
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
211-
as: .init(pathExtension: "xml", diffing: .lines))
212-
})
216+
// MUT
217+
try await app.test(.GET, "releases.rss?major=true", afterResponse: { @MainActor res async in
218+
XCTAssertEqual(res.status, .ok)
219+
XCTAssertEqual(res.content.contentType,
220+
.some(.init(type: "application", subType: "rss+xml")))
221+
// validation
222+
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
223+
as: .init(pathExtension: "xml", diffing: .lines))
224+
})
225+
}
213226
}
214227

215228
func test_recentReleases_route_majorMinor() async throws {
216-
// Test request handler - major & minor releases only
217-
// setup
218-
// see RecentViewsTests.test_recentReleases_filter for filter results
219-
for idx in 1...10 {
220-
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3
221-
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1
222-
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
223-
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
224-
try await pkg.save(on: app.db)
225-
try await Repository(package: pkg,
226-
name: "pkg-\(idx)",
227-
owner: "owner-\(idx)",
228-
summary: "Summary")
229+
try await withDependencies {
230+
$0.httpClient.postPlausibleEvent = App.HTTPClient.noop
231+
} operation: {
232+
// Test request handler - major & minor releases only
233+
// setup
234+
// see RecentViewsTests.test_recentReleases_filter for filter results
235+
for idx in 1...10 {
236+
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3
237+
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1
238+
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
239+
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
240+
try await pkg.save(on: app.db)
241+
try await Repository(package: pkg,
242+
name: "pkg-\(idx)",
243+
owner: "owner-\(idx)",
244+
summary: "Summary")
229245
.create(on: app.db)
230-
try await Version(package: pkg,
231-
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
232-
packageName: "pkg-\(idx)",
233-
reference: .tag(.init(major, minor, patch)),
234-
url: "https://example.com/release-url")
246+
try await Version(package: pkg,
247+
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
248+
packageName: "pkg-\(idx)",
249+
reference: .tag(.init(major, minor, patch)),
250+
url: "https://example.com/release-url")
235251
.save(on: app.db)
236-
}
237-
// make sure to refresh the materialized view
238-
try await RecentRelease.refresh(on: app.db)
252+
}
253+
// make sure to refresh the materialized view
254+
try await RecentRelease.refresh(on: app.db)
239255

240-
// MUT
241-
try await app.test(.GET, "releases.rss?major=true&minor=true", afterResponse: { @MainActor res async in
242-
XCTAssertEqual(res.status, .ok)
243-
XCTAssertEqual(res.content.contentType,
244-
.some(.init(type: "application", subType: "rss+xml")))
245-
// validation
246-
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
247-
as: .init(pathExtension: "xml", diffing: .lines))
248-
})
256+
// MUT
257+
try await app.test(.GET, "releases.rss?major=true&minor=true", afterResponse: { @MainActor res async in
258+
XCTAssertEqual(res.status, .ok)
259+
XCTAssertEqual(res.content.contentType,
260+
.some(.init(type: "application", subType: "rss+xml")))
261+
// validation
262+
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
263+
as: .init(pathExtension: "xml", diffing: .lines))
264+
})
265+
}
249266
}
250267

251268
func test_recentReleases_route_preRelease() async throws {
252-
// Test request handler - pre-releases only
253-
// setup
254-
// see RecentViewsTests.test_recentReleases_filter for filter results
255-
for idx in 1...12 {
256-
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4
257-
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0
258-
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
259-
let pre = idx <= 10 ? "" : "b1"
260-
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
261-
try await pkg.save(on: app.db)
262-
try await Repository(package: pkg,
263-
name: "pkg-\(idx)",
264-
owner: "owner-\(idx)",
265-
summary: "Summary")
269+
try await withDependencies {
270+
$0.httpClient.postPlausibleEvent = App.HTTPClient.noop
271+
} operation: {
272+
// Test request handler - pre-releases only
273+
// setup
274+
// see RecentViewsTests.test_recentReleases_filter for filter results
275+
for idx in 1...12 {
276+
let major = idx / 3 // 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4
277+
let minor = idx % 3 // 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0
278+
let patch = idx % 2 // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
279+
let pre = idx <= 10 ? "" : "b1"
280+
let pkg = Package(id: UUID(), url: "\(idx)".asGithubUrl.url)
281+
try await pkg.save(on: app.db)
282+
try await Repository(package: pkg,
283+
name: "pkg-\(idx)",
284+
owner: "owner-\(idx)",
285+
summary: "Summary")
266286
.create(on: app.db)
267-
try await Version(package: pkg,
268-
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
269-
packageName: "pkg-\(idx)",
270-
reference: .tag(.init(major, minor, patch, pre)),
271-
url: "https://example.com/release-url")
287+
try await Version(package: pkg,
288+
commitDate: Date(timeIntervalSince1970: TimeInterval(idx)),
289+
packageName: "pkg-\(idx)",
290+
reference: .tag(.init(major, minor, patch, pre)),
291+
url: "https://example.com/release-url")
272292
.save(on: app.db)
293+
}
294+
// make sure to refresh the materialized view
295+
try await RecentRelease.refresh(on: app.db)
296+
297+
// MUT
298+
try await app.test(.GET, "releases.rss?pre=true", afterResponse: { @MainActor res async in
299+
XCTAssertEqual(res.status, .ok)
300+
XCTAssertEqual(res.content.contentType,
301+
.some(.init(type: "application", subType: "rss+xml")))
302+
// validation
303+
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
304+
as: .init(pathExtension: "xml", diffing: .lines))
305+
})
273306
}
274-
// make sure to refresh the materialized view
275-
try await RecentRelease.refresh(on: app.db)
276-
277-
// MUT
278-
try await app.test(.GET, "releases.rss?pre=true", afterResponse: { @MainActor res async in
279-
XCTAssertEqual(res.status, .ok)
280-
XCTAssertEqual(res.content.contentType,
281-
.some(.init(type: "application", subType: "rss+xml")))
282-
// validation
283-
assertSnapshot(of: String(decoding: res.body.readableBytesView, as: UTF8.self),
284-
as: .init(pathExtension: "xml", diffing: .lines))
285-
})
286307
}
287308

288309
}

0 commit comments

Comments
 (0)