From 8ccac1c0a6e5bfda04cfb159b41f27ce0e22ec78 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Fri, 23 Sep 2022 16:10:52 +0200 Subject: [PATCH] Add unimplemented constructors --- .../XXLegacyDatabaseMigrator/Migrator.swift | 6 ++++ Sources/XXModels/Database.swift | 33 +++++++++++++++++++ Sources/XXModels/Operations/BulkUpdate.swift | 6 ++++ Sources/XXModels/Operations/Delete.swift | 6 ++++ Sources/XXModels/Operations/DeleteMany.swift | 6 ++++ Sources/XXModels/Operations/Drop.swift | 3 ++ Sources/XXModels/Operations/Fetch.swift | 6 ++++ .../XXModels/Operations/FetchPublisher.swift | 8 +++++ Sources/XXModels/Operations/Save.swift | 6 ++++ .../MigratorTests.swift | 4 +-- 10 files changed, 82 insertions(+), 2 deletions(-) diff --git a/Sources/XXLegacyDatabaseMigrator/Migrator.swift b/Sources/XXLegacyDatabaseMigrator/Migrator.swift index 2e15273..73af8c3 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 7b20c22..d1801b0 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 6c9c28f..ca08bdb 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 b305699..85119dc 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 43c155c..b75c627 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 d80e242..4821f69 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 7fe8e6e..ff9c0ee 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 fe78d3b..9372d2a 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 31ec662..6ab8076 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 2a83537..68fcbf6 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 } -- GitLab