@@ -16,6 +16,8 @@ import XCTest
1616
1717@testable import App
1818
19+ import Dependencies
20+
1921
2022final class PlausibleTests : XCTestCase {
2123
@@ -29,43 +31,49 @@ final class PlausibleTests: XCTestCase {
2931 }
3032
3133 func test_postEvent_anonymous( ) async throws {
32- Current . plausibleBackendReportingSiteID = { " foo.bar " }
33-
34- var called = false
35- let client = MockClient { req, _ in
36- called = true
37- // validate
38- XCTAssertEqual ( try ? req. content. decode ( Plausible . Event. self) ,
39- . init( name: . pageview,
40- url: " https://foo.bar/api/search " ,
41- domain: " foo.bar " ,
42- props: [ " user " : " none " ] ) )
43- }
34+ let called = ActorIsolated ( false )
35+ try await withDependencies {
36+ $0. httpClient. post = { @Sendable _, _, body in
37+ await called. withValue { $0 = true }
38+ // validate
39+ XCTAssertEqual ( try ? JSONDecoder ( ) . decode ( Plausible . Event. self, from: body) ,
40+ . init( name: . pageview,
41+ url: " https://foo.bar/api/search " ,
42+ domain: " foo.bar " ,
43+ props: [ " user " : " none " ] ) )
44+ return . ok
45+ }
46+ } operation: {
47+ Current . plausibleBackendReportingSiteID = { " foo.bar " }
4448
45- // MUT
46- _ = try await Plausible . postEvent ( kind: . pageview, path: . search, user: nil )
49+ // MUT
50+ _ = try await Plausible . postEvent ( kind: . pageview, path: . search, user: nil )
4751
48- XCTAssertTrue ( called)
52+ await called. withValue { XCTAssertTrue ( $0) }
53+ }
4954 }
5055
5156 func test_postEvent_package( ) async throws {
52- Current . plausibleBackendReportingSiteID = { " foo.bar " }
57+ let called = ActorIsolated ( false )
58+ try await withDependencies {
59+ $0. httpClient. post = { @Sendable _, _, body in
60+ await called. withValue { $0 = true }
61+ // validate
62+ XCTAssertEqual ( try ? JSONDecoder ( ) . decode ( Plausible . Event. self, from: body) ,
63+ . init( name: . pageview,
64+ url: " https://foo.bar/api/packages/{owner}/{repository} " ,
65+ domain: " foo.bar " ,
66+ props: [ " user " : " 3c469e9d " ] ) )
67+ return . ok
68+ }
69+ } operation: {
70+ Current . plausibleBackendReportingSiteID = { " foo.bar " }
71+ let user = User ( name: " api " , identifier: " 3c469e9d " )
5372
54- let user = User ( name: " api " , identifier: " 3c469e9d " )
55- var called = false
56- let client = MockClient { req, _ in
57- called = true
58- // validate
59- XCTAssertEqual ( try ? req. content. decode ( Plausible . Event. self) ,
60- . init( name: . pageview,
61- url: " https://foo.bar/api/packages/{owner}/{repository} " ,
62- domain: " foo.bar " ,
63- props: [ " user " : user. identifier] ) )
64- }
65-
66- // MUT
67- _ = try await Plausible . postEvent ( kind: . pageview, path: . package , user: user)
73+ // MUT
74+ _ = try await Plausible . postEvent ( kind: . pageview, path: . package , user: user)
6875
69- XCTAssertTrue ( called)
76+ await called. withValue { XCTAssertTrue ( $0) }
77+ }
7078 }
7179}
0 commit comments