Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 51 additions & 3 deletions Mindbox.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,12 @@
473A986D2C91E032005A3B94 /* MonitoringLogsError.json in Resources */ = {isa = PBXBuildFile; fileRef = 473A986C2C91E032005A3B94 /* MonitoringLogsError.json */; };
473A986F2C91E047005A3B94 /* MonitoringLogsTypeError.json in Resources */ = {isa = PBXBuildFile; fileRef = 473A986E2C91E047005A3B94 /* MonitoringLogsTypeError.json */; };
473A98712C91E629005A3B94 /* MonitoringLogsElementsMixedError.json in Resources */ = {isa = PBXBuildFile; fileRef = 473A98702C91E629005A3B94 /* MonitoringLogsElementsMixedError.json */; };
4741425C2E8A681600839AD8 /* StubDatabaseLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4741425B2E8A681600839AD8 /* StubDatabaseLoader.swift */; };
4741425E2E8A688300839AD8 /* DataBaseLoading_StubDatabaseLoaderContractTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4741425D2E8A688300839AD8 /* DataBaseLoading_StubDatabaseLoaderContractTests.swift */; };
474142602E8A692800839AD8 /* NoopDatabaseRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4741425F2E8A692800839AD8 /* NoopDatabaseRepository.swift */; };
474142622E8AAC8900839AD8 /* DatabaseRepository_NoopContractTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474142612E8AAC8900839AD8 /* DatabaseRepository_NoopContractTests.swift */; };
4741DAC42E85C49F00EB2497 /* DatabaseLoaderFlowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4741DAC32E85C49F00EB2497 /* DatabaseLoaderFlowTests.swift */; };
4741DAC62E85DC1600EB2497 /* MBDatabaseRepositoryMemoryWarningTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4741DAC52E85DC1600EB2497 /* MBDatabaseRepositoryMemoryWarningTests.swift */; };
474230DC2E72236500282764 /* TestContainers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474230DB2E72236500282764 /* TestContainers.swift */; };
4747708B2C6B838B00C36FC8 /* SharedInternalMethodsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4747708A2C6B838B00C36FC8 /* SharedInternalMethodsTests.swift */; };
4747708F2C6B93AC00C36FC8 /* MindboxNotificationServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4747708E2C6B93AC00C36FC8 /* MindboxNotificationServiceTests.swift */; };
Expand Down Expand Up @@ -177,6 +183,8 @@
47C464EF2E0EB88C00F50B21 /* RemoveBackgroundTaskDataMigrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C464EE2E0EB88C00F50B21 /* RemoveBackgroundTaskDataMigrationTests.swift */; };
47D0BC2C2E093F8A00182DB2 /* ClockAndMockClock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D0BC2B2E093F8A00182DB2 /* ClockAndMockClock.swift */; };
47D63E2B2C2EABDF0055E7D8 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F3EC93BA2AF105DA0030D107 /* PrivacyInfo.xcprivacy */; };
47DCB76A2E82CEA90024FCC1 /* DatabaseRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47DCB7692E82CEA90024FCC1 /* DatabaseRepositoryProtocol.swift */; };
47DF1FB02E7D6F90009BC4A0 /* DatabaseLoaderProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47DF1FAF2E7D6F90009BC4A0 /* DatabaseLoaderProtocol.swift */; };
47EFBB2F2CB92B240023A4B9 /* SegmentationCheckResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B4F9DEE28D08897002C9CF0 /* SegmentationCheckResponse.swift */; };
47FDF0BA2C5BDAB80051F08C /* MigrationManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FDF0B92C5BDAB80051F08C /* MigrationManagerProtocol.swift */; };
47FDF0BC2C5BE8BB0051F08C /* MigrationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FDF0BB2C5BE8BB0051F08C /* MigrationProtocol.swift */; };
Expand Down Expand Up @@ -761,6 +769,12 @@
473A986C2C91E032005A3B94 /* MonitoringLogsError.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = MonitoringLogsError.json; sourceTree = "<group>"; };
473A986E2C91E047005A3B94 /* MonitoringLogsTypeError.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = MonitoringLogsTypeError.json; sourceTree = "<group>"; };
473A98702C91E629005A3B94 /* MonitoringLogsElementsMixedError.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = MonitoringLogsElementsMixedError.json; sourceTree = "<group>"; };
4741425B2E8A681600839AD8 /* StubDatabaseLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubDatabaseLoader.swift; sourceTree = "<group>"; };
4741425D2E8A688300839AD8 /* DataBaseLoading_StubDatabaseLoaderContractTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataBaseLoading_StubDatabaseLoaderContractTests.swift; sourceTree = "<group>"; };
4741425F2E8A692800839AD8 /* NoopDatabaseRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoopDatabaseRepository.swift; sourceTree = "<group>"; };
474142612E8AAC8900839AD8 /* DatabaseRepository_NoopContractTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseRepository_NoopContractTests.swift; sourceTree = "<group>"; };
4741DAC32E85C49F00EB2497 /* DatabaseLoaderFlowTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseLoaderFlowTests.swift; sourceTree = "<group>"; };
4741DAC52E85DC1600EB2497 /* MBDatabaseRepositoryMemoryWarningTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MBDatabaseRepositoryMemoryWarningTests.swift; sourceTree = "<group>"; };
474230DB2E72236500282764 /* TestContainers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestContainers.swift; sourceTree = "<group>"; };
4747708A2C6B838B00C36FC8 /* SharedInternalMethodsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedInternalMethodsTests.swift; sourceTree = "<group>"; };
4747708E2C6B93AC00C36FC8 /* MindboxNotificationServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MindboxNotificationServiceTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -804,6 +818,8 @@
47C38A302E05920B00D5A2FE /* MockDatabaseRepositoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockDatabaseRepositoryTests.swift; sourceTree = "<group>"; };
47C464EE2E0EB88C00F50B21 /* RemoveBackgroundTaskDataMigrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoveBackgroundTaskDataMigrationTests.swift; sourceTree = "<group>"; };
47D0BC2B2E093F8A00182DB2 /* ClockAndMockClock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClockAndMockClock.swift; sourceTree = "<group>"; };
47DCB7692E82CEA90024FCC1 /* DatabaseRepositoryProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseRepositoryProtocol.swift; sourceTree = "<group>"; };
47DF1FAF2E7D6F90009BC4A0 /* DatabaseLoaderProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseLoaderProtocol.swift; sourceTree = "<group>"; };
47FDF0B92C5BDAB80051F08C /* MigrationManagerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationManagerProtocol.swift; sourceTree = "<group>"; };
47FDF0BB2C5BE8BB0051F08C /* MigrationProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationProtocol.swift; sourceTree = "<group>"; };
6F1EAA15266A670E007A335B /* ProductListItemsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductListItemsResponse.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1779,6 +1795,27 @@
path = ABTestsJsonStubs;
sourceTree = "<group>";
};
476C2DB02E8BE725000EFF86 /* DatabaseRepository */ = {
isa = PBXGroup;
children = (
84DEE8AC25CC036A00C98CC7 /* MBDatabaseRepository.swift */,
4741425F2E8A692800839AD8 /* NoopDatabaseRepository.swift */,
47DCB7692E82CEA90024FCC1 /* DatabaseRepositoryProtocol.swift */,
);
path = DatabaseRepository;
sourceTree = "<group>";
};
476C2DB12E8BE75F000EFF86 /* DatabaseLoader */ = {
isa = PBXGroup;
children = (
84DEE8B025CC042A00C98CC7 /* MBDatabaseError.swift */,
8410681225ECDC73004701C2 /* DatabaseLoader.swift */,
4741425B2E8A681600839AD8 /* StubDatabaseLoader.swift */,
47DF1FAF2E7D6F90009BC4A0 /* DatabaseLoaderProtocol.swift */,
);
path = DatabaseLoader;
sourceTree = "<group>";
};
47B90E2D2C625F8A00BD93E7 /* TestsMigrations */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -1844,8 +1881,12 @@
isa = PBXGroup;
children = (
840C388425CD169400D50183 /* DatabaseRepositoryTestCase.swift */,
474142612E8AAC8900839AD8 /* DatabaseRepository_NoopContractTests.swift */,
84B09FB32611C74400B0A06E /* MockDatabaseRepository.swift */,
4741DAC52E85DC1600EB2497 /* MBDatabaseRepositoryMemoryWarningTests.swift */,
84E1D6A8261D8D54002BF03A /* DatabaseLoaderTest.swift */,
4741425D2E8A688300839AD8 /* DataBaseLoading_StubDatabaseLoaderContractTests.swift */,
4741DAC32E85C49F00EB2497 /* DatabaseLoaderFlowTests.swift */,
47C38A302E05920B00D5A2FE /* MockDatabaseRepositoryTests.swift */,
);
path = Database;
Expand Down Expand Up @@ -2094,11 +2135,10 @@
84DEE8A625CC02AF00C98CC7 /* Database */ = {
isa = PBXGroup;
children = (
476C2DB12E8BE75F000EFF86 /* DatabaseLoader */,
476C2DB02E8BE725000EFF86 /* DatabaseRepository */,
840C386525CC1A5300D50183 /* Entities */,
84DEE8A725CC031200C98CC7 /* MBDatabase.xcdatamodeld */,
84DEE8AC25CC036A00C98CC7 /* MBDatabaseRepository.swift */,
84DEE8B025CC042A00C98CC7 /* MBDatabaseError.swift */,
8410681225ECDC73004701C2 /* DatabaseLoader.swift */,
);
path = Database;
sourceTree = "<group>";
Expand Down Expand Up @@ -3691,6 +3731,7 @@
84A312B725DA64C60096A017 /* BGTaskManager.swift in Sources */,
F331DD1C2A84B5EF00222120 /* ImageContentBackgroundLayer.swift in Sources */,
F3A8B9A52A3A6F2800E9C055 /* MonitoringModel.swift in Sources */,
4741425C2E8A681600839AD8 /* StubDatabaseLoader.swift in Sources */,
F33087662C37590600F8DF10 /* InjectInappTools.swift in Sources */,
334F3AE8264C199900A6AC00 /* ItemRequest.swift in Sources */,
84CC799325CACF0C00C062BD /* EventRepository.swift in Sources */,
Expand Down Expand Up @@ -3872,6 +3913,7 @@
A15D701629AF810E007131E7 /* SDKLogsRequest.swift in Sources */,
F31A947C2BC69E3900E6C978 /* PeriodicFrequency.swift in Sources */,
33072F362664C4D7001F1AB2 /* RecommendationRequest.swift in Sources */,
47DCB76A2E82CEA90024FCC1 /* DatabaseRepositoryProtocol.swift in Sources */,
84DC49CC25D1832300D5D758 /* EventWrapper.swift in Sources */,
F39116FA2AA9B32E00852298 /* LayersFilter.swift in Sources */,
F31A947E2BC6A00D00E6C978 /* OnceFrequency.swift in Sources */,
Expand All @@ -3888,6 +3930,7 @@
F33608262A8CC94A00C7C9B7 /* SnackbarViewController.swift in Sources */,
3328FE4226303F2F000A30D0 /* String+Regex.swift in Sources */,
F3A4EFDC2D5224C700DB96A8 /* SlidingExpirationModel.swift in Sources */,
47DF1FB02E7D6F90009BC4A0 /* DatabaseLoaderProtocol.swift in Sources */,
F31A94802BC7E61800E6C978 /* InappFrequencyValidator.swift in Sources */,
33072F322664C357001F1AB2 /* ProductListResponse.swift in Sources */,
9B24FAB128C74BD200F10B5D /* InAppConfigurationManager.swift in Sources */,
Expand Down Expand Up @@ -3929,6 +3972,7 @@
A184654329C3102A00E64780 /* CategoryIDTargeting.swift in Sources */,
F33608282A8CD17E00C7C9B7 /* SnackbarPresentationStrategy.swift in Sources */,
330D8CCB26579521005106D5 /* DiscountTypeRequest.swift in Sources */,
474142602E8A692800839AD8 /* NoopDatabaseRepository.swift in Sources */,
F349756A2DEF2C8400BEC667 /* InappTrackingService.swift in Sources */,
F382F2112BAC6AD100BC97FF /* UNAuthorizationStatus+Extensions.swift in Sources */,
F3FEEA9B2C25AC68000E9D0F /* MBContainer.swift in Sources */,
Expand Down Expand Up @@ -4002,6 +4046,7 @@
9B9C9538292111A700BB29DA /* MockUUIDDebugService.swift in Sources */,
47A4FA782E73741700569870 /* LoggerDatabaseLoaderTests.swift in Sources */,
84B625F025C98B1200AB6228 /* ValidatorsTestCase.swift in Sources */,
4741425E2E8A688300839AD8 /* DataBaseLoading_StubDatabaseLoaderContractTests.swift in Sources */,
847F580325C88BBF00147A9A /* HTTPMethod.swift in Sources */,
F351F1C22CE5F23A0053423E /* InappMapperTests.swift in Sources */,
47C464EF2E0EB88C00F50B21 /* RemoveBackgroundTaskDataMigrationTests.swift in Sources */,
Expand All @@ -4019,6 +4064,7 @@
9B52570728D1AF880029B1BC /* InAppPresentationManagerMock.swift in Sources */,
D2F7E2482BADB9EF00B24BB8 /* UserVisitManagerTests.swift in Sources */,
BBAAC17C2BB2FC9100E1E25E /* MockEvent.swift in Sources */,
474142622E8AAC8900839AD8 /* DatabaseRepository_NoopContractTests.swift in Sources */,
47D0BC2C2E093F8A00182DB2 /* ClockAndMockClock.swift in Sources */,
84B09FB42611C74400B0A06E /* MockDatabaseRepository.swift in Sources */,
473A98262C918C3A005A3B94 /* ConfigParsingTests.swift in Sources */,
Expand All @@ -4027,6 +4073,7 @@
473A98332C91A4B3005A3B94 /* MonitoringConfigParsingTests.swift in Sources */,
F3FEEAA62C25CB2E000E9D0F /* XCTestCase+Extensions.swift in Sources */,
84ECB42E25D27EF100DA8AC9 /* MockUNAuthorizationStatusProvider.swift in Sources */,
4741DAC62E85DC1600EB2497 /* MBDatabaseRepositoryMemoryWarningTests.swift in Sources */,
D2F7E24C2BADC4CA00B24BB8 /* MockSessionManager.swift in Sources */,
F31470842B96355600E01E5C /* MockInAppConfigurationDataFacade.swift in Sources */,
47B90E312C626B9300BD93E7 /* TestProtocolMigrations.swift in Sources */,
Expand All @@ -4043,6 +4090,7 @@
A154E334299E110E00F8F074 /* EventRepositoryMock.swift in Sources */,
31ED2DEC25C444C400301FAD /* MBConfigurationTestCase.swift in Sources */,
F3D925AD2A1236F400135C87 /* URLSessionImageDownloaderTests.swift in Sources */,
4741DAC42E85C49F00EB2497 /* DatabaseLoaderFlowTests.swift in Sources */,
473A982D2C91A38C005A3B94 /* SettingsConfigParsingTests.swift in Sources */,
F3A8B9A02A3A52F400E9C055 /* ABTestValidatorTests.swift in Sources */,
47C38A312E05920B00D5A2FE /* MockDatabaseRepositoryTests.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import UserNotifications

final class ClickNotificationManager {

private let databaseRepository: MBDatabaseRepository
private let databaseRepository: DatabaseRepositoryProtocol

init(
databaseRepository: MBDatabaseRepository
databaseRepository: DatabaseRepositoryProtocol
) {
self.databaseRepository = databaseRepository
}
Expand Down
4 changes: 2 additions & 2 deletions Mindbox/CoreController/CoreController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import MindboxCommon
final class CoreController {
private let persistenceStorage: PersistenceStorage
private let utilitiesFetcher: UtilitiesFetcher
private let databaseRepository: MBDatabaseRepository
private let databaseRepository: DatabaseRepositoryProtocol
private let guaranteedDeliveryManager: GuaranteedDeliveryManager
private let uuidDebugService: UUIDDebugService
private var configValidation = ConfigValidation()
Expand Down Expand Up @@ -239,7 +239,7 @@ final class CoreController {
init(
persistenceStorage: PersistenceStorage,
utilitiesFetcher: UtilitiesFetcher,
databaseRepository: MBDatabaseRepository,
databaseRepository: DatabaseRepositoryProtocol,
guaranteedDeliveryManager: GuaranteedDeliveryManager,
sessionManager: SessionManager,
inAppMessagesManager: InAppCoreManagerProtocol,
Expand Down
4 changes: 2 additions & 2 deletions Mindbox/DI/Injections/InjectCore.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ extension MBContainer {
register(CoreController.self) {
CoreController(persistenceStorage: DI.injectOrFail(PersistenceStorage.self),
utilitiesFetcher: DI.injectOrFail(UtilitiesFetcher.self),
databaseRepository: DI.injectOrFail(MBDatabaseRepository.self),
databaseRepository: DI.injectOrFail(DatabaseRepositoryProtocol.self),
guaranteedDeliveryManager: DI.injectOrFail(GuaranteedDeliveryManager.self),
sessionManager: DI.injectOrFail(SessionManager.self),
inAppMessagesManager: DI.injectOrFail(InAppCoreManagerProtocol.self),
Expand All @@ -23,7 +23,7 @@ extension MBContainer {

register(GuaranteedDeliveryManager.self) {
let persistenceStorage = DI.injectOrFail(PersistenceStorage.self)
let databaseRepository = DI.injectOrFail(MBDatabaseRepository.self)
let databaseRepository = DI.injectOrFail(DatabaseRepositoryProtocol.self)
let eventRepository = DI.injectOrFail(EventRepository.self)
return GuaranteedDeliveryManager(
persistenceStorage: persistenceStorage,
Expand Down
2 changes: 1 addition & 1 deletion Mindbox/DI/Injections/InjectInappTools.swift
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ extension MBContainer {

func registerInappPresentation() -> Self {
register(InAppMessagesTracker.self) {
let databaseRepository = DI.injectOrFail(MBDatabaseRepository.self)
let databaseRepository = DI.injectOrFail(DatabaseRepositoryProtocol.self)
return InAppMessagesTracker(databaseRepository: databaseRepository)
}

Expand Down
19 changes: 11 additions & 8 deletions Mindbox/DI/Injections/InjectReplaceable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,22 @@ extension MBContainer {
register(PersistenceStorage.self) {
let utilitiesFetcher = DI.injectOrFail(UtilitiesFetcher.self)
guard let defaults = UserDefaults(suiteName: utilitiesFetcher.applicationGroupIdentifier) else {
fatalError("Failed to create UserDefaults with suite name: \(utilitiesFetcher.applicationGroupIdentifier). Check and set up your AppGroups correctly.")
assertionFailure("Failed to create UserDefaults with suite name: \(utilitiesFetcher.applicationGroupIdentifier). Check and set up your AppGroups correctly.")
return MBPersistenceStorage(defaults: UserDefaults.standard)
}
return MBPersistenceStorage(defaults: defaults)
}

register(DatabaseRepositoryProtocol.self) {
let loader = DI.injectOrFail(DatabaseLoaderProtocol.self)

register(MBDatabaseRepository.self) {
let databaseLoader = DI.injectOrFail(DataBaseLoader.self)

guard let persistentContainer = try? databaseLoader.loadPersistentContainer(),
let dbRepository = try? MBDatabaseRepository(persistentContainer: persistentContainer) else {
fatalError("Failed to create MBDatabaseRepository")
do {
let container = try loader.loadPersistentContainer()
return try MBDatabaseRepository(persistentContainer: container)
} catch {
assertionFailure("Failed to create MBDatabaseRepository: \(error)")
return NoopDatabaseRepository()
}
return dbRepository
}

register(ImageDownloadServiceProtocol.self, scope: .container) {
Expand Down
Loading