Skip to content

Commit 04773b7

Browse files
authored
Simplify adapter tests (#18)
1 parent 9b0f2ff commit 04773b7

2 files changed

Lines changed: 67 additions & 90 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//
2+
// GADRTBAdapter.swift
3+
//
4+
5+
import GoogleMobileAds
6+
7+
/// Adds an async wrapper interface to simplify testing
8+
extension GADRTBAdapter {
9+
func collectSignals(for params: GADRTBRequestParameters) async throws -> String? {
10+
try await withCheckedThrowingContinuation { continuation in
11+
collectSignals(for: params, completionHandler: { signal, error in
12+
guard error == nil else {
13+
continuation.resume(throwing: error!)
14+
return
15+
}
16+
continuation.resume(returning: signal)
17+
})
18+
}
19+
}
20+
}

Tests/UID2GMAPluginTests/UID2GMAMediationAdapterTests.swift

Lines changed: 47 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -11,115 +11,72 @@ import UID2
1111
@testable import UID2GMAPlugin
1212

1313
final class UID2GMAMediationAdapterTests: XCTestCase {
14-
15-
private let decoder: JSONDecoder = {
16-
let decoder = JSONDecoder()
17-
decoder.keyDecodingStrategy = .convertFromSnakeCase
18-
return decoder
19-
}()
20-
21-
2214
/// 🟩 - GMA Adapter Request Signal Success
2315
func testRequestSignalsSuccess() async throws {
24-
25-
// Sample UID2Identity data
26-
let uid2IdentityData = try DataLoader.load(fileName: "uid2identity", fileExtension: "json")
27-
let uid2IdentityFromFile = try decoder.decode(UID2Identity.self, from: uid2IdentityData)
28-
29-
// Emulate A UID2Identity With Valid Times
30-
let identityExpires = Date(timeIntervalSinceNow: 60 * 60).millisecondsSince1970
31-
let refreshFrom = Date(timeIntervalSinceNow: 60 * 40).millisecondsSince1970
32-
let refreshExpires = Date(timeIntervalSinceNow: 60 * 50).millisecondsSince1970
33-
34-
let uid2Identity = UID2Identity(advertisingToken: uid2IdentityFromFile.advertisingToken,
35-
refreshToken: uid2IdentityFromFile.refreshToken,
36-
identityExpires: identityExpires,
37-
refreshFrom: refreshFrom,
38-
refreshExpires: refreshExpires,
39-
refreshResponseKey: uid2IdentityFromFile.refreshResponseKey)
40-
4116
// Seed the sample UID2Identity data in the UID2Manager
4217
await UID2Manager.shared.setAutomaticRefreshEnabled(false)
43-
await UID2Manager.shared.setIdentity(uid2Identity)
18+
await UID2Manager.shared.setIdentity(
19+
UID2Identity(
20+
advertisingToken: "uid2-test-token",
21+
refreshToken: "refresh-token",
22+
identityExpires: Date(timeIntervalSinceNow: 60 * 60).millisecondsSince1970,
23+
refreshFrom: Date(timeIntervalSinceNow: 60 * 40).millisecondsSince1970,
24+
refreshExpires: Date(timeIntervalSinceNow: 60 * 50).millisecondsSince1970,
25+
refreshResponseKey: ""
26+
)
27+
)
28+
29+
let signal = try await UID2GMAMediationAdapter().collectSignals(for: GADRTBRequestParameters())
4430

45-
// Adapter to test
46-
let adapter = UID2GMAMediationAdapter()
47-
48-
// Wraps Completion Handler Function Call In Async / Await
49-
let signal: String = try await withCheckedThrowingContinuation { continuation in
50-
51-
adapter.collectSignals(for: GADRTBRequestParameters(), completionHandler: { signal, error in
52-
guard let signal = signal else {
53-
continuation.resume(throwing: "Signal was Nil")
54-
return
55-
}
56-
continuation.resume(returning: signal)
57-
return
58-
})
59-
60-
}
61-
6231
// Confirm that Adapter returns expected data
63-
XCTAssertEqual(uid2Identity.advertisingToken, signal)
32+
XCTAssertEqual("uid2-test-token", signal)
33+
}
34+
35+
/// 🟥 - GMA Adapter Request Signal Error No Identity
36+
func testRequestSignalsNoIdentity() async throws {
37+
// Ensure no identity is set
38+
await UID2Manager.shared.resetIdentity()
39+
40+
let result = await Task<String?, Error> {
41+
try await UID2GMAMediationAdapter().collectSignals(for: GADRTBRequestParameters())
42+
}.result
43+
XCTAssertThrowsError(try result.get()) { error in
44+
let adapterError = error as? AdvertisingTokenNotFoundError
45+
XCTAssertEqual(AdvertisingTokenNotFoundError(), adapterError)
46+
}
6447
}
65-
66-
/// 🟥 - GMA Adapter Request Signal No Advertising Token Erro
48+
49+
/// 🟥 - GMA Adapter Request Signal No Advertising Token Error
6750
func testRequestSignalsNoAdvertisingToken() async throws {
68-
69-
// Sample UID2Identity data
70-
let uid2IdentityData = try DataLoader.load(fileName: "uid2identity", fileExtension: "json")
71-
let uid2IdentityFromFile = try decoder.decode(UID2Identity.self, from: uid2IdentityData)
72-
73-
// Emulate A UID2Identity With Valid Times
74-
let identityExpires = Date(timeIntervalSinceNow: 60 * 60).millisecondsSince1970
75-
let refreshFrom = Date(timeIntervalSinceNow: 60 * 40).millisecondsSince1970
76-
let refreshExpires = Date(timeIntervalSinceNow: 60 * 50).millisecondsSince1970
77-
78-
let uid2Identity = UID2Identity(advertisingToken: "",
79-
refreshToken: uid2IdentityFromFile.refreshToken,
80-
identityExpires: identityExpires,
81-
refreshFrom: refreshFrom,
82-
refreshExpires: refreshExpires,
83-
refreshResponseKey: uid2IdentityFromFile.refreshResponseKey)
84-
85-
// Seed the sample UID2Identity data in the UID2Manager
51+
// Set an identity with an invalid advertisingToken
8652
await UID2Manager.shared.setAutomaticRefreshEnabled(false)
87-
await UID2Manager.shared.setIdentity(uid2Identity)
53+
await UID2Manager.shared.setIdentity(
54+
UID2Identity(
55+
advertisingToken: "",
56+
refreshToken: "refresh-token",
57+
identityExpires: Date(timeIntervalSinceNow: 60 * 60).millisecondsSince1970,
58+
refreshFrom: Date(timeIntervalSinceNow: 60 * 40).millisecondsSince1970,
59+
refreshExpires: Date(timeIntervalSinceNow: 60 * 50).millisecondsSince1970,
60+
refreshResponseKey: ""
61+
)
62+
)
8863

89-
// Adapter to test
90-
let adapter = UID2GMAMediationAdapter()
91-
92-
// Wraps Completion Handler Function Call In Async / Await
93-
let _: String = try await withCheckedThrowingContinuation { continuation in
94-
95-
adapter.collectSignals(for: GADRTBRequestParameters(), completionHandler: { signal, error in
96-
97-
guard let error = error as? AdvertisingTokenNotFoundError else {
98-
continuation.resume(throwing: "Error returned was not expected type.")
99-
return
100-
}
101-
102-
XCTAssertEqual(AdvertisingTokenNotFoundError(), error)
103-
104-
continuation.resume(returning: "Successful Test")
105-
106-
return
107-
})
108-
64+
let result = await Task<String?, Error> {
65+
try await UID2GMAMediationAdapter().collectSignals(for: GADRTBRequestParameters())
66+
}.result
67+
XCTAssertThrowsError(try result.get()) { error in
68+
let adapterError = error as? AdvertisingTokenNotFoundError
69+
XCTAssertEqual(AdvertisingTokenNotFoundError(), adapterError)
10970
}
110-
11171
}
112-
72+
11373
/// 🟩 - GMA Adapter Ad SDK Version Check Success
11474
func testAdSDKVersion() async throws {
115-
11675
let adSDKVersion = UID2GMAMediationAdapter.adSDKVersion()
11776
let sdkVersion = await UID2Manager.shared.sdkVersion
11877

11978
XCTAssertEqual(sdkVersion.major, adSDKVersion.majorVersion)
12079
XCTAssertEqual(sdkVersion.minor, adSDKVersion.minorVersion)
12180
XCTAssertEqual(sdkVersion.patch, adSDKVersion.patchVersion)
122-
12381
}
124-
12582
}

0 commit comments

Comments
 (0)