diff --git a/Sources/XXLegacyDatabaseMigrator/Migrator.swift b/Sources/XXLegacyDatabaseMigrator/Migrator.swift index 2e15273b93a69c2de134d34f4a1f5aae1a73e70d..73af8c3f78edb467902039d69965c19a65282ecb 100644 --- a/Sources/XXLegacyDatabaseMigrator/Migrator.swift +++ b/Sources/XXLegacyDatabaseMigrator/Migrator.swift @@ -70,7 +70,13 @@ extension Migrator { } #if DEBUG +import XCTestDynamicOverlay + extension Migrator { public static let failing = Migrator { _, _, _, _ in fatalError() } + + public static let unimplemented = Migrator( + run: XCTUnimplemented("\(Self.self)") + ) } #endif diff --git a/Sources/XXModels/Database.swift b/Sources/XXModels/Database.swift index 7b20c22db659110c53a08fb1bcbfb895878dbf77..d1801b0eec115b1ccc48e83a3b3319529bf9b591 100644 --- a/Sources/XXModels/Database.swift +++ b/Sources/XXModels/Database.swift @@ -209,5 +209,38 @@ extension Database { deleteFileTransfer: .failing(), drop: .failing ) + + static public let unimplemented = Database( + fetchChatInfos: .unimplemented(), + fetchChatInfosPublisher: .unimplemented(), + fetchContacts: .unimplemented(), + fetchContactsPublisher: .unimplemented(), + saveContact: .unimplemented(), + bulkUpdateContacts: .unimplemented(), + deleteContact: .unimplemented(), + fetchContactChatInfos: .unimplemented(), + fetchContactChatInfosPublisher: .unimplemented(), + fetchGroups: .unimplemented(), + fetchGroupsPublisher: .unimplemented(), + saveGroup: .unimplemented(), + deleteGroup: .unimplemented(), + fetchGroupChatInfos: .unimplemented(), + fetchGroupChatInfosPublisher: .unimplemented(), + fetchGroupInfos: .unimplemented(), + fetchGroupInfosPublisher: .unimplemented(), + saveGroupMember: .unimplemented(), + deleteGroupMember: .unimplemented(), + fetchMessages: .unimplemented(), + fetchMessagesPublisher: .unimplemented(), + saveMessage: .unimplemented(), + bulkUpdateMessages: .unimplemented(), + deleteMessage: .unimplemented(), + deleteMessages: .unimplemented(), + fetchFileTransfers: .unimplemented(), + fetchFileTransfersPublisher: .unimplemented(), + saveFileTransfer: .unimplemented(), + deleteFileTransfer: .unimplemented(), + drop: .unimplemented + ) } #endif diff --git a/Sources/XXModels/Operations/BulkUpdate.swift b/Sources/XXModels/Operations/BulkUpdate.swift index 6c9c28f4de91d1844d853cbc800defdd92e56e57..ca08bdb7ac8d711ab794998ae7b46d935824f192 100644 --- a/Sources/XXModels/Operations/BulkUpdate.swift +++ b/Sources/XXModels/Operations/BulkUpdate.swift @@ -22,9 +22,15 @@ public struct BulkUpdate<Query, Assignments> { } #if DEBUG +import XCTestDynamicOverlay + extension BulkUpdate { public static func failing<Query, Assignments>() -> BulkUpdate<Query, Assignments> { BulkUpdate<Query, Assignments> { _, _ in fatalError() } } + + public static func unimplemented<Query, Assignments>() -> BulkUpdate<Query, Assignments> { + BulkUpdate<Query, Assignments>(run: XCTUnimplemented("\(Self.self)")) + } } #endif diff --git a/Sources/XXModels/Operations/Delete.swift b/Sources/XXModels/Operations/Delete.swift index b305699998ceb845a1492096a79496b65ca2bb52..85119dcd2e1f9ca5ac5cbcf259fedd403ebcc30f 100644 --- a/Sources/XXModels/Operations/Delete.swift +++ b/Sources/XXModels/Operations/Delete.swift @@ -22,9 +22,15 @@ public struct Delete<Model> { } #if DEBUG +import XCTestDynamicOverlay + extension Delete { public static func failing<Model>() -> Delete<Model> { Delete<Model> { _ in fatalError() } } + + public static func unimplemented<Model>() -> Delete<Model> { + Delete<Model>(run: XCTUnimplemented("\(Self.self)")) + } } #endif diff --git a/Sources/XXModels/Operations/DeleteMany.swift b/Sources/XXModels/Operations/DeleteMany.swift index 43c155cbaab3c8a14b9e41dd780e12bcb12e1673..b75c6271d098184c7539fdf83667616dc06406ed 100644 --- a/Sources/XXModels/Operations/DeleteMany.swift +++ b/Sources/XXModels/Operations/DeleteMany.swift @@ -21,9 +21,15 @@ public struct DeleteMany<Model, Query> { } #if DEBUG +import XCTestDynamicOverlay + extension DeleteMany { public static func failing<Model, Query>() -> DeleteMany<Model, Query> { DeleteMany<Model, Query> { _ in fatalError() } } + + public static func unimplemented<Model>() -> DeleteMany<Model, Query> { + DeleteMany<Model, Query>(run: XCTUnimplemented("\(Self.self)")) + } } #endif diff --git a/Sources/XXModels/Operations/Drop.swift b/Sources/XXModels/Operations/Drop.swift index d80e2425413417c2d40461800e98854d63e1bb7a..4821f69f1ccddad0aef0fdedcfa12de8e5e699f8 100644 --- a/Sources/XXModels/Operations/Drop.swift +++ b/Sources/XXModels/Operations/Drop.swift @@ -20,7 +20,10 @@ public struct Drop { } #if DEBUG +import XCTestDynamicOverlay + extension Drop { public static let failing = Drop { fatalError() } + public static let unimplemented = Drop(run: XCTUnimplemented("\(Self.self)")) } #endif diff --git a/Sources/XXModels/Operations/Fetch.swift b/Sources/XXModels/Operations/Fetch.swift index 7fe8e6e93891b126d3919d2550e4e0adfee80ca7..ff9c0ee7d11041194db009e94b5bc57176f0ec1c 100644 --- a/Sources/XXModels/Operations/Fetch.swift +++ b/Sources/XXModels/Operations/Fetch.swift @@ -22,9 +22,15 @@ public struct Fetch<Model, Query> { } #if DEBUG +import XCTestDynamicOverlay + extension Fetch { public static func failing<Model, Query>() -> Fetch<Model, Query> { Fetch<Model, Query> { _ in fatalError() } } + + public static func unimplemented<Model, Query>() -> Fetch<Model, Query> { + Fetch<Model, Query>(run: XCTUnimplemented("\(Self.self)")) + } } #endif diff --git a/Sources/XXModels/Operations/FetchPublisher.swift b/Sources/XXModels/Operations/FetchPublisher.swift index fe78d3b5208fe088631796097dca0deea103799f..9372d2a0f773c6569ab054f999b275cac4e3f292 100644 --- a/Sources/XXModels/Operations/FetchPublisher.swift +++ b/Sources/XXModels/Operations/FetchPublisher.swift @@ -23,9 +23,17 @@ public struct FetchPublisher<Model, Query> { } #if DEBUG +import XCTestDynamicOverlay + extension FetchPublisher { public static func failing<Model, Query>() -> FetchPublisher<Model, Query> { FetchPublisher<Model, Query> { _ in fatalError() } } + + public static func unimplemented<Model, Query>() -> FetchPublisher<Model, Query> { + FetchPublisher<Model, Query>( + run: XCTUnimplemented("\(Self.self)", placeholder: Empty().eraseToAnyPublisher()) + ) + } } #endif diff --git a/Sources/XXModels/Operations/Save.swift b/Sources/XXModels/Operations/Save.swift index 31ec662ba5cc4730a2e872f972d1b4b693037a42..6ab8076321775cc8e716464cebf3b5e4b1d0ac42 100644 --- a/Sources/XXModels/Operations/Save.swift +++ b/Sources/XXModels/Operations/Save.swift @@ -25,9 +25,15 @@ public struct Save<Model> { } #if DEBUG +import XCTestDynamicOverlay + extension Save { public static func failing<Model>() -> Save<Model> { Save<Model> { _ in fatalError() } } + + public static func unimplemented<Model>() -> Save<Model> { + Save<Model>(run: XCTUnimplemented("\(Self.self)")) + } } #endif diff --git a/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift b/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift index 2a83537f4e496ccd355de9d39c550e6ab8498b66..68fcbf6f901d6b1e75b802ea2a636afa60c81ebe 100644 --- a/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift +++ b/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift @@ -36,7 +36,7 @@ final class MigratorTests: XCTestCase { var didSaveContacts = [XXModels.Contact]() - var newDb = XXModels.Database.failing + var newDb = XXModels.Database.unimplemented newDb.fetchContacts = .init { _ in [] } newDb.saveContact = .init(run: { didSaveContacts.append($0) @@ -182,7 +182,7 @@ final class MigratorTests: XCTestCase { // Mock up new database: - var newDb = XXModels.Database.failing + var newDb = XXModels.Database.unimplemented newDb.fetchContacts = .init { _ in [] } newDb.saveContact = .init { $0 }