From 7a8cd3574592ec15ffea7c17c1abd051dbac2934 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 15 Aug 2024 13:18:17 -0400 Subject: [PATCH 1/6] Start using IssueReporting. --- .../xcshareddata/swiftpm/Package.resolved | 102 +++++++++--------- Package.swift | 42 ++++---- Sources/ComposableGameCenter/Mocks.swift | 1 - Sources/DatabaseClient/Mocks.swift | 2 +- Sources/ServerRouter/Router.swift | 2 +- .../UnimplementedEitherIO.swift | 2 +- .../SiteMiddleware/ServerEnvironment.swift | 2 +- Sources/SnsClient/Mocks.swift | 2 +- Sources/TcaHelpers/RuntimeWarnings.swift | 2 +- .../ItunesClient.swift | 2 +- 10 files changed, 79 insertions(+), 80 deletions(-) delete mode 100644 Sources/ComposableGameCenter/Mocks.swift diff --git a/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 454ee6b5..c0004160 100644 --- a/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/async-kit.git", "state" : { - "revision" : "7ece208cd401687641c88367a00e3ea2b04311f1", - "version" : "1.19.0" + "revision" : "e048c8ee94967e8d8a1c2ec0e1156d6f7fa34d31", + "version" : "1.20.0" } }, { @@ -23,8 +23,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/combine-schedulers", "state" : { - "revision" : "9dc9cbe4bc45c65164fa653a563d8d8db61b09bb", - "version" : "1.0.0" + "revision" : "9fa31f4403da54855f1e2aeaeff478f4f0e40b13", + "version" : "1.0.2" } }, { @@ -50,8 +50,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/sql-kit.git", "state" : { - "revision" : "b2f128cb62a3abfbb1e3b2893ff3ee69e70f4f0f", - "version" : "3.28.0" + "revision" : "f697d3289c628acd241e3b2c7d3ff068adcc52d1", + "version" : "3.31.1" } }, { @@ -86,8 +86,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-case-paths", "state" : { - "revision" : "79623dbe2c7672f5e450d8325613d231454390b3", - "version" : "1.3.2" + "revision" : "71344dd930fde41e8f3adafe260adcbb2fc2a3dc", + "version" : "1.5.4" } }, { @@ -95,8 +95,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-clocks", "state" : { - "revision" : "a8421d68068d8f45fbceb418fbf22c5dad4afd33", - "version" : "1.0.2" + "revision" : "3581e280bf0d90c3fb9236fb23e75a5d8c46b533", + "version" : "1.0.4" } }, { @@ -104,8 +104,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections", "state" : { - "revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb", - "version" : "1.1.0" + "revision" : "3d2dc41a01f9e49d84f0a3925fb858bed64f702d", + "version" : "1.1.2" } }, { @@ -113,8 +113,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-composable-architecture", "state" : { - "branch" : "shared-state-beta", - "revision" : "76343472bde40429785fa17c771bc6be42db2a87" + "revision" : "b35827a61c1420e40ff8e7c584b5042144d20195", + "version" : "1.12.1" } }, { @@ -140,8 +140,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-custom-dump", "state" : { - "revision" : "f01efb26f3a192a0e88dcdb7c3c391ec2fc25d9c", - "version" : "1.3.0" + "revision" : "82645ec760917961cfa08c9c0c7104a57a0fa4b1", + "version" : "1.3.3" } }, { @@ -149,8 +149,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-dependencies", "state" : { - "revision" : "d3a5af3038a09add4d7682f66555d6212058a3c0", - "version" : "1.2.2" + "revision" : "d7472be6b3c89251ce4c0db07d32405b43426781", + "version" : "1.3.7" } }, { @@ -176,8 +176,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-http-types", "state" : { - "revision" : "12358d55a3824bd5fed310b999ea8cf83a9a1a65", - "version" : "1.0.3" + "revision" : "ae67c8178eb46944fd85e4dc6dd970e1f3ed6ccd", + "version" : "1.3.0" } }, { @@ -185,8 +185,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-identified-collections", "state" : { - "revision" : "d1e45f3e1eee2c9193f5369fa9d70a6ddad635e8", - "version" : "1.0.0" + "revision" : "2f5ab6e091dd032b63dacbda052405756010dc3b", + "version" : "1.1.0" } }, { @@ -194,8 +194,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-log.git", "state" : { - "revision" : "e97a6fcb1ab07462881ac165fdbb37f067e205d5", - "version" : "1.5.4" + "revision" : "9cb486020ebf03bfa5b5df985387a14a98744537", + "version" : "1.6.1" } }, { @@ -203,8 +203,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-metrics.git", "state" : { - "revision" : "971ba26378ab69c43737ee7ba967a896cb74c0d1", - "version" : "2.4.1" + "revision" : "e0165b53d49b413dd987526b641e05e246782685", + "version" : "2.5.0" } }, { @@ -212,8 +212,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio.git", "state" : { - "revision" : "fc63f0cf4e55a4597407a9fc95b16a2bc44b4982", - "version" : "2.64.0" + "revision" : "4c4453b489cf76e6b3b0f300aba663eb78182fad", + "version" : "2.70.0" } }, { @@ -221,8 +221,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-extras.git", "state" : { - "revision" : "a3b640d7dc567225db7c94386a6e71aded1bfa63", - "version" : "1.22.0" + "revision" : "d1ead62745cc3269e482f1c51f27608057174379", + "version" : "1.24.0" } }, { @@ -230,8 +230,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-http2.git", "state" : { - "revision" : "0904bf0feb5122b7e5c3f15db7df0eabe623dd87", - "version" : "1.30.0" + "revision" : "b5f7062b60e4add1e8c343ba4eb8da2e324b3a94", + "version" : "1.34.0" } }, { @@ -239,8 +239,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-ssl.git", "state" : { - "revision" : "7c381eb6083542b124a6c18fae742f55001dc2b5", - "version" : "2.26.0" + "revision" : "a9fa5efd86e7ce2e5c1b6de113262e58035ca251", + "version" : "2.27.1" } }, { @@ -248,8 +248,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-transport-services.git", "state" : { - "revision" : "6cbe0ed2b394f21ab0d46b9f0c50c6be964968ce", - "version" : "1.20.1" + "revision" : "38ac8221dd20674682148d6451367f89c2652980", + "version" : "1.21.0" } }, { @@ -284,8 +284,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-perception", "state" : { - "revision" : "520c458a832d1287e6b698c5f657ae848fd696ff", - "version" : "1.1.4" + "revision" : "1552c8f722ac256cc0b8daaf1a7073217d4fcdfb", + "version" : "1.3.4" } }, { @@ -302,17 +302,17 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-snapshot-testing", "state" : { - "revision" : "625ccca8570773dd84a34ee51a81aa2bc5a4f97a", - "version" : "1.16.0" + "revision" : "6d932a79e7173b275b96c600c86c603cf84f153c", + "version" : "1.17.4" } }, { "identity" : "swift-syntax", "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-syntax", + "location" : "https://github.com/swiftlang/swift-syntax", "state" : { - "revision" : "fa8f95c2d536d6620cc2f504ebe8a6167c9fc2dd", - "version" : "510.0.1" + "revision" : "515f79b522918f83483068d99c68daeb5116342d", + "version" : "600.0.0-prerelease-2024-08-14" } }, { @@ -320,8 +320,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-system.git", "state" : { - "revision" : "025bcb1165deab2e20d4eaba79967ce73013f496", - "version" : "1.2.1" + "revision" : "d2ba781702a1d8285419c15ee62fd734a9437ff5", + "version" : "1.3.2" } }, { @@ -338,8 +338,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-url-routing", "state" : { - "revision" : "13f65cec4de950ba30f08d9bc4abcfa41f9479b9", - "version" : "0.6.0" + "revision" : "1cfd564259ecb1d324bb718a8f03e513dab738d2", + "version" : "0.6.2" } }, { @@ -365,8 +365,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swiftui-navigation", "state" : { - "revision" : "2ec6c3a15293efff6083966b38439a4004f25565", - "version" : "1.3.0" + "revision" : "fc91d591ebba1f90d65028ccb65c861e5979e898", + "version" : "1.5.4" } }, { @@ -374,8 +374,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay", "state" : { - "revision" : "6f30bdba373bbd7fbfe241dddd732651f2fbd1e2", - "version" : "1.1.2" + "revision" : "c6809a193975cab4d5308c64bd1d51e0df467928", + "version" : "1.2.3" } } ], diff --git a/Package.swift b/Package.swift index 8ae17ac8..bbfc13b6 100644 --- a/Package.swift +++ b/Package.swift @@ -28,16 +28,16 @@ var package = Package( dependencies: [ .package(url: "https://github.com/apple/swift-crypto", from: "1.1.6"), .package(url: "https://github.com/pointfreeco/swift-case-paths", from: "1.1.0"), - .package(url: "https://github.com/pointfreeco/swift-composable-architecture", branch: "shared-state-beta"), + .package(url: "https://github.com/pointfreeco/swift-composable-architecture", from: "1.12.0"), .package(url: "https://github.com/pointfreeco/swift-custom-dump", from: "1.0.0"), .package(url: "https://github.com/pointfreeco/swift-dependencies", from: "1.1.0"), .package(url: "https://github.com/pointfreeco/swift-gen", from: "0.3.0"), .package(url: "https://github.com/pointfreeco/swift-parsing", from: "0.12.0"), .package(url: "https://github.com/pointfreeco/swift-tagged", from: "0.6.0"), .package(url: "https://github.com/pointfreeco/swift-url-routing", from: "0.2.0"), - .package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "1.0.0"), .package(url: "https://github.com/pointfreeco/swift-overture", from: "0.5.0"), .package(url: "https://github.com/pointfreeco/swift-snapshot-testing", from: "1.10.0"), + .package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "1.2.3"), ], targets: [ .target( @@ -46,7 +46,7 @@ var package = Package( .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies"), .product(name: "Tagged", package: "swift-tagged"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .systemLibrary( @@ -62,7 +62,7 @@ var package = Package( "SharedModels", .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -121,7 +121,7 @@ var package = Package( .product(name: "Tagged", package: "swift-tagged"), .product(name: "Parsing", package: "swift-parsing"), .product(name: "URLRouting", package: "swift-url-routing"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .testTarget( @@ -258,7 +258,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { .product(name: "CasePaths", package: "swift-case-paths"), .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -317,7 +317,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), .product(name: "Gen", package: "swift-gen"), .product(name: "Tagged", package: "swift-tagged"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .testTarget( @@ -344,7 +344,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { name: "AudioPlayerClient", dependencies: [ .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -413,21 +413,21 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), .product(name: "Overture", package: "swift-overture"), .product(name: "Tagged", package: "swift-tagged"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( name: "ComposableStoreKit", dependencies: [ .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( name: "ComposableUserNotifications", dependencies: [ .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -531,7 +531,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { dependencies: [ .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -554,7 +554,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { dependencies: [ "XCTestDebugSupport", .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -563,7 +563,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { "ClientModels", "XCTestDebugSupport", .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -819,7 +819,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { name: "RemoteNotificationsClient", dependencies: [ .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -827,7 +827,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { dependencies: [ "ServerConfig", .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -851,7 +851,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { "UserDefaultsClient", "UserSettingsClient", .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ], resources: [.process("Resources/")] ), @@ -966,7 +966,7 @@ if ProcessInfo.processInfo.environment["TEST_SERVER"] == nil { name: "UserDefaultsClient", dependencies: [ .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -1085,7 +1085,7 @@ package.targets.append(contentsOf: [ "SharedModels", "SnsClient", .product(name: "Either", package: "swift-prelude"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -1268,7 +1268,7 @@ package.targets.append(contentsOf: [ name: "ServerTestHelpers", dependencies: [ .product(name: "Either", package: "swift-prelude"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .target( @@ -1336,7 +1336,7 @@ package.targets.append(contentsOf: [ "ServerTestHelpers", .product(name: "Either", package: "swift-prelude"), .product(name: "Tagged", package: "swift-tagged"), - .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + .product(name: "IssueReporting", package: "xctest-dynamic-overlay"), ] ), .testTarget( diff --git a/Sources/ComposableGameCenter/Mocks.swift b/Sources/ComposableGameCenter/Mocks.swift deleted file mode 100644 index 8ea82788..00000000 --- a/Sources/ComposableGameCenter/Mocks.swift +++ /dev/null @@ -1 +0,0 @@ -import XCTestDynamicOverlay diff --git a/Sources/DatabaseClient/Mocks.swift b/Sources/DatabaseClient/Mocks.swift index ac417371..b4798469 100644 --- a/Sources/DatabaseClient/Mocks.swift +++ b/Sources/DatabaseClient/Mocks.swift @@ -1,6 +1,6 @@ import Either import ServerTestHelpers -import XCTestDynamicOverlay +import IssueReporting #if DEBUG extension DatabaseClient { diff --git a/Sources/ServerRouter/Router.swift b/Sources/ServerRouter/Router.swift index 768a1784..66ddb01a 100644 --- a/Sources/ServerRouter/Router.swift +++ b/Sources/ServerRouter/Router.swift @@ -4,7 +4,7 @@ import Parsing import SharedModels import Tagged import URLRouting -import XCTestDynamicOverlay +import IssueReporting #if canImport(FoundationNetworking) import FoundationNetworking diff --git a/Sources/ServerTestHelpers/UnimplementedEitherIO.swift b/Sources/ServerTestHelpers/UnimplementedEitherIO.swift index b36690f0..ecb74034 100644 --- a/Sources/ServerTestHelpers/UnimplementedEitherIO.swift +++ b/Sources/ServerTestHelpers/UnimplementedEitherIO.swift @@ -1,6 +1,6 @@ #if DEBUG import Either - import XCTestDynamicOverlay + import IssueReporting extension EitherIO where E == Error { public static func unimplemented(_ message: String) -> Self { diff --git a/Sources/SiteMiddleware/ServerEnvironment.swift b/Sources/SiteMiddleware/ServerEnvironment.swift index 45782bac..bf4eb8e2 100644 --- a/Sources/SiteMiddleware/ServerEnvironment.swift +++ b/Sources/SiteMiddleware/ServerEnvironment.swift @@ -27,7 +27,7 @@ public struct ServerEnvironment { } #if DEBUG - import XCTestDynamicOverlay + import IssueReporting extension ServerEnvironment { public static let testValue = Self( diff --git a/Sources/SnsClient/Mocks.swift b/Sources/SnsClient/Mocks.swift index fdfe740b..c77d9517 100644 --- a/Sources/SnsClient/Mocks.swift +++ b/Sources/SnsClient/Mocks.swift @@ -1,5 +1,5 @@ import ServerTestHelpers -import XCTestDynamicOverlay +import IssueReporting #if DEBUG extension SnsClient { diff --git a/Sources/TcaHelpers/RuntimeWarnings.swift b/Sources/TcaHelpers/RuntimeWarnings.swift index e334f707..a2d57fde 100644 --- a/Sources/TcaHelpers/RuntimeWarnings.swift +++ b/Sources/TcaHelpers/RuntimeWarnings.swift @@ -1,6 +1,6 @@ #if DEBUG && canImport(os) import os - import XCTestDynamicOverlay + import IssueReporting // NB: Xcode runtime warnings offer a much better experience than traditional assertions and // breakpoints, but Apple provides no means of creating custom runtime warnings ourselves. diff --git a/Sources/VerifyReceiptMiddleware/ItunesClient.swift b/Sources/VerifyReceiptMiddleware/ItunesClient.swift index 1c03237e..0a22bb95 100644 --- a/Sources/VerifyReceiptMiddleware/ItunesClient.swift +++ b/Sources/VerifyReceiptMiddleware/ItunesClient.swift @@ -2,7 +2,7 @@ import Either import Foundation import ServerTestHelpers import SharedModels -import XCTestDynamicOverlay +import IssueReporting #if canImport(FoundationNetworking) import FoundationNetworking From 7f500464cb71e6fe49d9ac3ad057d0da46b4d03a Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 15 Aug 2024 13:19:28 -0400 Subject: [PATCH 2/6] isTesting --- Sources/TcaHelpers/RuntimeWarnings.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/TcaHelpers/RuntimeWarnings.swift b/Sources/TcaHelpers/RuntimeWarnings.swift index a2d57fde..da5d4df5 100644 --- a/Sources/TcaHelpers/RuntimeWarnings.swift +++ b/Sources/TcaHelpers/RuntimeWarnings.swift @@ -33,7 +33,7 @@ func runtimeWarning( _ args: @autoclosure () -> [CVarArg] = [] ) { #if DEBUG && canImport(os) - if !_XCTIsTesting { + if !isTesting { unsafeBitCast( os_log as (OSLogType, UnsafeRawPointer, OSLog, StaticString, CVarArg...) -> Void, to: ((OSLogType, UnsafeRawPointer, OSLog, StaticString, [CVarArg]) -> Void).self From 8f7e07fd54db6a9aa596e8b5cf06805ba287a756 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 15 Aug 2024 13:20:38 -0400 Subject: [PATCH 3/6] Fix XCTFail -> reportIssue --- Sources/ServerRouter/Router.swift | 2 +- Sources/ServerTestHelpers/UnimplementedEitherIO.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/ServerRouter/Router.swift b/Sources/ServerRouter/Router.swift index 66ddb01a..67eb1006 100644 --- a/Sources/ServerRouter/Router.swift +++ b/Sources/ServerRouter/Router.swift @@ -327,7 +327,7 @@ public struct ServerRouter: ParserPrinter { encoder: jsonEncoder, secrets: ["SECRET_DEADBEEF"], sha256: { - XCTFail("Unimplemented: \(Self.self).sha256") + reportIssue("Unimplemented: \(Self.self).sha256") return $0 } ) diff --git a/Sources/ServerTestHelpers/UnimplementedEitherIO.swift b/Sources/ServerTestHelpers/UnimplementedEitherIO.swift index ecb74034..d351579b 100644 --- a/Sources/ServerTestHelpers/UnimplementedEitherIO.swift +++ b/Sources/ServerTestHelpers/UnimplementedEitherIO.swift @@ -7,7 +7,7 @@ let message = "Unimplemented\(message.isEmpty ? "" : ": \(message)")" return .init( run: .init { - XCTFail(message) + reportIssue(message) return .left(AnError(message: message)) }) } From 4532cdedf77cd675756fdddc77d38dc47fb1f638 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 15 Aug 2024 13:21:04 -0400 Subject: [PATCH 4/6] Sendable fix --- Sources/GameCore/CubeSceneViewState.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/GameCore/CubeSceneViewState.swift b/Sources/GameCore/CubeSceneViewState.swift index ea46084e..c56e47e2 100644 --- a/Sources/GameCore/CubeSceneViewState.swift +++ b/Sources/GameCore/CubeSceneViewState.swift @@ -11,7 +11,7 @@ extension Game.State { extension Game.Action.AllCasePaths { public var cubeScene: AnyCasePath { AnyCasePath( - embed: CubeSceneView.ViewAction.to(gameAction:), + embed: { CubeSceneView.ViewAction.to(gameAction: $0) }, extract: { gameAction in switch gameAction { case let .doubleTap(index: index): From abd5b67a263f449d63529b0fb1dd7b97607b4bb3 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 15 Aug 2024 13:31:42 -0400 Subject: [PATCH 5/6] Revert "wip" This reverts commit 73bef30e31079bc80353994bd31e04ab8336a984. --- .../xcshareddata/swiftpm/Package.resolved | 2 +- Sources/AppFeature/AppView.swift | 19 +++++++------------ Sources/HomeFeature/Home.swift | 6 +++--- .../OnboardingFeature/OnboardingView.swift | 8 +++----- Sources/UserDefaultsClient/Interface.swift | 13 ------------- 5 files changed, 14 insertions(+), 34 deletions(-) diff --git a/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index c0004160..f22cbe57 100644 --- a/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/App/isowords.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -129,7 +129,7 @@ { "identity" : "swift-crypto", "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-crypto", + "location" : "https://github.com/apple/swift-crypto.git", "state" : { "revision" : "ddb07e896a2a8af79512543b1c7eb9797f8898a5", "version" : "1.1.7" diff --git a/Sources/AppFeature/AppView.swift b/Sources/AppFeature/AppView.swift index ff865e86..dcf417e4 100644 --- a/Sources/AppFeature/AppView.swift +++ b/Sources/AppFeature/AppView.swift @@ -22,9 +22,7 @@ public struct AppReducer { public struct State: Equatable { public var appDelegate: AppDelegateReducer.State @Presents public var destination: Destination.State? - @SharedReader(.hasShownFirstLaunchOnboarding) var hasShownFirstLaunchOnboarding public var home: Home.State - @Shared(.installationTime) var installationTime public init( appDelegate: AppDelegateReducer.State = AppDelegateReducer.State(), @@ -55,7 +53,7 @@ public struct AppReducer { @Dependency(\.dictionary.randomCubes) var randomCubes @Dependency(\.remoteNotifications) var remoteNotifications @Dependency(\.serverConfig.refresh) var refreshServerConfig - //@Dependency(\.userDefaults) var userDefaults + @Dependency(\.userDefaults) var userDefaults @Dependency(\.userNotifications) var userNotifications public init() {} @@ -102,20 +100,17 @@ public struct AppReducer { Reduce { state, action in switch action { case .appDelegate(.didFinishLaunching): - if !state.hasShownFirstLaunchOnboarding { + if !self.userDefaults.hasShownFirstLaunchOnboarding { state.destination = .onboarding(Onboarding.State(presentationStyle: .firstLaunch)) } - if state.installationTime <= 0 { - state.installationTime = now.timeIntervalSinceReferenceDate - } return .run { send in async let migrate: Void = self.migrate() -// if self.userDefaults.installationTime <= 0 { -// await self.userDefaults.setInstallationTime( -// self.now.timeIntervalSinceReferenceDate -// ) -// } + if self.userDefaults.installationTime <= 0 { + await self.userDefaults.setInstallationTime( + self.now.timeIntervalSinceReferenceDate + ) + } await send( .savedGamesLoaded( Result { try await self.fileClient.loadSavedGames() } diff --git a/Sources/HomeFeature/Home.swift b/Sources/HomeFeature/Home.swift index d373f00e..ad59735b 100644 --- a/Sources/HomeFeature/Home.swift +++ b/Sources/HomeFeature/Home.swift @@ -38,7 +38,6 @@ public struct Home { @Presents public var destination: Destination.State? public var hasChangelog: Bool public var hasPastTurnBasedGames: Bool - @SharedReader(.installationTime) var installationTime @Presents public var nagBanner: NagBanner.State? public var savedGames: SavedGamesState { didSet { @@ -126,7 +125,7 @@ public struct Home { @Dependency(\.audioPlayer.play) var playSound @Dependency(\.serverConfig) var serverConfig @Dependency(\.timeZone) var timeZone - //@Dependency(\.userDefaults) var userDefaults + @Dependency(\.userDefaults) var userDefaults public init() {} @@ -208,7 +207,8 @@ public struct Home { case let .authenticationResponse(currentPlayerEnvelope): let now = self.now.timeIntervalSinceReferenceDate - let itsNagTime = Int(now - state.installationTime) + let itsNagTime = + Int(now - self.userDefaults.installationTime) >= self.serverConfig.config().upgradeInterstitial.nagBannerAfterInstallDuration let isFullGamePurchased = currentPlayerEnvelope.appleReceipt?.receipt.originalPurchaseDate != nil diff --git a/Sources/OnboardingFeature/OnboardingView.swift b/Sources/OnboardingFeature/OnboardingView.swift index d46e4391..b10ada14 100644 --- a/Sources/OnboardingFeature/OnboardingView.swift +++ b/Sources/OnboardingFeature/OnboardingView.swift @@ -20,7 +20,6 @@ public struct Onboarding { public var game: Game.State public var presentationStyle: PresentationStyle public var step: Step - @Shared(.hasShownFirstLaunchOnboarding) var hasShownFirstLaunchOnboarding public init( alert: AlertState? = nil, @@ -182,7 +181,7 @@ public struct Onboarding { @Dependency(\.dictionary) var dictionary @Dependency(\.feedbackGenerator) var feedbackGenerator @Dependency(\.mainQueue) var mainQueue - //@Dependency(\.userDefaults) var userDefaults + @Dependency(\.userDefaults) var userDefaults @Dependency(\.userSettings) var userSettings public init() {} @@ -205,9 +204,8 @@ public struct Onboarding { return .none case .delegate(.getStarted): - state.hasShownFirstLaunchOnboarding = true return .run { _ in - //await self.userDefaults.setHasShownFirstLaunchOnboarding(true) + await self.userDefaults.setHasShownFirstLaunchOnboarding(true) await self.audioPlayer.stop(.onboardingBgMusic) Task.cancel(id: CancelID.delayedNextStep) } @@ -270,7 +268,7 @@ public struct Onboarding { return .run { _ in await self.audioPlayer.play(.uiSfxTap) } case .skipButtonTapped: - guard !state.hasShownFirstLaunchOnboarding else { + guard !self.userDefaults.hasShownFirstLaunchOnboarding else { return .run { send in await send(.delegate(.getStarted), animation: .default) await self.audioPlayer.play(.uiSfxTap) diff --git a/Sources/UserDefaultsClient/Interface.swift b/Sources/UserDefaultsClient/Interface.swift index 45e7b3af..5ad37db0 100644 --- a/Sources/UserDefaultsClient/Interface.swift +++ b/Sources/UserDefaultsClient/Interface.swift @@ -47,16 +47,3 @@ public struct UserDefaultsClient { let hasShownFirstLaunchOnboardingKey = "hasShownFirstLaunchOnboardingKey" let installationTimeKey = "installationTimeKey" let multiplayerOpensCount = "multiplayerOpensCount" - -import ComposableArchitecture - -extension PersistenceKey where Self == PersistenceKeyDefault> { - public static var hasShownFirstLaunchOnboarding: Self { - PersistenceKeyDefault(.appStorage("hasShownFirstLaunchOnboardingKey"), false) - } -} -extension PersistenceKey where Self == PersistenceKeyDefault> { - public static var installationTime: Self { - PersistenceKeyDefault(.appStorage("installationTimeKey"), 0.0) - } -} From 03d4ca6b2c0fddc5e6d69475520868e194bdd118 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 15 Aug 2024 13:33:21 -0400 Subject: [PATCH 6/6] Use expectNoDifference. --- Package.swift | 2 +- Tests/AppFeatureTests/PersistenceTests.swift | 6 +- .../RemoteNotificationsTests.swift | 4 +- Tests/AppFeatureTests/TurnBasedTests.swift | 12 +- .../UserNotificationsTests.swift | 2 +- .../ClientModelsTests/GameContextTests.swift | 14 +- .../TurnBasedMatchDataTests.swift | 2 +- .../DailyChallengeFeatureTests.swift | 2 +- .../DailyChallengeMiddlewareTests.swift | 4 +- .../DailyChallengeReportsTests.swift | 8 +- .../DatabaseLiveTests/DatabaseLiveTests.swift | 132 +++++++++--------- .../FetchAppleReceiptTests.swift | 2 +- .../FetchDailyChallengeReportTests.swift | 2 +- .../FetchDailyChallengeResultsTests.swift | 6 +- .../FetchLeaderboardSummaryTests.swift | 4 +- .../FetchRankedLeaderboardScoresTests.swift | 10 +- .../FetchVocabLeaderboardTests.swift | 4 +- .../FetchWeekInReviewTests.swift | 4 +- Tests/GameCoreTests/GameCoreTests.swift | 2 +- Tests/GameFeatureTests/GameFeatureTests.swift | 2 +- .../GameOverFeatureTests.swift | 12 +- .../LeaderboardFeatureTests.swift | 2 +- .../LeaderboardMiddlewareTests.swift | 6 +- .../OnboardingFeatureTests.swift | 16 +-- .../PushMiddlewareTests.swift | 22 +-- Tests/RunnerTests/RunnerTests.swift | 4 +- Tests/ServerRouterTests/ConfigTests.swift | 4 +- .../ServerRouterTests/ServerRouterTests.swift | 54 +++---- .../SettingsFeatureTests.swift | 18 +-- .../SettingsPurchaseTests.swift | 6 +- .../AppleVerifyReceiptResponseTests.swift | 4 +- .../BackwardsCompatibilityTestHelpers.swift | 2 +- Tests/SharedModelsTests/CodabilityTests.swift | 2 +- .../CompletedGameTests.swift | 18 +-- Tests/SharedModelsTests/CubeTests.swift | 110 +++++++-------- Tests/SharedModelsTests/MovesTests.swift | 4 +- Tests/SharedModelsTests/ThreeTests.swift | 2 +- .../SharedModelsTests/VerificationTests.swift | 8 +- .../ShowUpgradeInterstitialEffectTests.swift | 2 +- .../UpgradeInterstitialFeatureTests.swift | 2 +- .../VerifyReceiptMiddlewareTests.swift | 12 +- .../VocabMiddlewareTests.swift | 2 +- 42 files changed, 268 insertions(+), 268 deletions(-) diff --git a/Package.swift b/Package.swift index bbfc13b6..cf8c8705 100644 --- a/Package.swift +++ b/Package.swift @@ -29,7 +29,7 @@ var package = Package( .package(url: "https://github.com/apple/swift-crypto", from: "1.1.6"), .package(url: "https://github.com/pointfreeco/swift-case-paths", from: "1.1.0"), .package(url: "https://github.com/pointfreeco/swift-composable-architecture", from: "1.12.0"), - .package(url: "https://github.com/pointfreeco/swift-custom-dump", from: "1.0.0"), + .package(url: "https://github.com/pointfreeco/swift-custom-dump", from: "1.3.3"), .package(url: "https://github.com/pointfreeco/swift-dependencies", from: "1.1.0"), .package(url: "https://github.com/pointfreeco/swift-gen", from: "0.3.0"), .package(url: "https://github.com/pointfreeco/swift-parsing", from: "0.12.0"), diff --git a/Tests/AppFeatureTests/PersistenceTests.swift b/Tests/AppFeatureTests/PersistenceTests.swift index d798225c..5fe41fff 100644 --- a/Tests/AppFeatureTests/PersistenceTests.swift +++ b/Tests/AppFeatureTests/PersistenceTests.swift @@ -135,8 +135,8 @@ class PersistenceTests: XCTestCase { $0.destination = nil } try await saves.withValue { - XCTAssertNoDifference(2, $0.count) - XCTAssertNoDifference( + expectNoDifference(2, $0.count) + expectNoDifference( try JSONDecoder().decode(SavedGamesState.self, from: $0.last!), store.state.home.savedGames ) @@ -203,7 +203,7 @@ class PersistenceTests: XCTestCase { await didArchiveGame.withValue { XCTAssert($0) } try await saves.withValue { - XCTAssertNoDifference($0, [try JSONEncoder().encode(SavedGamesState())]) + expectNoDifference($0, [try JSONEncoder().encode(SavedGamesState())]) } } diff --git a/Tests/AppFeatureTests/RemoteNotificationsTests.swift b/Tests/AppFeatureTests/RemoteNotificationsTests.swift index 28e89267..a02283ce 100644 --- a/Tests/AppFeatureTests/RemoteNotificationsTests.swift +++ b/Tests/AppFeatureTests/RemoteNotificationsTests.swift @@ -37,7 +37,7 @@ class RemoteNotificationsTests: XCTestCase { // Register remote notifications on .didFinishLaunching let task = await store.send(.appDelegate(.didFinishLaunching)) - await requestedAuthorizationOptions.withValue { XCTAssertNoDifference($0, [.alert, .sound]) } + await requestedAuthorizationOptions.withValue { expectNoDifference($0, [.alert, .sound]) } await didRegisterForRemoteNotifications.withValue { XCTAssertTrue($0) } store.dependencies.apiClient.override( @@ -142,7 +142,7 @@ class RemoteNotificationsTests: XCTestCase { ) ) await store.receive(\.appDelegate.userNotifications.willPresentNotification) - XCTAssertNoDifference(notificationPresentationOptions, .banner) + expectNoDifference(notificationPresentationOptions, .banner) delegate.continuation.yield( .didReceiveResponse(response, completionHandler: { didReceiveResponseCompletionHandler() }) diff --git a/Tests/AppFeatureTests/TurnBasedTests.swift b/Tests/AppFeatureTests/TurnBasedTests.swift index a70fe3dc..8e58e5fe 100644 --- a/Tests/AppFeatureTests/TurnBasedTests.swift +++ b/Tests/AppFeatureTests/TurnBasedTests.swift @@ -151,8 +151,8 @@ class TurnBasedTests: XCTestCase { } store.dependencies.userDefaults.override(integer: 0, forKey: "multiplayerOpensCount") store.dependencies.userDefaults.setInteger = { int, key in - XCTAssertNoDifference(int, 1) - XCTAssertNoDifference(key, "multiplayerOpensCount") + expectNoDifference(int, 1) + expectNoDifference(key, "multiplayerOpensCount") } await store.receive(\.home.activeMatchesResponse.success) @@ -239,7 +239,7 @@ class TurnBasedTests: XCTestCase { } try await didEndTurnWithRequest.withValue { let game = try XCTUnwrap(store.state.destination?.game) - XCTAssertNoDifference( + expectNoDifference( $0, .init( for: newMatch.matchId, @@ -639,7 +639,7 @@ class TurnBasedTests: XCTestCase { try await didEndTurnWithRequest.withValue { let game = try XCTUnwrap(store.state.destination?.game) - XCTAssertNoDifference( + expectNoDifference( $0, .init( for: match.matchId, @@ -719,7 +719,7 @@ class TurnBasedTests: XCTestCase { ) { $0.destination = nil } - await didRematchWithId.withValue { XCTAssertNoDifference($0, match.matchId) } + await didRematchWithId.withValue { expectNoDifference($0, match.matchId) } await self.mainQueue.advance() await store.receive(\.gameCenter.rematchResponse.success) { @@ -800,7 +800,7 @@ class TurnBasedTests: XCTestCase { await self.mainQueue.advance() await notificationBannerRequest.withValue { - XCTAssertNoDifference( + expectNoDifference( $0, GameCenterClient.NotificationBannerRequest( title: "Blob played ABC!", diff --git a/Tests/AppFeatureTests/UserNotificationsTests.swift b/Tests/AppFeatureTests/UserNotificationsTests.swift index 8ecc5b50..7ff671f6 100644 --- a/Tests/AppFeatureTests/UserNotificationsTests.swift +++ b/Tests/AppFeatureTests/UserNotificationsTests.swift @@ -72,7 +72,7 @@ class UserNotificationsTests: XCTestCase { await store.receive(\.appDelegate.userNotifications.willPresentNotification) - XCTAssertNoDifference(didCallbackWithOptions, .banner) + expectNoDifference(didCallbackWithOptions, .banner) await task.cancel() } diff --git a/Tests/ClientModelsTests/GameContextTests.swift b/Tests/ClientModelsTests/GameContextTests.swift index d13a2dab..bbd0b97a 100644 --- a/Tests/ClientModelsTests/GameContextTests.swift +++ b/Tests/ClientModelsTests/GameContextTests.swift @@ -10,7 +10,7 @@ class GameContextTests: XCTestCase { let jsonData = try jsonEncoder.encode(context) let json = String(decoding: jsonData, as: UTF8.self) - XCTAssertNoDifference( + expectNoDifference( json, """ { @@ -21,7 +21,7 @@ class GameContextTests: XCTestCase { let decodedContext = try JSONDecoder().decode(GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, context ) @@ -32,7 +32,7 @@ class GameContextTests: XCTestCase { let jsonData = try jsonEncoder.encode(context) let json = String(decoding: jsonData, as: UTF8.self) - XCTAssertNoDifference( + expectNoDifference( json, """ { @@ -43,7 +43,7 @@ class GameContextTests: XCTestCase { let decodedContext = try JSONDecoder().decode(GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, context ) @@ -54,7 +54,7 @@ class GameContextTests: XCTestCase { let jsonData = try jsonEncoder.encode(context) let json = String(decoding: jsonData, as: UTF8.self) - XCTAssertNoDifference( + expectNoDifference( json, """ { @@ -65,7 +65,7 @@ class GameContextTests: XCTestCase { let decodedContext = try JSONDecoder().decode(GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, context ) @@ -82,7 +82,7 @@ class GameContextTests: XCTestCase { let jsonData = Data("{}".utf8) let decodedContext = try JSONDecoder().decode(GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, .solo ) diff --git a/Tests/ClientModelsTests/TurnBasedMatchDataTests.swift b/Tests/ClientModelsTests/TurnBasedMatchDataTests.swift index 71819be1..4009f50c 100644 --- a/Tests/ClientModelsTests/TurnBasedMatchDataTests.swift +++ b/Tests/ClientModelsTests/TurnBasedMatchDataTests.swift @@ -37,7 +37,7 @@ class TurnBasedMatchDataTests: XCTestCase { from: encodedTurnBasedMatchData ) - XCTAssertNoDifference(decodedTurnBasedMatchData, turnBasedMatchData) + expectNoDifference(decodedTurnBasedMatchData, turnBasedMatchData) assertSnapshot(matching: turnBasedMatchData, as: .json) } diff --git a/Tests/DailyChallengeFeatureTests/DailyChallengeFeatureTests.swift b/Tests/DailyChallengeFeatureTests/DailyChallengeFeatureTests.swift index b76efd52..6a7f3b23 100644 --- a/Tests/DailyChallengeFeatureTests/DailyChallengeFeatureTests.swift +++ b/Tests/DailyChallengeFeatureTests/DailyChallengeFeatureTests.swift @@ -183,7 +183,7 @@ class DailyChallengeFeatureTests: XCTestCase { $0.destination = nil } - await didRegisterForRemoteNotifications.withValue { XCTAssertNoDifference($0, true) } + await didRegisterForRemoteNotifications.withValue { expectNoDifference($0, true) } } @MainActor diff --git a/Tests/DailyChallengeMiddlewareTests/DailyChallengeMiddlewareTests.swift b/Tests/DailyChallengeMiddlewareTests/DailyChallengeMiddlewareTests.swift index 0b39d233..fb1d3f21 100644 --- a/Tests/DailyChallengeMiddlewareTests/DailyChallengeMiddlewareTests.swift +++ b/Tests/DailyChallengeMiddlewareTests/DailyChallengeMiddlewareTests.swift @@ -303,7 +303,7 @@ class DailyChallengeMiddlewareTests: XCTestCase { """ } - XCTAssertNoDifference( + expectNoDifference( submittedScore, DatabaseClient.SubmitLeaderboardScore( dailyChallengeId: .init(rawValue: .dailyChallengeId), @@ -317,7 +317,7 @@ class DailyChallengeMiddlewareTests: XCTestCase { words: [.init(moveIndex: 0, score: 27, word: "CAB")] ) ) - XCTAssertNoDifference( + expectNoDifference( dailyChallengeRankRequest, .init( dailyChallengeId: .init(rawValue: .dailyChallengeId), diff --git a/Tests/DailyChallengeReportsTests/DailyChallengeReportsTests.swift b/Tests/DailyChallengeReportsTests/DailyChallengeReportsTests.swift index cd3e9436..1aab22ac 100644 --- a/Tests/DailyChallengeReportsTests/DailyChallengeReportsTests.swift +++ b/Tests/DailyChallengeReportsTests/DailyChallengeReportsTests.swift @@ -63,11 +63,11 @@ class DailyChallengeReportsTests: XCTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference(pushes.count, 3) + expectNoDifference(pushes.count, 3) let pushMap = Dictionary(grouping: pushes, by: \.targetArn) - XCTAssertNoDifference( + expectNoDifference( try JSONDecoder().decode( ApsPayload.self, from: JSONEncoder().encode( @@ -90,7 +90,7 @@ class DailyChallengeReportsTests: XCTestCase { content: .dailyChallengeReport ) ) - XCTAssertNoDifference( + expectNoDifference( try JSONDecoder().decode( ApsPayload.self, from: JSONEncoder().encode( @@ -116,7 +116,7 @@ class DailyChallengeReportsTests: XCTestCase { content: .dailyChallengeReport ) ) - XCTAssertNoDifference( + expectNoDifference( try JSONDecoder().decode( ApsPayload.self, from: JSONEncoder().encode( diff --git a/Tests/DatabaseLiveTests/DatabaseLiveTests.swift b/Tests/DatabaseLiveTests/DatabaseLiveTests.swift index 30590745..996ab69b 100644 --- a/Tests/DatabaseLiveTests/DatabaseLiveTests.swift +++ b/Tests/DatabaseLiveTests/DatabaseLiveTests.swift @@ -27,36 +27,36 @@ class DatabaseLiveTests: DatabaseTestCase { / 86_400 ) - XCTAssertNoDifference(createdChallenge.gameMode, .timed) - XCTAssertNoDifference(createdChallenge.gameNumber, gameNumber) - XCTAssertNoDifference( + expectNoDifference(createdChallenge.gameMode, .timed) + expectNoDifference(createdChallenge.gameNumber, gameNumber) + expectNoDifference( createdChallenge.id, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!)) - XCTAssertNoDifference(createdChallenge.language, .en) - XCTAssertNoDifference(createdChallenge.puzzle, .mock) + expectNoDifference(createdChallenge.language, .en) + expectNoDifference(createdChallenge.puzzle, .mock) let fetchedChallenge = try self.database.fetchDailyChallengeById(createdChallenge.id) .run.perform().unwrap() - XCTAssertNoDifference(fetchedChallenge.gameMode, .timed) - XCTAssertNoDifference(fetchedChallenge.gameNumber, gameNumber) - XCTAssertNoDifference( + expectNoDifference(fetchedChallenge.gameMode, .timed) + expectNoDifference(fetchedChallenge.gameNumber, gameNumber) + expectNoDifference( fetchedChallenge.id, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!)) - XCTAssertNoDifference(fetchedChallenge.language, .en) - XCTAssertNoDifference(fetchedChallenge.puzzle, .mock) + expectNoDifference(fetchedChallenge.language, .en) + expectNoDifference(fetchedChallenge.puzzle, .mock) let todaysChallenges = try self.database.fetchTodaysDailyChallenges(.en) .run.perform().unwrap() - XCTAssertNoDifference(todaysChallenges.count, 1) - XCTAssertNoDifference(todaysChallenges[0].gameMode, .timed) - XCTAssertNoDifference(todaysChallenges[0].gameNumber, gameNumber) - XCTAssertNoDifference( + expectNoDifference(todaysChallenges.count, 1) + expectNoDifference(todaysChallenges[0].gameMode, .timed) + expectNoDifference(todaysChallenges[0].gameNumber, gameNumber) + expectNoDifference( todaysChallenges[0].id, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!)) - XCTAssertNoDifference(todaysChallenges[0].language, .en) - XCTAssertNoDifference(todaysChallenges[0].puzzle, .mock) + expectNoDifference(todaysChallenges[0].language, .en) + expectNoDifference(todaysChallenges[0].puzzle, .mock) } func testSubmitDailyChallengeScore() throws { @@ -156,7 +156,7 @@ class DatabaseLiveTests: DatabaseTestCase { return } - XCTAssertNoDifference( + expectNoDifference( words, [ Word( @@ -171,11 +171,11 @@ class DatabaseLiveTests: DatabaseTestCase { ] ) - XCTAssertNoDifference(score.gameMode, .timed) - XCTAssertNoDifference( + expectNoDifference(score.gameMode, .timed) + expectNoDifference( score.id, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000003")!)) - XCTAssertNoDifference(score.language, .en) - XCTAssertNoDifference( + expectNoDifference(score.language, .en) + expectNoDifference( score.moves, [ .init( @@ -191,9 +191,9 @@ class DatabaseLiveTests: DatabaseTestCase { ) ] ) - XCTAssertNoDifference(score.playerId, createdPlayer.id) - XCTAssertNoDifference(score.puzzle, .mock) - XCTAssertNoDifference(score.score, 10) + expectNoDifference(score.playerId, createdPlayer.id) + expectNoDifference(score.puzzle, .mock) + expectNoDifference(score.score, 10) } func testSubmitLeaderboardScore_Duplicate() throws { @@ -246,7 +246,7 @@ class DatabaseLiveTests: DatabaseTestCase { return } - XCTAssertNoDifference( + expectNoDifference( words, [ Word( @@ -261,11 +261,11 @@ class DatabaseLiveTests: DatabaseTestCase { ] ) - XCTAssertNoDifference(score1.gameMode, .timed) - XCTAssertNoDifference( + expectNoDifference(score1.gameMode, .timed) + expectNoDifference( score1.id, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000003")!)) - XCTAssertNoDifference(score1.language, .en) - XCTAssertNoDifference( + expectNoDifference(score1.language, .en) + expectNoDifference( score1.moves, [ .init( @@ -281,27 +281,27 @@ class DatabaseLiveTests: DatabaseTestCase { ) ] ) - XCTAssertNoDifference(score1.playerId, createdPlayer.id) - XCTAssertNoDifference(score1.puzzle, .mock) - XCTAssertNoDifference(score1.score, 10) - XCTAssertNoDifference(score2, score1) + expectNoDifference(score1.playerId, createdPlayer.id) + expectNoDifference(score1.puzzle, .mock) + expectNoDifference(score1.score, 10) + expectNoDifference(score2, score1) } func testInsertPlayer() throws { let createdPlayer = try self.database.insertPlayer(.blob) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( createdPlayer.accessToken, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000002")!) ) - XCTAssertNoDifference( + expectNoDifference( createdPlayer.deviceId, .init(rawValue: UUID(uuidString: "deadbeef-dead-beef-dead-beefdeadbeef")!) ) - XCTAssertNoDifference(createdPlayer.displayName, "Blob") - XCTAssertNoDifference(createdPlayer.gameCenterLocalPlayerId, "_id:blob") - XCTAssertNoDifference( + expectNoDifference(createdPlayer.displayName, "Blob") + expectNoDifference(createdPlayer.gameCenterLocalPlayerId, "_id:blob") + expectNoDifference( createdPlayer.id, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!) ) @@ -321,9 +321,9 @@ class DatabaseLiveTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference(createdPlayer, fetchedPlayerByAccessToken) - XCTAssertNoDifference(createdPlayer, fetchedPlayerByDeviceId) - XCTAssertNoDifference(createdPlayer, fetchedPlayerByGameCenterId) + expectNoDifference(createdPlayer, fetchedPlayerByAccessToken) + expectNoDifference(createdPlayer, fetchedPlayerByDeviceId) + expectNoDifference(createdPlayer, fetchedPlayerByGameCenterId) } func testUpdateAppleReceipt() throws { @@ -348,17 +348,17 @@ class DatabaseLiveTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( player.accessToken, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000002")!) ) - XCTAssertNoDifference( + expectNoDifference( player.deviceId, .init(rawValue: UUID(uuidString: "deadbeef-dead-beef-dead-beefdeadbeef")!) ) - XCTAssertNoDifference(player.displayName, "Blob Jr") - XCTAssertNoDifference(player.gameCenterLocalPlayerId, "_id:blob-jr") - XCTAssertNoDifference( + expectNoDifference(player.displayName, "Blob Jr") + expectNoDifference(player.gameCenterLocalPlayerId, "_id:blob-jr") + expectNoDifference( player.id, .init(rawValue: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!) ) @@ -416,7 +416,7 @@ class DatabaseLiveTests: DatabaseTestCase { .run.perform().unwrap() } - XCTAssertNoDifference( + expectNoDifference( results, [ .init(outOf: 4, rank: 3, score: 1_000), @@ -463,7 +463,7 @@ class DatabaseLiveTests: DatabaseTestCase { let sharedGame = try self.database.insertSharedGame(completedGame, createdPlayer) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( sharedGame, .init( code: sharedGame.code, @@ -480,7 +480,7 @@ class DatabaseLiveTests: DatabaseTestCase { let fetchedSharedGame = try self.database.fetchSharedGame(sharedGame.code) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( fetchedSharedGame, sharedGame ) @@ -524,7 +524,7 @@ class DatabaseLiveTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( response, .init( moveIndex: 0, @@ -573,7 +573,7 @@ class DatabaseLiveTests: DatabaseTestCase { return } - XCTAssertNoDifference( + expectNoDifference( tokens, [ PushToken( @@ -614,7 +614,7 @@ class DatabaseLiveTests: DatabaseTestCase { return } - XCTAssertNoDifference( + expectNoDifference( tokens, [ PushToken( @@ -635,8 +635,8 @@ class DatabaseLiveTests: DatabaseTestCase { var player = try self.database.insertPlayer(.blob) .run.perform().unwrap() - XCTAssertNoDifference(true, player.sendDailyChallengeReminder) - XCTAssertNoDifference(true, player.sendDailyChallengeSummary) + expectNoDifference(true, player.sendDailyChallengeReminder) + expectNoDifference(true, player.sendDailyChallengeSummary) try self.database .updatePushSetting(player.id, .dailyChallengeEndsSoon, false) @@ -645,8 +645,8 @@ class DatabaseLiveTests: DatabaseTestCase { player = try self.database.fetchPlayerByAccessToken(player.accessToken) .run.perform().unwrap().unsafelyUnwrapped - XCTAssertNoDifference(false, player.sendDailyChallengeReminder) - XCTAssertNoDifference(true, player.sendDailyChallengeSummary) + expectNoDifference(false, player.sendDailyChallengeReminder) + expectNoDifference(true, player.sendDailyChallengeSummary) try self.database .updatePushSetting(player.id, .dailyChallengeReport, false) @@ -655,8 +655,8 @@ class DatabaseLiveTests: DatabaseTestCase { player = try self.database.fetchPlayerByAccessToken(player.accessToken) .run.perform().unwrap().unsafelyUnwrapped - XCTAssertNoDifference(false, player.sendDailyChallengeReminder) - XCTAssertNoDifference(false, player.sendDailyChallengeSummary) + expectNoDifference(false, player.sendDailyChallengeReminder) + expectNoDifference(false, player.sendDailyChallengeSummary) } func testStartAndCompleteDailyChallenge() throws { @@ -686,7 +686,7 @@ class DatabaseLiveTests: DatabaseTestCase { var dailyChallengePlay = try self.database.startDailyChallenge(dailyChallenge.id, player.id) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( dailyChallengePlay, DailyChallengePlay( completedAt: nil, @@ -700,7 +700,7 @@ class DatabaseLiveTests: DatabaseTestCase { let activeDailyChallengeArns = try self.database.fetchActiveDailyChallengeArns() .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( activeDailyChallengeArns, [ DatabaseClient.DailyChallengeArn( @@ -711,7 +711,7 @@ class DatabaseLiveTests: DatabaseTestCase { dailyChallengePlay = try self.database.completeDailyChallenge(dailyChallenge.id, player.id) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( dailyChallengePlay, DailyChallengePlay( completedAt: dailyChallengePlay.completedAt, @@ -723,7 +723,7 @@ class DatabaseLiveTests: DatabaseTestCase { ) XCTAssertNotNil(dailyChallengePlay.completedAt) - XCTAssertNoDifference( + expectNoDifference( try self.database.fetchActiveDailyChallengeArns() .run.perform().unwrap(), [] @@ -757,7 +757,7 @@ class DatabaseLiveTests: DatabaseTestCase { let dailyChallengePlay = try self.database.startDailyChallenge(dailyChallenge.id, player.id) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( dailyChallengePlay, DailyChallengePlay( completedAt: nil, @@ -768,7 +768,7 @@ class DatabaseLiveTests: DatabaseTestCase { ) ) - XCTAssertNoDifference( + expectNoDifference( try self.database.fetchActiveDailyChallengeArns() .run.perform().unwrap(), [] @@ -779,12 +779,12 @@ class DatabaseLiveTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( result, .init(outOf: 0, rank: nil, score: nil, started: true) ) - XCTAssertNoDifference( + expectNoDifference( try self.database.fetchActiveDailyChallengeArns() .run.perform().unwrap(), [] diff --git a/Tests/DatabaseLiveTests/FetchAppleReceiptTests.swift b/Tests/DatabaseLiveTests/FetchAppleReceiptTests.swift index 5b92cf45..56a92a9d 100644 --- a/Tests/DatabaseLiveTests/FetchAppleReceiptTests.swift +++ b/Tests/DatabaseLiveTests/FetchAppleReceiptTests.swift @@ -20,7 +20,7 @@ class FetchAppleReceiptTests: DatabaseTestCase { .run.perform().unwrap() ) - XCTAssertNoDifference( + expectNoDifference( receipt, .init( createdAt: receipt.createdAt, diff --git a/Tests/DatabaseLiveTests/FetchDailyChallengeReportTests.swift b/Tests/DatabaseLiveTests/FetchDailyChallengeReportTests.swift index 5a19c7fa..c2537b3c 100644 --- a/Tests/DatabaseLiveTests/FetchDailyChallengeReportTests.swift +++ b/Tests/DatabaseLiveTests/FetchDailyChallengeReportTests.swift @@ -83,7 +83,7 @@ class FetchDailyChallengeReportTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( report, [ .init( diff --git a/Tests/DatabaseLiveTests/FetchDailyChallengeResultsTests.swift b/Tests/DatabaseLiveTests/FetchDailyChallengeResultsTests.swift index f944e7a6..6e4c062c 100644 --- a/Tests/DatabaseLiveTests/FetchDailyChallengeResultsTests.swift +++ b/Tests/DatabaseLiveTests/FetchDailyChallengeResultsTests.swift @@ -12,7 +12,7 @@ class FetchDailyChallengeResultsTests: DatabaseTestCase { let player = try self.database.insertPlayer(.blob) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( try self.database.fetchDailyChallengeResults( .init(gameMode: .timed, gameNumber: 1, language: .en, playerId: player.id) ) @@ -92,7 +92,7 @@ class FetchDailyChallengeResultsTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( results, [ .init( @@ -161,7 +161,7 @@ class FetchDailyChallengeResultsTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( results, scores.enumerated() .map { idx, score in diff --git a/Tests/DatabaseLiveTests/FetchLeaderboardSummaryTests.swift b/Tests/DatabaseLiveTests/FetchLeaderboardSummaryTests.swift index 91d68f73..60774ac8 100644 --- a/Tests/DatabaseLiveTests/FetchLeaderboardSummaryTests.swift +++ b/Tests/DatabaseLiveTests/FetchLeaderboardSummaryTests.swift @@ -85,7 +85,7 @@ class FetchLeaderboardSummaryTests: DatabaseTestCase { } } - XCTAssertNoDifference( + expectNoDifference( summaries, [ .lastDay: [ @@ -184,7 +184,7 @@ class FetchLeaderboardSummaryTests: DatabaseTestCase { } } - XCTAssertNoDifference( + expectNoDifference( summaries, [ .lastDay: [ diff --git a/Tests/DatabaseLiveTests/FetchRankedLeaderboardScoresTests.swift b/Tests/DatabaseLiveTests/FetchRankedLeaderboardScoresTests.swift index b82f027a..ff54cde5 100644 --- a/Tests/DatabaseLiveTests/FetchRankedLeaderboardScoresTests.swift +++ b/Tests/DatabaseLiveTests/FetchRankedLeaderboardScoresTests.swift @@ -95,7 +95,7 @@ class FetchRankedLeaderboardScoresTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( lastDayScores, [ .init( @@ -120,7 +120,7 @@ class FetchRankedLeaderboardScoresTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( lastWeekScores, [ .init( @@ -145,7 +145,7 @@ class FetchRankedLeaderboardScoresTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( allTimeScores, [ .init( @@ -228,7 +228,7 @@ class FetchRankedLeaderboardScoresTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( scores, [ .init( @@ -275,7 +275,7 @@ class FetchRankedLeaderboardScoresTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( entries, [ .init( diff --git a/Tests/DatabaseLiveTests/FetchVocabLeaderboardTests.swift b/Tests/DatabaseLiveTests/FetchVocabLeaderboardTests.swift index 2c5c5e4c..ef43835a 100644 --- a/Tests/DatabaseLiveTests/FetchVocabLeaderboardTests.swift +++ b/Tests/DatabaseLiveTests/FetchVocabLeaderboardTests.swift @@ -79,7 +79,7 @@ class FetchVocabLeaderboardTests: DatabaseTestCase { ) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( entriesSortedByScore, [ .init( @@ -144,6 +144,6 @@ class FetchVocabLeaderboardTests: DatabaseTestCase { let scores = try self.database.fetchVocabLeaderboard(.en, lastPlayer, .allTime) .run.perform().unwrap() - XCTAssertNoDifference(scores.count, 110) + expectNoDifference(scores.count, 110) } } diff --git a/Tests/DatabaseLiveTests/FetchWeekInReviewTests.swift b/Tests/DatabaseLiveTests/FetchWeekInReviewTests.swift index 35377d6b..f3f36f7d 100644 --- a/Tests/DatabaseLiveTests/FetchWeekInReviewTests.swift +++ b/Tests/DatabaseLiveTests/FetchWeekInReviewTests.swift @@ -94,7 +94,7 @@ class FetchWeekInReviewTests: DatabaseTestCase { let ranks = try self.database.fetchLeaderboardWeeklyRanks(.en, lastPlayer) .run.perform().unwrap() - XCTAssertNoDifference( + expectNoDifference( [ .init(gameMode: .timed, outOf: 95, rank: 95), .init(gameMode: .unlimited, outOf: 98, rank: 1), @@ -104,6 +104,6 @@ class FetchWeekInReviewTests: DatabaseTestCase { let word = try self.database.fetchLeaderboardWeeklyWord(.en, lastPlayer) .run.perform().unwrap() - XCTAssertNoDifference(word, .init(letters: "DOGGO", score: 11000)) + expectNoDifference(word, .init(letters: "DOGGO", score: 11000)) } } diff --git a/Tests/GameCoreTests/GameCoreTests.swift b/Tests/GameCoreTests/GameCoreTests.swift index 1990d7f4..bebb534a 100644 --- a/Tests/GameCoreTests/GameCoreTests.swift +++ b/Tests/GameCoreTests/GameCoreTests.swift @@ -63,7 +63,7 @@ class GameCoreTests: XCTestCase { ) } - await didEndMatchInTurn.withValue { XCTAssertNoDifference($0, true) } + await didEndMatchInTurn.withValue { expectNoDifference($0, true) } await store.finish() } } diff --git a/Tests/GameFeatureTests/GameFeatureTests.swift b/Tests/GameFeatureTests/GameFeatureTests.swift index f97082e5..6f4893fa 100644 --- a/Tests/GameFeatureTests/GameFeatureTests.swift +++ b/Tests/GameFeatureTests/GameFeatureTests.swift @@ -219,7 +219,7 @@ class GameFeatureTests: XCTestCase { let roundTrippedGame = Game.State( inProgressGame: InProgressGame(gameState: game) ) - XCTAssertNoDifference( + expectNoDifference( game, roundTrippedGame ) diff --git a/Tests/GameOverFeatureTests/GameOverFeatureTests.swift b/Tests/GameOverFeatureTests/GameOverFeatureTests.swift index 3b843628..2e519431 100644 --- a/Tests/GameOverFeatureTests/GameOverFeatureTests.swift +++ b/Tests/GameOverFeatureTests/GameOverFeatureTests.swift @@ -291,8 +291,8 @@ class GameOverFeatureTests: XCTestCase { // Assert that the first time game over appears we do not request review await store.send(.closeButtonTapped) await mainRunLoop.advance() - await requestReviewCount.withValue { XCTAssertNoDifference($0, 0) } - await lastReviewRequestTimeIntervalSet.withValue { XCTAssertNoDifference($0, nil) } + await requestReviewCount.withValue { expectNoDifference($0, 0) } + await lastReviewRequestTimeIntervalSet.withValue { expectNoDifference($0, nil) } // Assert that once the player plays enough games then a review request is made store.dependencies.database.fetchStats = { @@ -306,14 +306,14 @@ class GameOverFeatureTests: XCTestCase { ) } await store.send(.closeButtonTapped).finish() - await requestReviewCount.withValue { XCTAssertNoDifference($0, 1) } - await lastReviewRequestTimeIntervalSet.withValue { XCTAssertNoDifference($0, 0) } + await requestReviewCount.withValue { expectNoDifference($0, 1) } + await lastReviewRequestTimeIntervalSet.withValue { expectNoDifference($0, 0) } // Assert that when more than a week of time passes we again request review await mainRunLoop.advance(by: .seconds(60 * 60 * 24 * 7)) await store.send(.closeButtonTapped).finish() - await requestReviewCount.withValue { XCTAssertNoDifference($0, 2) } - await lastReviewRequestTimeIntervalSet.withValue { XCTAssertNoDifference($0, 60 * 60 * 24 * 7) } + await requestReviewCount.withValue { expectNoDifference($0, 2) } + await lastReviewRequestTimeIntervalSet.withValue { expectNoDifference($0, 60 * 60 * 24 * 7) } } @MainActor diff --git a/Tests/LeaderboardFeatureTests/LeaderboardFeatureTests.swift b/Tests/LeaderboardFeatureTests/LeaderboardFeatureTests.swift index 72dd966a..b6296782 100644 --- a/Tests/LeaderboardFeatureTests/LeaderboardFeatureTests.swift +++ b/Tests/LeaderboardFeatureTests/LeaderboardFeatureTests.swift @@ -93,7 +93,7 @@ class LeaderboardFeatureTests: XCTestCase { pure([vocabEntry]) } $0.database.fetchVocabLeaderboardWord = { - XCTAssertNoDifference($0, wordId) + expectNoDifference($0, wordId) return pure(fetchWordResponse) } } diff --git a/Tests/LeaderboardMiddlewareTests/LeaderboardMiddlewareTests.swift b/Tests/LeaderboardMiddlewareTests/LeaderboardMiddlewareTests.swift index 4a89c451..fe44802b 100644 --- a/Tests/LeaderboardMiddlewareTests/LeaderboardMiddlewareTests.swift +++ b/Tests/LeaderboardMiddlewareTests/LeaderboardMiddlewareTests.swift @@ -59,7 +59,7 @@ class LeaderboardMiddlewareTests: XCTestCase { var environment = ServerEnvironment.testValue environment.database.fetchPlayerByAccessToken = { _ in pure(player) } environment.database.submitLeaderboardScore = { score in - XCTAssertNoDifference( + expectNoDifference( score, .init( dailyChallengeId: nil, @@ -210,7 +210,7 @@ class LeaderboardMiddlewareTests: XCTestCase { } environment.database.fetchPlayerByAccessToken = { _ in pure(player) } environment.database.submitLeaderboardScore = { score in - XCTAssertNoDifference( + expectNoDifference( score, .init( dailyChallengeId: .init(rawValue: .dailyChallengeId), @@ -881,7 +881,7 @@ class LeaderboardMiddlewareTests: XCTestCase { """ } - XCTAssertNoDifference( + expectNoDifference( scores.sorted(by: { $0.playerId == player.id && $1.playerId != player.id }), [ .init( diff --git a/Tests/OnboardingFeatureTests/OnboardingFeatureTests.swift b/Tests/OnboardingFeatureTests/OnboardingFeatureTests.swift index fab0ceb7..60d63d56 100644 --- a/Tests/OnboardingFeatureTests/OnboardingFeatureTests.swift +++ b/Tests/OnboardingFeatureTests/OnboardingFeatureTests.swift @@ -30,8 +30,8 @@ class OnboardingFeatureTests: XCTestCase { $0.date = .runLoop($0.mainRunLoop) $0.mainQueue = self.mainQueue.eraseToAnyScheduler() $0.userDefaults.setBool = { value, key in - XCTAssertNoDifference(key, "hasShownFirstLaunchOnboardingKey") - XCTAssertNoDifference(value, true) + expectNoDifference(key, "hasShownFirstLaunchOnboardingKey") + expectNoDifference(value, true) await isFirstLaunchOnboardingKeySet.setValue(true) } } @@ -319,12 +319,12 @@ class OnboardingFeatureTests: XCTestCase { $0.dictionary.load = { _ in true } $0.mainQueue = self.mainQueue.eraseToAnyScheduler() $0.userDefaults.boolForKey = { key in - XCTAssertNoDifference(key, "hasShownFirstLaunchOnboardingKey") + expectNoDifference(key, "hasShownFirstLaunchOnboardingKey") return true } $0.userDefaults.setBool = { value, key in - XCTAssertNoDifference(key, "hasShownFirstLaunchOnboardingKey") - XCTAssertNoDifference(value, true) + expectNoDifference(key, "hasShownFirstLaunchOnboardingKey") + expectNoDifference(value, true) await isFirstLaunchOnboardingKeySet.setValue(true) } } @@ -354,12 +354,12 @@ class OnboardingFeatureTests: XCTestCase { $0.dictionary.load = { _ in true } $0.mainQueue = self.mainQueue.eraseToAnyScheduler() $0.userDefaults.boolForKey = { key in - XCTAssertNoDifference(key, "hasShownFirstLaunchOnboardingKey") + expectNoDifference(key, "hasShownFirstLaunchOnboardingKey") return false } $0.userDefaults.setBool = { value, key in - XCTAssertNoDifference(key, "hasShownFirstLaunchOnboardingKey") - XCTAssertNoDifference(value, true) + expectNoDifference(key, "hasShownFirstLaunchOnboardingKey") + expectNoDifference(value, true) await isFirstLaunchOnboardingKeySet.setValue(true) } } diff --git a/Tests/PushMiddlewareTests/PushMiddlewareTests.swift b/Tests/PushMiddlewareTests/PushMiddlewareTests.swift index bcf93989..9c0eb6a5 100644 --- a/Tests/PushMiddlewareTests/PushMiddlewareTests.swift +++ b/Tests/PushMiddlewareTests/PushMiddlewareTests.swift @@ -44,14 +44,14 @@ class PushMiddlewareTests: XCTestCase { let middleware = siteMiddleware(environment: environment) let result = middleware(connection(from: request)).perform() - XCTAssertNoDifference( + expectNoDifference( createPlatformRequest, .init( apnsToken: "deadbeef", platformApplicationArn: "arn:aws:sns:us-east-1:1234567890:app/APNS/deadbeef" ) ) - XCTAssertNoDifference( + expectNoDifference( insertPushTokenRequest, .init( arn: "arn:deadbeef", @@ -110,14 +110,14 @@ class PushMiddlewareTests: XCTestCase { let middleware = siteMiddleware(environment: environment) let result = middleware(connection(from: request)).perform() - XCTAssertNoDifference( + expectNoDifference( createPlatformRequest, .init( apnsToken: "deadbeef", platformApplicationArn: "arn:aws:sns:us-east-1:1234567890:app/APNS/deadbeef" ) ) - XCTAssertNoDifference( + expectNoDifference( insertPushTokenRequest, .init( arn: "arn:deadbeef", @@ -176,14 +176,14 @@ class PushMiddlewareTests: XCTestCase { let middleware = siteMiddleware(environment: environment) let result = middleware(connection(from: request)).perform() - XCTAssertNoDifference( + expectNoDifference( createPlatformRequest, .init( apnsToken: "deadbeef", platformApplicationArn: "arn:aws:sns:us-east-1:1234567890:app/APNS/deadbeef" ) ) - XCTAssertNoDifference( + expectNoDifference( insertPushTokenRequest, .init( arn: "arn:deadbeef", @@ -243,14 +243,14 @@ class PushMiddlewareTests: XCTestCase { let middleware = siteMiddleware(environment: environment) let result = middleware(connection(from: request)).perform() - XCTAssertNoDifference( + expectNoDifference( createPlatformRequest, .init( apnsToken: "deadbeef", platformApplicationArn: "arn:aws:sns:us-east-1:1234567890:app/APNS_SANDBOX/deadbeef" ) ) - XCTAssertNoDifference( + expectNoDifference( insertPushTokenRequest, .init( arn: "arn:deadbeef", @@ -310,9 +310,9 @@ class PushMiddlewareTests: XCTestCase { let middleware = siteMiddleware(environment: environment) let result = middleware(connection(from: request)).perform() - XCTAssertNoDifference(playerId, Player.blob.id) - XCTAssertNoDifference(notificationType, .dailyChallengeEndsSoon) - XCTAssertNoDifference(sendNotifications, false) + expectNoDifference(playerId, Player.blob.id) + expectNoDifference(notificationType, .dailyChallengeEndsSoon) + expectNoDifference(sendNotifications, false) assertInlineSnapshot(of: result, as: .conn) { """ diff --git a/Tests/RunnerTests/RunnerTests.swift b/Tests/RunnerTests/RunnerTests.swift index eceec72f..0b6b4b86 100644 --- a/Tests/RunnerTests/RunnerTests.swift +++ b/Tests/RunnerTests/RunnerTests.swift @@ -34,9 +34,9 @@ final class RunnerTests: XCTestCase { .perform() .unwrap() - XCTAssertNoDifference(targetArn, "arn-deadbeef") + expectNoDifference(targetArn, "arn-deadbeef") - XCTAssertNoDifference( + expectNoDifference( try JSONDecoder().decode( ApsPayload.self, from: JSONEncoder().encode(payload)), ApsPayload( diff --git a/Tests/ServerRouterTests/ConfigTests.swift b/Tests/ServerRouterTests/ConfigTests.swift index 43ccd040..f23f5815 100644 --- a/Tests/ServerRouterTests/ConfigTests.swift +++ b/Tests/ServerRouterTests/ConfigTests.swift @@ -28,12 +28,12 @@ class ConfigTests: XCTestCase { ) ) - XCTAssertNoDifference( + expectNoDifference( try testRouter.match(request: expectedRequest), expectedRoute ) - XCTAssertNoDifference( + expectNoDifference( try testRouter.request( for: .api( .init( diff --git a/Tests/ServerRouterTests/ServerRouterTests.swift b/Tests/ServerRouterTests/ServerRouterTests.swift index ba340f32..1122b96f 100644 --- a/Tests/ServerRouterTests/ServerRouterTests.swift +++ b/Tests/ServerRouterTests/ServerRouterTests.swift @@ -28,7 +28,7 @@ class ServerRouterTests: XCTestCase { request.httpBody = Data(json.utf8) let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .authenticate( .init( @@ -57,7 +57,7 @@ class ServerRouterTests: XCTestCase { request.setValue(testHash(Data(signature.utf8)).base64EncodedString(), forHTTPHeaderField: "X-Signature") let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .authenticate( .init( @@ -85,7 +85,7 @@ class ServerRouterTests: XCTestCase { request.setValue(testHash(Data(signature.utf8)).base64EncodedString(), forHTTPHeaderField: "X-Signature") let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .authenticate( .init( @@ -113,7 +113,7 @@ class ServerRouterTests: XCTestCase { request.setValue(testHash(Data(signature.utf8)).base64EncodedString(), forHTTPHeaderField: "X-Signature") let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .authenticate( .init( @@ -140,7 +140,7 @@ class ServerRouterTests: XCTestCase { request.setValue(testHash(Data(signature.utf8)).base64EncodedString(), forHTTPHeaderField: "X-Signature") let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .authenticate( .init( @@ -161,7 +161,7 @@ class ServerRouterTests: XCTestCase { )!) let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( @@ -194,7 +194,7 @@ class ServerRouterTests: XCTestCase { request.httpBody = Data(submitRequestJson.utf8) let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .demo(.submitGame(.init(gameMode: .timed, score: 1_000))) ) @@ -203,7 +203,7 @@ class ServerRouterTests: XCTestCase { .baseURL("http://localhost:9876") .request(for: .demo(.submitGame(submitRequest))) - XCTAssertNoDifference( + expectNoDifference( routerRequest, request ) @@ -231,7 +231,7 @@ class ServerRouterTests: XCTestCase { ] let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( @@ -254,7 +254,7 @@ class ServerRouterTests: XCTestCase { ) ) - XCTAssertNoDifference( + expectNoDifference( routerRequest, request ) @@ -289,7 +289,7 @@ class ServerRouterTests: XCTestCase { request.allHTTPHeaderFields = [ "X-Signature": testHash(Data(signature.utf8)).base64EncodedString() ] - XCTAssertNoDifference( + expectNoDifference( try testRouter.match(request: request), .api( .init( @@ -304,7 +304,7 @@ class ServerRouterTests: XCTestCase { } func testFetchLeaderboard() { - XCTAssertNoDifference( + expectNoDifference( try testRouter.match( request: URLRequest( url: URL( @@ -349,7 +349,7 @@ class ServerRouterTests: XCTestCase { request.allHTTPHeaderFields = ["X-Signature": signature.base64EncodedString()] let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( @@ -362,7 +362,7 @@ class ServerRouterTests: XCTestCase { let dailyChallengeContext = ServerRoute.Api.Route.Games.SubmitRequest.GameContext .dailyChallenge(.init(rawValue: .dailyChallengeId)) - XCTAssertNoDifference( + expectNoDifference( dailyChallengeContext, try decoder.decode( type(of: dailyChallengeContext), from: encoder.encode(dailyChallengeContext)) @@ -376,7 +376,7 @@ class ServerRouterTests: XCTestCase { puzzle: .mock ) ) - XCTAssertNoDifference( + expectNoDifference( turnBasedContext, try decoder.decode(type(of: turnBasedContext), from: encoder.encode(turnBasedContext)) ) @@ -391,7 +391,7 @@ class ServerRouterTests: XCTestCase { let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( @@ -447,7 +447,7 @@ class ServerRouterTests: XCTestCase { let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( @@ -460,14 +460,14 @@ class ServerRouterTests: XCTestCase { } func testShowSharedGame() { - XCTAssertNoDifference( + expectNoDifference( try testRouter.match(request: URLRequest(url: URL(string: "isowords:///sharedGames/deadbeef")!)), .sharedGame(.show("deadbeef")) ) } func testFetchVocabLeaderboard() { - XCTAssertNoDifference( + expectNoDifference( try testRouter.match( path: """ /api/leaderboard-scores/vocab?\ @@ -487,7 +487,7 @@ class ServerRouterTests: XCTestCase { } func testFetchVocabWord() { - XCTAssertNoDifference( + expectNoDifference( try testRouter.match( path: """ /api/leaderboard-scores/vocab/words/\ @@ -524,7 +524,7 @@ class ServerRouterTests: XCTestCase { )! ) request.httpMethod = "POST" - XCTAssertNoDifference( + expectNoDifference( try testRouter.match(request: request), .api( .init( @@ -537,7 +537,7 @@ class ServerRouterTests: XCTestCase { } func testTodayDailyChallenges() { - XCTAssertNoDifference( + expectNoDifference( try testRouter.match( path: """ /api/daily-challenges/today?accessToken=deadbeef-dead-beef-dead-beefdeadbeef&\ @@ -555,7 +555,7 @@ class ServerRouterTests: XCTestCase { } func testDailyChallengesResults() { - XCTAssertNoDifference( + expectNoDifference( try testRouter.match( path: """ /api/daily-challenges/results?accessToken=deadbeef-dead-beef-dead-beefdeadbeef&\ @@ -583,7 +583,7 @@ class ServerRouterTests: XCTestCase { } func testDailyChallengesHistory() { - XCTAssertNoDifference( + expectNoDifference( try testRouter.match( path: """ /api/daily-challenges/results/history?accessToken=deadbeef-dead-beef-dead-beefdeadbeef&\ @@ -618,7 +618,7 @@ class ServerRouterTests: XCTestCase { let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( @@ -647,7 +647,7 @@ class ServerRouterTests: XCTestCase { let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( @@ -676,7 +676,7 @@ class ServerRouterTests: XCTestCase { let route = try testRouter.match(request: request) - XCTAssertNoDifference( + expectNoDifference( route, .api( .init( diff --git a/Tests/SettingsFeatureTests/SettingsFeatureTests.swift b/Tests/SettingsFeatureTests/SettingsFeatureTests.swift index 2a14e3f3..1b9f077e 100644 --- a/Tests/SettingsFeatureTests/SettingsFeatureTests.swift +++ b/Tests/SettingsFeatureTests/SettingsFeatureTests.swift @@ -31,7 +31,7 @@ extension DependencyValues { class SettingsFeatureTests: XCTestCase { @MainActor func testUserSettingsBackwardsDecodability() { - XCTAssertNoDifference( + expectNoDifference( try JSONDecoder().decode(UserSettings.self, from: Data("{}".utf8)), UserSettings() ) @@ -46,7 +46,7 @@ class SettingsFeatureTests: XCTestCase { "soundEffectsVolume": 0.5, } """ - XCTAssertNoDifference( + expectNoDifference( try JSONDecoder().decode(UserSettings.self, from: Data(partialJson.utf8)), UserSettings( appIcon: .icon1, @@ -235,7 +235,7 @@ class SettingsFeatureTests: XCTestCase { } await openedUrl.withValue { - XCTAssertNoDifference($0, URL(string: "settings:isowords//isowords/settings")!) + expectNoDifference($0, URL(string: "settings:isowords//isowords/settings")!) } await task.cancel() @@ -322,7 +322,7 @@ class SettingsFeatureTests: XCTestCase { $0.userSettings.musicVolume = 0.5 } - await setMusicVolume.withValue { XCTAssertNoDifference($0, 0.5) } + await setMusicVolume.withValue { expectNoDifference($0, 0.5) } } @MainActor @@ -345,7 +345,7 @@ class SettingsFeatureTests: XCTestCase { $0.userSettings.soundEffectsVolume = 0.5 } - await setSoundEffectsVolume.withValue { XCTAssertNoDifference($0, 0.5) } + await setSoundEffectsVolume.withValue { expectNoDifference($0, 0.5) } } // MARK: - Appearance @@ -369,13 +369,13 @@ class SettingsFeatureTests: XCTestCase { await store.send(.set(\.userSettings, userSettings)) { $0.userSettings.colorScheme = .light } - await overriddenUserInterfaceStyle.withValue { XCTAssertNoDifference($0, .light) } + await overriddenUserInterfaceStyle.withValue { expectNoDifference($0, .light) } userSettings.colorScheme = .system await store.send(.set(\.userSettings, userSettings)) { $0.userSettings.colorScheme = .system } - await overriddenUserInterfaceStyle.withValue { XCTAssertNoDifference($0, .unspecified) } + await overriddenUserInterfaceStyle.withValue { expectNoDifference($0, .unspecified) } } @MainActor @@ -397,7 +397,7 @@ class SettingsFeatureTests: XCTestCase { await store.send(.set(\.userSettings, userSettings)) { $0.userSettings.appIcon = .icon2 } - await overriddenIconName.withValue { XCTAssertNoDifference($0, "icon-2") } + await overriddenIconName.withValue { expectNoDifference($0, "icon-2") } } @MainActor @@ -459,7 +459,7 @@ class SettingsFeatureTests: XCTestCase { await store.send(.set(\.developer, developer)) { $0.developer.currentBaseUrl = .localhost } - await setBaseUrl.withValue { XCTAssertNoDifference($0, URL(string: "http://localhost:9876")!) } + await setBaseUrl.withValue { expectNoDifference($0, URL(string: "http://localhost:9876")!) } await didLogout.withValue { XCTAssert($0) } } diff --git a/Tests/SettingsFeatureTests/SettingsPurchaseTests.swift b/Tests/SettingsFeatureTests/SettingsPurchaseTests.swift index fd31f30a..447a48d6 100644 --- a/Tests/SettingsFeatureTests/SettingsPurchaseTests.swift +++ b/Tests/SettingsFeatureTests/SettingsPurchaseTests.swift @@ -61,7 +61,7 @@ class SettingsPurchaseTests: XCTestCase { $0.isPurchasing = true } await didAddPaymentProductIdentifier.withValue { - XCTAssertNoDifference($0, "xyz.isowords.full_game") + expectNoDifference($0, "xyz.isowords.full_game") } storeKitObserver.continuation.yield(.updatedTransactions([.purchasing])) storeKitObserver.continuation.yield(.updatedTransactions([.purchased])) @@ -114,7 +114,7 @@ class SettingsPurchaseTests: XCTestCase { $0.isRestoring = true } - await didRestoreCompletedTransactions.withValue { XCTAssertNoDifference($0, true) } + await didRestoreCompletedTransactions.withValue { expectNoDifference($0, true) } storeKitObserver.continuation.yield(.updatedTransactions([.restored])) storeKitObserver.continuation.yield(.removedTransactions([.restored])) storeKitObserver.continuation.yield( @@ -166,7 +166,7 @@ class SettingsPurchaseTests: XCTestCase { $0.isRestoring = true } - await didRestoreCompletedTransactions.withValue { XCTAssertNoDifference($0, true) } + await didRestoreCompletedTransactions.withValue { expectNoDifference($0, true) } storeKitObserver.continuation.yield(.restoreCompletedTransactionsFinished(transactions: [])) await store.receive(\.paymentTransaction.restoreCompletedTransactionsFinished) { diff --git a/Tests/SharedModelsTests/AppleVerifyReceiptResponseTests.swift b/Tests/SharedModelsTests/AppleVerifyReceiptResponseTests.swift index a81a6efb..a5411ce6 100644 --- a/Tests/SharedModelsTests/AppleVerifyReceiptResponseTests.swift +++ b/Tests/SharedModelsTests/AppleVerifyReceiptResponseTests.swift @@ -61,7 +61,7 @@ class AppleVerifyReceiptResponseTests: XCTestCase { """ let response = try JSONDecoder().decode(AppleVerifyReceiptResponse.self, from: Data(json.utf8)) - XCTAssertNoDifference( + expectNoDifference( response, AppleVerifyReceiptResponse( environment: .sandbox, @@ -100,6 +100,6 @@ class AppleVerifyReceiptResponseTests: XCTestCase { let roundtripResponse = try JSONDecoder().decode( AppleVerifyReceiptResponse.self, from: encodedJsonData) - XCTAssertNoDifference(roundtripResponse, response) + expectNoDifference(roundtripResponse, response) } } diff --git a/Tests/SharedModelsTests/BackwardsCompatibilityTestHelpers.swift b/Tests/SharedModelsTests/BackwardsCompatibilityTestHelpers.swift index 25a5f0cc..3808569f 100644 --- a/Tests/SharedModelsTests/BackwardsCompatibilityTestHelpers.swift +++ b/Tests/SharedModelsTests/BackwardsCompatibilityTestHelpers.swift @@ -15,7 +15,7 @@ func assertBackwardsCompatibleCodable( let expectedData = try JSONSerialization.data(withJSONObject: json, options: [.sortedKeys]) let decodedValue = try decoder.decode(A.self, from: expectedData) - XCTAssertNoDifference( + expectNoDifference( value, decodedValue, "Value decoded from JSON does not match expected value", diff --git a/Tests/SharedModelsTests/CodabilityTests.swift b/Tests/SharedModelsTests/CodabilityTests.swift index 08ef346c..865d982b 100644 --- a/Tests/SharedModelsTests/CodabilityTests.swift +++ b/Tests/SharedModelsTests/CodabilityTests.swift @@ -172,6 +172,6 @@ class CubeCoreTests: XCTestCase { """ {"playedAt":1234567890,"playerIndex":0,"score":0,"type":{"removedCube":{"x":1,"y":2,"z":1}}} """.utf8)) - XCTAssertNoDifference(move, try jsonDecoder.decode(type(of: move), from: jsonEncoder.encode(move))) + expectNoDifference(move, try jsonDecoder.decode(type(of: move), from: jsonEncoder.encode(move))) } } diff --git a/Tests/SharedModelsTests/CompletedGameTests.swift b/Tests/SharedModelsTests/CompletedGameTests.swift index 9d12d823..8392ff4c 100644 --- a/Tests/SharedModelsTests/CompletedGameTests.swift +++ b/Tests/SharedModelsTests/CompletedGameTests.swift @@ -11,7 +11,7 @@ class CompletedGameTests: XCTestCase { let jsonData = try jsonEncoder.encode(context) let json = String(decoding: jsonData, as: UTF8.self) - XCTAssertNoDifference( + expectNoDifference( json, """ { @@ -22,7 +22,7 @@ class CompletedGameTests: XCTestCase { let decodedContext = try JSONDecoder().decode(CompletedGame.GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, context ) @@ -33,7 +33,7 @@ class CompletedGameTests: XCTestCase { let jsonData = try jsonEncoder.encode(context) let json = String(decoding: jsonData, as: UTF8.self) - XCTAssertNoDifference( + expectNoDifference( json, """ { @@ -44,7 +44,7 @@ class CompletedGameTests: XCTestCase { let decodedContext = try JSONDecoder().decode(CompletedGame.GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, context ) @@ -55,7 +55,7 @@ class CompletedGameTests: XCTestCase { let jsonData = try jsonEncoder.encode(context) let json = String(decoding: jsonData, as: UTF8.self) - XCTAssertNoDifference( + expectNoDifference( json, """ { @@ -66,7 +66,7 @@ class CompletedGameTests: XCTestCase { let decodedContext = try JSONDecoder().decode(CompletedGame.GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, context ) @@ -79,7 +79,7 @@ class CompletedGameTests: XCTestCase { let jsonData = try jsonEncoder.encode(context) let json = String(decoding: jsonData, as: UTF8.self) - XCTAssertNoDifference( + expectNoDifference( json, """ { @@ -92,7 +92,7 @@ class CompletedGameTests: XCTestCase { let decodedContext = try JSONDecoder().decode(CompletedGame.GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, context ) @@ -102,7 +102,7 @@ class CompletedGameTests: XCTestCase { let jsonData = Data("{}".utf8) let decodedContext = try JSONDecoder().decode(CompletedGame.GameContext.self, from: jsonData) - XCTAssertNoDifference( + expectNoDifference( decodedContext, .solo ) diff --git a/Tests/SharedModelsTests/CubeTests.swift b/Tests/SharedModelsTests/CubeTests.swift index 920412a8..6f6fed71 100644 --- a/Tests/SharedModelsTests/CubeTests.swift +++ b/Tests/SharedModelsTests/CubeTests.swift @@ -9,7 +9,7 @@ class CubeTest: XCTestCase { cubes.2.2.2.wasRemoved = true cubes.1.2.1.wasRemoved = true - XCTAssertNoDifference( + expectNoDifference( cubes.isPlayable(side: .top, index: .init(x: .one, y: .one, z: .one)), false ) @@ -19,7 +19,7 @@ class CubeTest: XCTestCase { var cubes = Puzzle.mock cubes.1.1.2.wasRemoved = true - XCTAssertNoDifference( + expectNoDifference( cubes.isPlayable(side: .left, index: .init(x: .one, y: .one, z: .one)), false ) @@ -29,7 +29,7 @@ class CubeTest: XCTestCase { var cubes = Puzzle.mock cubes.2.1.1.wasRemoved = true - XCTAssertNoDifference( + expectNoDifference( cubes.isPlayable(side: .right, index: .init(x: .one, y: .one, z: .one)), false ) @@ -40,7 +40,7 @@ class CubeTest: XCTestCase { cubes.1.1.2.wasRemoved = true cubes.1.0.2.wasRemoved = true - XCTAssertNoDifference( + expectNoDifference( cubes.isPlayable(side: .left, index: .init(x: .one, y: .zero, z: .one)), false ) @@ -49,104 +49,104 @@ class CubeTest: XCTestCase { func testIsPlayable() { var cubes = Puzzle.mock - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.2.2.2.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.1.2.2.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.2.2.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.2.1.2.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.2.2.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.1.2.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.1.1.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.2.2.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.1.1.2.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.2.1.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.1.0.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.0.0.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), true) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), false) cubes.1.0.0.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), true) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), true) cubes.1.1.0.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), true) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), true) cubes.0.1.1.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), false) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), true) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), false) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), true) cubes.0.1.0.wasRemoved = true - XCTAssertNoDifference(cubes.isPlayable(side: .top, index: .zero), true) - XCTAssertNoDifference(cubes.isPlayable(side: .left, index: .zero), true) - XCTAssertNoDifference(cubes.isPlayable(side: .right, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .top, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .left, index: .zero), true) + expectNoDifference(cubes.isPlayable(side: .right, index: .zero), true) } } diff --git a/Tests/SharedModelsTests/MovesTests.swift b/Tests/SharedModelsTests/MovesTests.swift index 13c6e0bb..d793085e 100644 --- a/Tests/SharedModelsTests/MovesTests.swift +++ b/Tests/SharedModelsTests/MovesTests.swift @@ -12,7 +12,7 @@ class MovesTests: XCTestCase { let moves = try JSONDecoder().decode(Moves.self, from: Data(jsonString.utf8)) - XCTAssertNoDifference( + expectNoDifference( moves, [ .init( @@ -52,7 +52,7 @@ class MovesTests: XCTestCase { from: encodedMove ) - XCTAssertNoDifference(decodedMove, move) + expectNoDifference(decodedMove, move) assertSnapshot(matching: move, as: .json) } diff --git a/Tests/SharedModelsTests/ThreeTests.swift b/Tests/SharedModelsTests/ThreeTests.swift index 990f0db8..c23fd4f4 100644 --- a/Tests/SharedModelsTests/ThreeTests.swift +++ b/Tests/SharedModelsTests/ThreeTests.swift @@ -8,7 +8,7 @@ class ThreeTests: XCTestCase { [[[{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}], [{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}], [{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}]], [[{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}], [{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}], [{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}]], [[{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}], [{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}], [{"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}, {"top": {"side": 0, "letter": "C"}, "left": {"side": 1, "letter": "A"}, "right": {"side": 2, "letter": "B"}}]]] """ - XCTAssertNoDifference( + expectNoDifference( try JSONDecoder().decode(ArchivablePuzzle.self, from: Data(jsonString.utf8)), .mock ) diff --git a/Tests/SharedModelsTests/VerificationTests.swift b/Tests/SharedModelsTests/VerificationTests.swift index 3bfe06d3..3d98714f 100644 --- a/Tests/SharedModelsTests/VerificationTests.swift +++ b/Tests/SharedModelsTests/VerificationTests.swift @@ -26,7 +26,7 @@ class VerificationTests: XCTestCase { isValidWord: { _ in true } ) - XCTAssertNoDifference( + expectNoDifference( result, .init( totalScore: 42, @@ -67,7 +67,7 @@ class VerificationTests: XCTestCase { isValidWord: { _ in true } ) - XCTAssertNoDifference( + expectNoDifference( result, nil ) @@ -97,7 +97,7 @@ class VerificationTests: XCTestCase { isValidWord: { _ in false } ) - XCTAssertNoDifference( + expectNoDifference( result, nil ) @@ -162,7 +162,7 @@ class VerificationTests: XCTestCase { isValidWord: { _ in true } ) - XCTAssertNoDifference(result, nil) + expectNoDifference(result, nil) } func testDuplicateWord() { diff --git a/Tests/UpgradeInterstitialFeatureTests/ShowUpgradeInterstitialEffectTests.swift b/Tests/UpgradeInterstitialFeatureTests/ShowUpgradeInterstitialEffectTests.swift index d927b3f4..3c3bb979 100644 --- a/Tests/UpgradeInterstitialFeatureTests/ShowUpgradeInterstitialEffectTests.swift +++ b/Tests/UpgradeInterstitialFeatureTests/ShowUpgradeInterstitialEffectTests.swift @@ -18,7 +18,7 @@ class ShowUpgradeInterstitialEffectTests: XCTestCase { ) } - XCTAssertNoDifference( + expectNoDifference( shows, [ false, false, false, false, false, false, false, false, false, true, diff --git a/Tests/UpgradeInterstitialFeatureTests/UpgradeInterstitialFeatureTests.swift b/Tests/UpgradeInterstitialFeatureTests/UpgradeInterstitialFeatureTests.swift index 63a83f9a..dd632ba0 100644 --- a/Tests/UpgradeInterstitialFeatureTests/UpgradeInterstitialFeatureTests.swift +++ b/Tests/UpgradeInterstitialFeatureTests/UpgradeInterstitialFeatureTests.swift @@ -75,7 +75,7 @@ class UpgradeInterstitialFeatureTests: XCTestCase { observer.continuation.yield(.updatedTransactions(transactions)) await paymentAdded.withValue { - XCTAssertNoDifference($0, "co.pointfree.isowords_testing.full_game") + expectNoDifference($0, "co.pointfree.isowords_testing.full_game") } await store.receive(\.paymentTransaction.updatedTransactions) diff --git a/Tests/VerifyReceiptMiddlewareTests/VerifyReceiptMiddlewareTests.swift b/Tests/VerifyReceiptMiddlewareTests/VerifyReceiptMiddlewareTests.swift index a7d85577..9f154139 100644 --- a/Tests/VerifyReceiptMiddlewareTests/VerifyReceiptMiddlewareTests.swift +++ b/Tests/VerifyReceiptMiddlewareTests/VerifyReceiptMiddlewareTests.swift @@ -104,11 +104,11 @@ class VerifyReceiptMiddlewareTests: XCTestCase { """ } - XCTAssertNoDifference( + expectNoDifference( updatedPlayerId, .init(rawValue: UUID(uuidString: "b10bb10b-dead-beef-dead-beefdeadbeef")!) ) - XCTAssertNoDifference( + expectNoDifference( updatedAppleResponse, .some(.mock) ) @@ -192,11 +192,11 @@ class VerifyReceiptMiddlewareTests: XCTestCase { """ } - XCTAssertNoDifference( + expectNoDifference( updatedPlayerId, .init(rawValue: UUID(uuidString: "b10bb10b-dead-beef-dead-beefdeadbeef")!) ) - XCTAssertNoDifference( + expectNoDifference( updatedData, .some(.mock) ) @@ -278,11 +278,11 @@ class VerifyReceiptMiddlewareTests: XCTestCase { """ } - XCTAssertNoDifference( + expectNoDifference( updatedPlayerId, .init(rawValue: UUID(uuidString: "b10bb10b-dead-beef-dead-beefdeadbeef")!) ) - XCTAssertNoDifference( + expectNoDifference( updatedData, .some(.mock) ) diff --git a/Tests/VocabMiddlewareTests/VocabMiddlewareTests.swift b/Tests/VocabMiddlewareTests/VocabMiddlewareTests.swift index 9a3422a0..768ae6b1 100644 --- a/Tests/VocabMiddlewareTests/VocabMiddlewareTests.swift +++ b/Tests/VocabMiddlewareTests/VocabMiddlewareTests.swift @@ -35,7 +35,7 @@ class VocabMiddlewareTests: XCTestCase { var environment = ServerEnvironment.testValue environment.database.fetchPlayerByAccessToken = { _ in pure(.blob) } environment.database.fetchVocabLeaderboardWord = { wordId in - XCTAssertNoDifference( + expectNoDifference( wordId, .init(rawValue: UUID(uuidString: "deadbeef-dead-beef-dead-beefdead304d")!) )