From 534c6be2738346a6b9d4b1620f01c69bd79b323d Mon Sep 17 00:00:00 2001 From: Daniel Barela Date: Fri, 6 Sep 2024 15:58:59 -0600 Subject: [PATCH] bookmark injection, download manager fix --- .github/.DS_Store | Bin 0 -> 8196 bytes .../DataSources/Bookmark/BookmarkNotes.swift | 1 - .../Publication/DownloadManager.swift | 9 ++++- .../GeoPackageFeatureItemDetailView.swift | 1 - .../GeoPackageFeatureItemSummaryView.swift | 2 - Marlin/Marlin/MarlinApp.swift | 6 --- .../Bookmark/BookmarkLocalDataSource.swift | 11 ++++++ .../Bookmark/BookmarkRepository.swift | 20 ++++++---- .../NoticeToMarinersRepository.swift | 1 + .../PublicationLocalDataSource.swift | 3 ++ .../PublicationRemoteDataSource.swift | 1 + .../Publication/PublicationRepository.swift | 4 +- Marlin/Marlin/UI/ASAM/AsamSummaryView.swift | 2 - .../Marlin/UI/Bookmark/BookmarkListView.swift | 2 - .../Marlin/UI/Bookmark/BookmarkSummary.swift | 4 +- .../UI/Bookmark/BookmarkViewModel.swift | 11 +++--- .../UI/Bookmark/BookmarksViewModel.swift | 12 +++--- .../DGPSStationSummaryView.swift | 2 - Marlin/Marlin/UI/Light/LightDetailView.swift | 1 - Marlin/Marlin/UI/Light/LightSummaryView.swift | 2 - Marlin/Marlin/UI/MODU/ModuDetailView.swift | 2 - Marlin/Marlin/UI/MODU/ModuSummaryView.swift | 2 - .../NTM/NoticeToMarinersFileSummaryView.swift | 1 - .../UI/NTM/NoticeToMarinersSummaryView.swift | 2 - .../NavigationalWarningDetailView.swift | 2 - .../NavigationalWarningSummaryView.swift | 2 - Marlin/Marlin/UI/Port/PortSummaryView.swift | 2 - .../UI/Publication/PublicationActionBar.swift | 2 - .../Publication/PublicationSummaryView.swift | 2 - .../RadioBeacon/RadioBeaconSummaryView.swift | 2 - .../BottomSheet/MarlinBottomSheetTests.swift | 8 ++-- .../ComponentHelpers/BookmarkHelper.swift | 10 +++-- .../ASAM/AsamDetailViewTests.swift | 28 ++++++------- .../ASAM/AsamSummaryViewTests.swift | 37 ++++++++---------- ...ifferentialGPSStationDetailViewTests.swift | 10 ++--- ...fferentialGPSStationSummaryViewTests.swift | 15 +++---- .../PublicationListTests.swift | 5 +-- .../PublicationSummaryViewTests.swift | 22 +++++------ .../Light/LightDetailViewTests.swift | 6 +-- .../Light/LightSummaryViewTests.swift | 8 ++-- .../MODU/ModuDetailViewTests.swift | 10 ++--- .../DataSources/MODU/ModuSummaryTests.swift | 12 +++--- .../NavigationalWarningDetailTests.swift | 5 +-- ...igationalWarningNavAreaListViewTests.swift | 18 +++------ .../NavigationalWarningSummaryViewTests.swift | 5 +-- .../NavigationalWarningsOverviewTests.swift | 6 +-- ...ceToMarinersFullNoticeViewModelTests.swift | 7 ++++ .../NoticeToMarinersFullNoticeViewTests.swift | 3 +- .../NoticeToMarinersSummaryViewTests.swift | 22 +++++------ .../Port/PortDetailViewTests.swift | 6 +-- .../Port/PortSummaryViewTests.swift | 10 ++--- .../RadioBeaconDetailViewTests.swift | 8 ++-- .../RadioBeaconSummaryViewTests.swift | 11 ++---- .../PublicationStaticLocalDataSource.swift | 4 ++ .../DGPSStationListTests.swift | 9 ++--- 55 files changed, 177 insertions(+), 222 deletions(-) create mode 100644 .github/.DS_Store diff --git a/.github/.DS_Store b/.github/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..278e4f6520f8009c5672313f79c9b44826d0a7c0 GIT binary patch literal 8196 zcmeHMYitx%6h3F#!o8Nqw6>*XT)SEzwG=7kQ40v$2c-pSk?k9FncW#+(&ocYeZd!_(@ojGFzKrH|;>Vm4}G|bb4T=Z+260VdIMY0Dt0yel%054s*Mmt)F zA`nF&ia->BC<0Lg{tFSHJ6kliz`ZY}(HKP_iogvS0dYRWsSBD2>5Qbo(LqB{0uU7? zK+tGTbwFSf4{0K#Gm-|Tw5O~dFf_%m#6W3I^0-hZnh5EPq|zKvngfPU#;`)c;OS%+ z57Yq@l15_`fhYpkMnI$wr;6Q$EKFQkzk5?@+f9@7t@M;_d45aFMN~>k%N8wWi&;6l zFL}%@Bz@h_d7XOppx_2w*G?DbdV1J03n{g#%XNI+a?EUCU>PQ<92&74!!2~WImhq< z+oTjQ&Ui|#J8@z|>z0=0c-yAUC!6CZ+FNP9Y2%iYCpoKbSikK+YQmm$+|$w<3{M1D zI>);+^Sfqy`7Y^NNlnqUuZpg5Uak#~jE<#LHRqWJOk4M@yxFb$rk7Hed*o$b#&z~* z%{+NGl5y?aq(hR5jBaOgq-=KBcG7y#^hSO2xG!eoo}2Z%0>x2_Y{gnitrYeHQ@-Uo z-msbVh;n{@Np`-OHGcVL3;~ zDQJ#w9kI+TuRx0rI{KtJtJbWjty`&SbG3`RjONnTbk6c0P#YMNdK8CovC~INM3p@7q{~rtOA?)XvUqKB!4`)+@WwgTypzNHj?}1wm~{v`DUM4#vc_RR_(m1A1T_GT=}uoq@;UEIbP@!FhNc-iMFj z6ZjN9gD>G*_#S?QU*LE669Ex#!g5@S%TU8rxEj}BD{jN>xC3`$H}>N_xF7GuVNBs+ zOk)Nu%%X=m%;PD16d%LWcm|)r=kR$vhcDo3_%^SFQWpyxvss~C zALlW(jPNhnRjY|zMA(=w8FLWiiRwd2$eQx{F>%}5%U&>&RAdQgrNz5EYDn#V&~BBV2tl7!kn X{vn|FOE$Xy=l*1k?*9OhH^%T6%XTJ$ literal 0 HcmV?d00001 diff --git a/Marlin/Marlin/DataSources/Bookmark/BookmarkNotes.swift b/Marlin/Marlin/DataSources/Bookmark/BookmarkNotes.swift index 6cbe8d7c..cd7b106d 100644 --- a/Marlin/Marlin/DataSources/Bookmark/BookmarkNotes.swift +++ b/Marlin/Marlin/DataSources/Bookmark/BookmarkNotes.swift @@ -8,7 +8,6 @@ import SwiftUI struct BookmarkNotes: View { - @EnvironmentObject var repository: BookmarkRepository var itemKey: String? var dataSource: String? var notes: String? diff --git a/Marlin/Marlin/DataSources/Publication/DownloadManager.swift b/Marlin/Marlin/DataSources/Publication/DownloadManager.swift index f589b5b9..28758d9c 100644 --- a/Marlin/Marlin/DataSources/Publication/DownloadManager.swift +++ b/Marlin/Marlin/DataSources/Publication/DownloadManager.swift @@ -41,6 +41,7 @@ final class DownloadManager: NSObject { init(subject: PassthroughSubject, downloadable: Downloadable) { self.subject = subject self.downloadable = downloadable + super.init() } func download() { @@ -199,7 +200,10 @@ extension DownloadManager: URLSessionDownloadDelegate { } func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { + urlSession.invalidateAndCancel() + guard let url = downloadTask.currentRequest?.url, let downloadable = urlToDownloadableMap[url] else { + subject.send(completion: .finished) return } @@ -209,18 +213,19 @@ extension DownloadManager: URLSessionDownloadDelegate { let destinationUrl: URL? = URL(string: downloadable.savePath) guard let destinationUrl = destinationUrl else { + subject.send(completion: .finished) return } guard let httpResponse = downloadTask.response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else { saveError(downloadable: downloadable, response: downloadTask.response) + subject.send(completion: .finished) return } prepareForSaving(destinationUrl: destinationUrl) - print("Does the file exist \(location.path)") if !FileManager.default.fileExists(atPath: location.path) { print("error file not saved") subject.send( @@ -232,6 +237,7 @@ extension DownloadManager: URLSessionDownloadDelegate { error: "Error downloading (file not saved)" ) ) + subject.send(completion: .finished) return } @@ -272,6 +278,7 @@ extension DownloadManager: URLSessionDownloadDelegate { error: "" ) ) + subject.send(completion: .finished) } catch { print("error saving file to \(destinationUrl.path) \(error)") } diff --git a/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemDetailView.swift b/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemDetailView.swift index f203d523..0e25f0fa 100644 --- a/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemDetailView.swift +++ b/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemDetailView.swift @@ -10,7 +10,6 @@ import MapKit import geopackage_ios struct GeoPackageFeatureItemDetailView: View { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter var featureItem: GeoPackageFeatureItem diff --git a/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemSummaryView.swift b/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemSummaryView.swift index db38d55b..98e2595b 100644 --- a/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemSummaryView.swift +++ b/Marlin/Marlin/Map/GeoPackage/GeoPackageFeatureItemSummaryView.swift @@ -9,7 +9,6 @@ import SwiftUI struct GeoPackageFeatureItemSummaryView: DataSourceSummaryView { @EnvironmentObject var router: MarlinRouter - @EnvironmentObject var bookmarkRepository: BookmarkRepository @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() var showMoreDetails: Bool = true @@ -50,7 +49,6 @@ struct GeoPackageFeatureItemSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: featureItem.itemKey, dataSource: DataSources.geoPackage.key) } diff --git a/Marlin/Marlin/MarlinApp.swift b/Marlin/Marlin/MarlinApp.swift index 727af7e8..d74bae74 100644 --- a/Marlin/Marlin/MarlinApp.swift +++ b/Marlin/Marlin/MarlinApp.swift @@ -137,7 +137,6 @@ struct MarlinApp: App { var appState: AppState @StateObject var dataSourceList: DataSourceList = DataSourceList() - var bookmarkRepository: BookmarkRepository var userPlaceRepository: UserPlaceRepository var searchRepository: SearchRepository @@ -172,10 +171,6 @@ struct MarlinApp: App { routeWaypointRepository = RouteWaypointRepository( localDataSource: RouteWaypointCoreDataDataSource(context: persistentStore.viewContext)) - bookmarkRepository = BookmarkRepository( - localDataSource: BookmarkCoreDataDataSource() - ) - asamsTileRepository = AsamsTileRepository() modusTileRepository = ModusTileRepository() portsTileRepository = PortsTileRepository() @@ -203,7 +198,6 @@ struct MarlinApp: App { .environmentObject(LocationManager.shared()) .environmentObject(appState) .environmentObject(dataSourceList) - .environmentObject(bookmarkRepository) .environmentObject(routeRepository) .environmentObject(routeWaypointRepository) .environmentObject(userPlaceRepository) diff --git a/Marlin/Marlin/Repository/Bookmark/BookmarkLocalDataSource.swift b/Marlin/Marlin/Repository/Bookmark/BookmarkLocalDataSource.swift index afb2af1e..09a4ee08 100644 --- a/Marlin/Marlin/Repository/Bookmark/BookmarkLocalDataSource.swift +++ b/Marlin/Marlin/Repository/Bookmark/BookmarkLocalDataSource.swift @@ -11,6 +11,17 @@ import Combine import UIKit import BackgroundTasks +private struct BookmarkLocalDataSourceProviderKey: InjectionKey { + static var currentValue: BookmarkLocalDataSource = BookmarkCoreDataDataSource() +} + +extension InjectedValues { + var bookmarkLocalDataSource: BookmarkLocalDataSource { + get { Self[BookmarkLocalDataSourceProviderKey.self] } + set { Self[BookmarkLocalDataSourceProviderKey.self] = newValue } + } +} + protocol BookmarkLocalDataSource { func getBookmark(itemKey: String, dataSource: String) -> BookmarkModel? func createBookmark(notes: String?, itemKey: String, dataSource: String) async diff --git a/Marlin/Marlin/Repository/Bookmark/BookmarkRepository.swift b/Marlin/Marlin/Repository/Bookmark/BookmarkRepository.swift index 5c3390fd..7a86bff4 100644 --- a/Marlin/Marlin/Repository/Bookmark/BookmarkRepository.swift +++ b/Marlin/Marlin/Repository/Bookmark/BookmarkRepository.swift @@ -22,8 +22,20 @@ enum BookmarkItem: Hashable, Identifiable { case sectionHeader(header: String) } +private struct BookmarkRepositoryProviderKey: InjectionKey { + static var currentValue: BookmarkRepository = BookmarkRepository() +} + +extension InjectedValues { + var bookmarkRepository: BookmarkRepository { + get { Self[BookmarkRepositoryProviderKey.self] } + set { Self[BookmarkRepositoryProviderKey.self] = newValue } + } +} + class BookmarkRepository: ObservableObject { - let localDataSource: BookmarkLocalDataSource + @Injected(\.bookmarkLocalDataSource) + private var localDataSource: BookmarkLocalDataSource @Injected(\.asamRepository) var asamRepository: AsamRepository @@ -44,12 +56,6 @@ class BookmarkRepository: ObservableObject { @Injected(\.navWarningRepository) var navigationalWarningRepository: NavigationalWarningRepository - init( - localDataSource: BookmarkLocalDataSource - ) { - self.localDataSource = localDataSource - } - func getBookmark(itemKey: String, dataSource: String) -> BookmarkModel? { localDataSource.getBookmark(itemKey: itemKey, dataSource: dataSource) } diff --git a/Marlin/Marlin/Repository/NoticeToMariners/NoticeToMarinersRepository.swift b/Marlin/Marlin/Repository/NoticeToMariners/NoticeToMarinersRepository.swift index fc802617..d3342783 100644 --- a/Marlin/Marlin/Repository/NoticeToMariners/NoticeToMarinersRepository.swift +++ b/Marlin/Marlin/Repository/NoticeToMariners/NoticeToMarinersRepository.swift @@ -129,6 +129,7 @@ extension NoticeToMarinersRepository { cancellable = subject .sink( receiveCompletion: { [weak self] _ in + self?.remoteDataSource.cleanupDownload(model: notice) if let cancellable = cancellable { self?.cancellables.remove(cancellable) } diff --git a/Marlin/Marlin/Repository/Publication/PublicationLocalDataSource.swift b/Marlin/Marlin/Repository/Publication/PublicationLocalDataSource.swift index a530c543..4b8f839c 100644 --- a/Marlin/Marlin/Repository/Publication/PublicationLocalDataSource.swift +++ b/Marlin/Marlin/Repository/Publication/PublicationLocalDataSource.swift @@ -211,13 +211,16 @@ extension PublicationCoreDataDataSource { } func checkFileExists(s3Key: String) -> Bool { + print("XXX check file exists in publication core data source") return context.performAndWait { guard let epub = context.fetchFirst(ElectronicPublication.self, key: "s3Key", value: s3Key) else { + print("XXX no publication") return false } var downloaded = false if let destinationUrl = URL(string: epub.savePath) { downloaded = FileManager().fileExists(atPath: destinationUrl.path) + print("XXX file exists \(downloaded)") } if downloaded != epub.isDownloaded { epub.isDownloaded = downloaded diff --git a/Marlin/Marlin/Repository/Publication/PublicationRemoteDataSource.swift b/Marlin/Marlin/Repository/Publication/PublicationRemoteDataSource.swift index f97d78f3..fb41fb66 100644 --- a/Marlin/Marlin/Repository/Publication/PublicationRemoteDataSource.swift +++ b/Marlin/Marlin/Repository/Publication/PublicationRemoteDataSource.swift @@ -40,6 +40,7 @@ class PublicationRemoteDataSource: RemoteDataSource { } func cancelDownload(model: PublicationModel) { + cleanupDownload(model: model) downloads[model.id]?.cancel() } diff --git a/Marlin/Marlin/Repository/Publication/PublicationRepository.swift b/Marlin/Marlin/Repository/Publication/PublicationRepository.swift index d2f4f76e..ff286436 100644 --- a/Marlin/Marlin/Repository/Publication/PublicationRepository.swift +++ b/Marlin/Marlin/Repository/Publication/PublicationRepository.swift @@ -123,6 +123,7 @@ extension PublicationRepository { cancellable = subject .sink( receiveCompletion: { [weak self] _ in + self?.remoteDataSource.cleanupDownload(model: publication) if let cancellable = cancellable { self?.cancellables.remove(cancellable) } @@ -149,7 +150,8 @@ extension PublicationRepository { } func checkFileExists(id: String) -> Bool { - localDataSource.checkFileExists(s3Key: id) + print("XXX checking file exists in local data source \(localDataSource)") + return localDataSource.checkFileExists(s3Key: id) } func cancelDownload(s3Key: String) { diff --git a/Marlin/Marlin/UI/ASAM/AsamSummaryView.swift b/Marlin/Marlin/UI/ASAM/AsamSummaryView.swift index b2882e01..73ec1f72 100644 --- a/Marlin/Marlin/UI/ASAM/AsamSummaryView.swift +++ b/Marlin/Marlin/UI/ASAM/AsamSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct AsamSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter var showSectionHeader: Bool = false @@ -46,7 +45,6 @@ struct AsamSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: asam.id, dataSource: DataSources.asam.key) } } diff --git a/Marlin/Marlin/UI/Bookmark/BookmarkListView.swift b/Marlin/Marlin/UI/Bookmark/BookmarkListView.swift index d84cfeac..77834e55 100644 --- a/Marlin/Marlin/UI/Bookmark/BookmarkListView.swift +++ b/Marlin/Marlin/UI/Bookmark/BookmarkListView.swift @@ -8,7 +8,6 @@ import SwiftUI struct BookmarkListView: View { - @EnvironmentObject var repository: BookmarkRepository @StateObject var viewModel: BookmarksViewModel = BookmarksViewModel() @EnvironmentObject var router: MarlinRouter @@ -82,7 +81,6 @@ struct BookmarkListView: View { .background(Color.backgroundColor) .foregroundColor(Color.onSurfaceColor) .onAppear { - viewModel.repository = repository Metrics.shared.dataSourceList(dataSource: DataSources.bookmark) } } diff --git a/Marlin/Marlin/UI/Bookmark/BookmarkSummary.swift b/Marlin/Marlin/UI/Bookmark/BookmarkSummary.swift index 362093bf..1510e41d 100644 --- a/Marlin/Marlin/UI/Bookmark/BookmarkSummary.swift +++ b/Marlin/Marlin/UI/Bookmark/BookmarkSummary.swift @@ -8,7 +8,9 @@ import SwiftUI struct BookmarkSummary: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository + @Injected(\.bookmarkRepository) + private var bookmarkRepository: BookmarkRepository + @EnvironmentObject var router: MarlinRouter var showMoreDetails: Bool = false diff --git a/Marlin/Marlin/UI/Bookmark/BookmarkViewModel.swift b/Marlin/Marlin/UI/Bookmark/BookmarkViewModel.swift index 392aa1c2..41f268dc 100644 --- a/Marlin/Marlin/UI/Bookmark/BookmarkViewModel.swift +++ b/Marlin/Marlin/UI/Bookmark/BookmarkViewModel.swift @@ -15,20 +15,21 @@ class BookmarkViewModel: ObservableObject { @Published var bookmarkBottomSheet: Bool = false @Published var bnotes: String = "" - var repository: BookmarkRepository? + @Injected(\.bookmarkRepository) + private var repository: BookmarkRepository @discardableResult func getBookmark(itemKey: String, dataSource: String) -> BookmarkModel? { self.itemKey = itemKey self.dataSource = dataSource - bookmark = repository?.getBookmark(itemKey: itemKey, dataSource: dataSource) + bookmark = repository.getBookmark(itemKey: itemKey, dataSource: dataSource) self.isBookmarked = bookmark != nil return bookmark } func createBookmark(notes: String) { Task { - await repository?.createBookmark( + await repository.createBookmark( notes: notes, itemKey: self.itemKey ?? "", dataSource: self.dataSource ?? "" @@ -39,13 +40,13 @@ class BookmarkViewModel: ObservableObject { @MainActor func updateBookmarked() { - bookmark = repository?.getBookmark(itemKey: self.itemKey ?? "", dataSource: self.dataSource ?? "") + bookmark = repository.getBookmark(itemKey: self.itemKey ?? "", dataSource: self.dataSource ?? "") self.isBookmarked = bookmark != nil self.bnotes = bookmark?.notes ?? "" } func removeBookmark() { - guard let itemKey = itemKey, let dataSource = dataSource, let repository = repository else { + guard let itemKey = itemKey, let dataSource = dataSource else { return } repository.removeBookmark(itemKey: itemKey, dataSource: dataSource) diff --git a/Marlin/Marlin/UI/Bookmark/BookmarksViewModel.swift b/Marlin/Marlin/UI/Bookmark/BookmarksViewModel.swift index ea9e23bd..bdd46d11 100644 --- a/Marlin/Marlin/UI/Bookmark/BookmarksViewModel.swift +++ b/Marlin/Marlin/UI/Bookmark/BookmarksViewModel.swift @@ -15,11 +15,8 @@ class BookmarksViewModel: ObservableObject { @Published var loaded: Bool = false private var disposables = Set() - var repository: BookmarkRepository? { - didSet { - fetchBookmarks() - } - } + @Injected(\.bookmarkRepository) + private var repository: BookmarkRepository var publisher: AnyPublisher, Never>? @@ -38,6 +35,10 @@ class BookmarksViewModel: ObservableObject { } } } + + init() { + fetchBookmarks() + } private enum TriggerId: Hashable { case reload @@ -56,7 +57,6 @@ class BookmarksViewModel: ObservableObject { if publisher != nil { return } - guard let repository = repository else { return } Publishers.PublishAndRepeat( onOutputFrom: trigger.signal(activatedBy: TriggerId.reload) ) { [trigger, repository] in diff --git a/Marlin/Marlin/UI/DifferentialGPSStation/DGPSStationSummaryView.swift b/Marlin/Marlin/UI/DifferentialGPSStation/DGPSStationSummaryView.swift index 9c325ba2..4604c607 100644 --- a/Marlin/Marlin/UI/DifferentialGPSStation/DGPSStationSummaryView.swift +++ b/Marlin/Marlin/UI/DifferentialGPSStation/DGPSStationSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct DGPSStationSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter var showBookmarkNotes: Bool = false @@ -66,7 +65,6 @@ struct DGPSStationSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: dgpsStation.id, dataSource: DataSources.dgps.key) } } diff --git a/Marlin/Marlin/UI/Light/LightDetailView.swift b/Marlin/Marlin/UI/Light/LightDetailView.swift index 445e83c8..9a732a7f 100644 --- a/Marlin/Marlin/UI/Light/LightDetailView.swift +++ b/Marlin/Marlin/UI/Light/LightDetailView.swift @@ -10,7 +10,6 @@ import MapKit import CoreData struct LightDetailView: View { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter @StateObject var viewModel: LightViewModel = LightViewModel() @State var featureNumber: String diff --git a/Marlin/Marlin/UI/Light/LightSummaryView.swift b/Marlin/Marlin/UI/Light/LightSummaryView.swift index e4bd5bcd..297ad912 100644 --- a/Marlin/Marlin/UI/Light/LightSummaryView.swift +++ b/Marlin/Marlin/UI/Light/LightSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct LightSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter var showSectionHeader: Bool = false @@ -54,7 +53,6 @@ struct LightSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: light.itemKey, dataSource: DataSources.light.key) } } diff --git a/Marlin/Marlin/UI/MODU/ModuDetailView.swift b/Marlin/Marlin/UI/MODU/ModuDetailView.swift index 3fdeac01..2b0d1404 100644 --- a/Marlin/Marlin/UI/MODU/ModuDetailView.swift +++ b/Marlin/Marlin/UI/MODU/ModuDetailView.swift @@ -10,7 +10,6 @@ import MapKit import CoreData struct ModuDetailView: View { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter @StateObject var viewModel: ModuViewModel = ModuViewModel() @State var name: String @@ -95,7 +94,6 @@ struct ModuDetailView: View { viewModel.getModu(name: name, waypointURI: waypointURI) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: modu.id, dataSource: DataSources.modu.key) Metrics.shared.dataSourceDetail(dataSource: DataSources.modu) } diff --git a/Marlin/Marlin/UI/MODU/ModuSummaryView.swift b/Marlin/Marlin/UI/MODU/ModuSummaryView.swift index c0227c57..fe76e1ef 100644 --- a/Marlin/Marlin/UI/MODU/ModuSummaryView.swift +++ b/Marlin/Marlin/UI/MODU/ModuSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct ModuSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() @@ -51,7 +50,6 @@ struct ModuSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: modu.itemKey, dataSource: DataSources.modu.key) } } diff --git a/Marlin/Marlin/UI/NTM/NoticeToMarinersFileSummaryView.swift b/Marlin/Marlin/UI/NTM/NoticeToMarinersFileSummaryView.swift index 59029596..ebb04855 100644 --- a/Marlin/Marlin/UI/NTM/NoticeToMarinersFileSummaryView.swift +++ b/Marlin/Marlin/UI/NTM/NoticeToMarinersFileSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct NoticeToMarinersFileSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() @EnvironmentObject var router: MarlinRouter diff --git a/Marlin/Marlin/UI/NTM/NoticeToMarinersSummaryView.swift b/Marlin/Marlin/UI/NTM/NoticeToMarinersSummaryView.swift index 6ffa42b4..337695dc 100644 --- a/Marlin/Marlin/UI/NTM/NoticeToMarinersSummaryView.swift +++ b/Marlin/Marlin/UI/NTM/NoticeToMarinersSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct NoticeToMarinersSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() @EnvironmentObject var router: MarlinRouter @@ -40,7 +39,6 @@ struct NoticeToMarinersSummaryView: DataSourceSummaryView { bookmarkNotesView(bookmarkViewModel: bookmarkViewModel) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: noticeToMariners.itemKey, dataSource: noticeToMariners.key) } } diff --git a/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningDetailView.swift b/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningDetailView.swift index d8730da1..46f34dd5 100644 --- a/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningDetailView.swift +++ b/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningDetailView.swift @@ -9,7 +9,6 @@ import SwiftUI import MapKit struct NavigationalWarningDetailView: View { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() @EnvironmentObject var routeWaypointRepository: RouteWaypointRepository @StateObject var viewModel: NavigationalWarningViewModel = NavigationalWarningViewModel() @@ -117,7 +116,6 @@ struct NavigationalWarningDetailView: View { """) .navigationBarTitleDisplayMode(.inline) .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark( itemKey: navigationalWarning.itemKey, dataSource: DataSources.navWarning.key diff --git a/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningSummaryView.swift b/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningSummaryView.swift index 40ca1cb4..05b93ae0 100644 --- a/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningSummaryView.swift +++ b/Marlin/Marlin/UI/NavigationalWarning/NavigationalWarningSummaryView.swift @@ -10,7 +10,6 @@ import MapKit struct NavigationalWarningSummaryView: DataSourceSummaryView { @EnvironmentObject var router: MarlinRouter - @EnvironmentObject var bookmarkRepository: BookmarkRepository @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() var showSectionHeader: Bool = false @@ -60,7 +59,6 @@ struct NavigationalWarningSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: navigationalWarning.itemKey, dataSource: DataSources.navWarning.key) } } diff --git a/Marlin/Marlin/UI/Port/PortSummaryView.swift b/Marlin/Marlin/UI/Port/PortSummaryView.swift index 9763a5dd..46b0c3d0 100644 --- a/Marlin/Marlin/UI/Port/PortSummaryView.swift +++ b/Marlin/Marlin/UI/Port/PortSummaryView.swift @@ -9,7 +9,6 @@ import SwiftUI import MapKit struct PortSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter var showSectionHeader: Bool = false @@ -67,7 +66,6 @@ struct PortSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: port.id, dataSource: DataSources.port.key) if let currentLocation = locationManager.lastLocation { diff --git a/Marlin/Marlin/UI/Publication/PublicationActionBar.swift b/Marlin/Marlin/UI/Publication/PublicationActionBar.swift index 8757af38..ca2f7ccf 100644 --- a/Marlin/Marlin/UI/Publication/PublicationActionBar.swift +++ b/Marlin/Marlin/UI/Publication/PublicationActionBar.swift @@ -8,7 +8,6 @@ import SwiftUI struct PublicationActionBar: View { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() @ObservedObject var viewModel: PublicationViewModel @@ -109,7 +108,6 @@ struct PublicationActionBar: View { .padding(.trailing, -8) .buttonStyle(MaterialButtonStyle()) .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark( itemKey: publication.itemKey, dataSource: publication.key diff --git a/Marlin/Marlin/UI/Publication/PublicationSummaryView.swift b/Marlin/Marlin/UI/Publication/PublicationSummaryView.swift index dc7ec087..cd935d61 100644 --- a/Marlin/Marlin/UI/Publication/PublicationSummaryView.swift +++ b/Marlin/Marlin/UI/Publication/PublicationSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct PublicationSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @StateObject var bookmarkViewModel: BookmarkViewModel = BookmarkViewModel() var s3Key: String @@ -50,7 +49,6 @@ struct PublicationSummaryView: DataSourceSummaryView { PublicationActionBar(viewModel: viewModel) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: publication.itemKey, dataSource: DataSources.epub.key) } } diff --git a/Marlin/Marlin/UI/RadioBeacon/RadioBeaconSummaryView.swift b/Marlin/Marlin/UI/RadioBeacon/RadioBeaconSummaryView.swift index 73f20ff4..a5801f1d 100644 --- a/Marlin/Marlin/UI/RadioBeacon/RadioBeaconSummaryView.swift +++ b/Marlin/Marlin/UI/RadioBeacon/RadioBeaconSummaryView.swift @@ -8,7 +8,6 @@ import SwiftUI struct RadioBeaconSummaryView: DataSourceSummaryView { - @EnvironmentObject var bookmarkRepository: BookmarkRepository @EnvironmentObject var router: MarlinRouter var showTitle: Bool = false @@ -70,7 +69,6 @@ struct RadioBeaconSummaryView: DataSourceSummaryView { ) } .onAppear { - bookmarkViewModel.repository = bookmarkRepository bookmarkViewModel.getBookmark(itemKey: radioBeacon.id, dataSource: DataSources.radioBeacon.key) } } diff --git a/Marlin/MarlinTests/BottomSheet/MarlinBottomSheetTests.swift b/Marlin/MarlinTests/BottomSheet/MarlinBottomSheetTests.swift index 569467db..869ff83c 100644 --- a/Marlin/MarlinTests/BottomSheet/MarlinBottomSheetTests.swift +++ b/Marlin/MarlinTests/BottomSheet/MarlinBottomSheetTests.swift @@ -60,11 +60,10 @@ final class MarlinBottomSheetTests: XCTestCase { localDataSource.list.append(newItem) let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() let view = TestBottomSheet(bottomSheetItems: [bottomSheetItem]) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: view) @@ -113,7 +112,7 @@ final class MarlinBottomSheetTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamStaticRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list.append(newItem) let repository = AsamRepository() let moduLocalDataSource = ModuStaticLocalDataSource() @@ -124,11 +123,10 @@ final class MarlinBottomSheetTests: XCTestCase { moduLocalDataSource.list.append(newItem2) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() let view = TestBottomSheet(bottomSheetItems: [bottomSheetItem, bottomSheetItem2]) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: view) diff --git a/Marlin/MarlinTests/ComponentHelpers/BookmarkHelper.swift b/Marlin/MarlinTests/ComponentHelpers/BookmarkHelper.swift index 55a52975..ca0d22d5 100644 --- a/Marlin/MarlinTests/ComponentHelpers/BookmarkHelper.swift +++ b/Marlin/MarlinTests/ComponentHelpers/BookmarkHelper.swift @@ -12,7 +12,9 @@ import CoreData @testable import Marlin class BookmarkHelper: XCTestCase { - public func verifyBookmarkButton(viewContext: NSManagedObjectContext? = nil, repository: BookmarkRepository? = nil, bookmarkable: Bookmarkable) { + @Injected(\.bookmarkRepository) + var repository: BookmarkRepository + public func verifyBookmarkButton(viewContext: NSManagedObjectContext? = nil, bookmarkable: Bookmarkable) { tester().tapView(withAccessibilityLabel: "bookmark") tester().waitForView(withAccessibilityLabel: "Bookmark") tester().waitForView(withAccessibilityLabel: "notes") @@ -20,11 +22,11 @@ class BookmarkHelper: XCTestCase { tester().tapView(withAccessibilityLabel: "Bookmark") tester().waitForAbsenceOfView(withAccessibilityLabel: "Bookmark") - let bookmark = repository?.getBookmark(itemKey: bookmarkable.itemKey, dataSource: bookmarkable.key ) + let bookmark = repository.getBookmark(itemKey: bookmarkable.itemKey, dataSource: bookmarkable.key ) // viewContext.performAndWait { // let bookmark = viewContext.fetchFirst(Bookmark.self, key: "id", value: bookmarkable.itemKey ?? "") XCTAssertNotNil(bookmark) - let foundItem = repository?.getDataSourceItem(itemKey: bookmarkable.itemKey, dataSource: bookmarkable.key ) + let foundItem = repository.getDataSourceItem(itemKey: bookmarkable.itemKey, dataSource: bookmarkable.key ) XCTAssertNotNil(foundItem) // XCTAssertNotNil(foundItem?.bookmark) // XCTAssertEqual(foundItem?.bookmark?.notes, "Bookmark notes") @@ -33,7 +35,7 @@ class BookmarkHelper: XCTestCase { tester().tapView(withAccessibilityLabel: "remove bookmark \(bookmarkable.itemKey )") // viewContext.performAndWait { - let removed = repository?.getBookmark(itemKey: bookmarkable.itemKey, dataSource: bookmarkable.key) + let removed = repository.getBookmark(itemKey: bookmarkable.itemKey, dataSource: bookmarkable.key) XCTAssertNil(removed) // } } diff --git a/Marlin/MarlinTests/DataSources/ASAM/AsamDetailViewTests.swift b/Marlin/MarlinTests/DataSources/ASAM/AsamDetailViewTests.swift index 84a6ca9c..b283b8dc 100644 --- a/Marlin/MarlinTests/DataSources/ASAM/AsamDetailViewTests.swift +++ b/Marlin/MarlinTests/DataSources/ASAM/AsamDetailViewTests.swift @@ -32,16 +32,15 @@ final class AsamDetailViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [asam] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let view = AsamDetailView(reference: asam.reference!) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: view) let window = TestHelpers.getKeyWindowVisible() @@ -73,16 +72,15 @@ final class AsamDetailViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [asam] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let view = AsamDetailView(reference: asam.reference!) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: view) let window = TestHelpers.getKeyWindowVisible() @@ -118,16 +116,15 @@ final class AsamDetailViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [asam] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let summary = AsamDetailView(reference: asam.reference!) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: summary) @@ -160,16 +157,15 @@ final class AsamDetailViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [asam] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let summary = AsamDetailView(reference: asam.reference!) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: summary) diff --git a/Marlin/MarlinTests/DataSources/ASAM/AsamSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/ASAM/AsamSummaryViewTests.swift index 22dc00ba..4f7f5daa 100644 --- a/Marlin/MarlinTests/DataSources/ASAM/AsamSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/ASAM/AsamSummaryViewTests.swift @@ -33,16 +33,15 @@ final class AsamSummaryViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [asam] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = AsamSummaryView(asam: AsamListModel(asamModel:asam)) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() @@ -59,7 +58,7 @@ final class AsamSummaryViewTests: XCTestCase { waitForExpectations(timeout: 10, handler: nil) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: asam) + BookmarkHelper().verifyBookmarkButton(bookmarkable: asam) } func testLoadingNoHostility() { @@ -78,15 +77,14 @@ final class AsamSummaryViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [newItem] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = AsamSummaryView(asam: AsamListModel(asamModel:newItem)) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() @@ -120,15 +118,14 @@ final class AsamSummaryViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [newItem] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = AsamSummaryView(asam: AsamListModel(asamModel:newItem)) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() @@ -163,16 +160,15 @@ final class AsamSummaryViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [newItem] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = AsamSummaryView(asam: AsamListModel(asamModel:newItem), showMoreDetails: true) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() @@ -203,17 +199,16 @@ final class AsamSummaryViewTests: XCTestCase { let localDataSource = AsamStaticLocalDataSource() InjectedValues[\.asamLocalDataSource] = localDataSource let remoteDataSource = AsamRemoteDataSource() - InjectedValues[\.asamRemoteDataSource] + InjectedValues[\.asamRemoteDataSource] = remoteDataSource localDataSource.list = [newItem] let repository = AsamRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = AsamSummaryView(asam: AsamListModel(asamModel:newItem), showMoreDetails: false) // let summary = AsamSummaryView(asam: AsamListModel(asam: newItem), showMoreDetails: false) .environmentObject(repository) .environmentObject(MarlinRouter()) - .environmentObject(bookmarkRepository) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() window.rootViewController = controller diff --git a/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationDetailViewTests.swift b/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationDetailViewTests.swift index c60ba4eb..de03d003 100644 --- a/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationDetailViewTests.swift +++ b/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationDetailViewTests.swift @@ -44,11 +44,10 @@ final class DifferentialGPSStationDetailViewTests: XCTestCase { InjectedValues[\.dgpsemoteDataSource] = remoteDataSource localDataSource.list = [dgps] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let view = DGPSStationDetailView(featureNumber: dgps.featureNumber, volumeNumber: dgps.volumeNumber) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: view) let window = TestHelpers.getKeyWindowVisible() @@ -101,11 +100,10 @@ final class DifferentialGPSStationDetailViewTests: XCTestCase { localDataSource.list = [dgps] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let view = DGPSStationDetailView(featureNumber: dgps.featureNumber, volumeNumber: dgps.volumeNumber) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: view) let window = TestHelpers.getKeyWindowVisible() diff --git a/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationSummaryViewTests.swift index 1a5182a5..28320a61 100644 --- a/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/DifferentialGPSStation/DifferentialGPSStationSummaryViewTests.swift @@ -43,10 +43,9 @@ final class DifferentialGPSStationSummaryViewTests: XCTestCase { InjectedValues[\.dgpsemoteDataSource] = remoteDataSource localDataSource.list = [newItem] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = DGPSStationSummaryView(dgpsStation: DGPSStationListModel(dgpsStationModel: newItem)) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) @@ -65,7 +64,7 @@ final class DifferentialGPSStationSummaryViewTests: XCTestCase { waitForExpectations(timeout: 10, handler: nil) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: newItem) + BookmarkHelper().verifyBookmarkButton(bookmarkable: newItem) } func testLoadingNoVolume() { @@ -99,10 +98,9 @@ final class DifferentialGPSStationSummaryViewTests: XCTestCase { InjectedValues[\.dgpsemoteDataSource] = remoteDataSource localDataSource.list = [newItem] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = DGPSStationSummaryView(dgpsStation: DGPSStationListModel(dgpsStationModel: newItem)) - .environmentObject(bookmarkRepository) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() @@ -176,13 +174,12 @@ final class DifferentialGPSStationSummaryViewTests: XCTestCase { InjectedValues[\.dgpsemoteDataSource] = remoteDataSource localDataSource.list = [newItem] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() let summary = DGPSStationSummaryView(dgpsStation: DGPSStationListModel(dgpsStationModel: newItem)) .setShowMoreDetails(true) .setShowSectionHeader(true) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) diff --git a/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationListTests.swift b/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationListTests.swift index 678dc7da..07e95375 100644 --- a/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationListTests.swift +++ b/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationListTests.swift @@ -81,10 +81,9 @@ final class PublicationListTests: XCTestCase { let passThrough = PassThrough() let repository = PublicationRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let container = Container(passThrough: passThrough) - .environmentObject(bookmarkRepository) let controller = UIHostingController(rootView: container) let window = TestHelpers.getKeyWindowVisible() diff --git a/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationSummaryViewTests.swift index 7a36b21a..b46b35ee 100644 --- a/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/ElectronicPublication/PublicationSummaryViewTests.swift @@ -49,11 +49,10 @@ final class PublicationSummaryViewTests: XCTestCase { let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = PublicationSummaryView(s3Key: epub.s3Key ?? "") .setShowMoreDetails(false) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) @@ -103,11 +102,10 @@ final class PublicationSummaryViewTests: XCTestCase { var repository: PublicationRepository let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = PublicationSummaryView(s3Key: epub.s3Key ?? "") .setShowMoreDetails(false) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) @@ -180,11 +178,10 @@ final class PublicationSummaryViewTests: XCTestCase { localDataSource.deleteFile(s3Key: epub.s3Key ?? "") let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = PublicationSummaryView(s3Key: epub.s3Key ?? "") .setShowMoreDetails(false) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) @@ -242,11 +239,10 @@ final class PublicationSummaryViewTests: XCTestCase { let repository = PublicationRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = PublicationSummaryView(s3Key: epub.s3Key ?? "") .setShowMoreDetails(false) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() @@ -288,6 +284,6 @@ final class PublicationSummaryViewTests: XCTestCase { tester().tapView(withAccessibilityLabel: "Delete") XCTAssertFalse(repository.checkFileExists(id: epub.s3Key ?? "")) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: epub) + BookmarkHelper().verifyBookmarkButton(bookmarkable: epub) } } diff --git a/Marlin/MarlinTests/DataSources/Light/LightDetailViewTests.swift b/Marlin/MarlinTests/DataSources/Light/LightDetailViewTests.swift index da7da24b..5533ac46 100644 --- a/Marlin/MarlinTests/DataSources/Light/LightDetailViewTests.swift +++ b/Marlin/MarlinTests/DataSources/Light/LightDetailViewTests.swift @@ -36,12 +36,11 @@ final class LightDetailViewTests: XCTestCase { InjectedValues[\.lightRemoteDataSource] = remoteDataSource localDataSource.list = [light] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let detailView = LightDetailView(featureNumber: light.featureNumber!, volumeNumber: light.volumeNumber!) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: detailView) @@ -81,12 +80,11 @@ final class LightDetailViewTests: XCTestCase { InjectedValues[\.lightRemoteDataSource] = remoteDataSource localDataSource.list = [light] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let detailView = LightDetailView(featureNumber: light.featureNumber!, volumeNumber: light.volumeNumber!) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: detailView) diff --git a/Marlin/MarlinTests/DataSources/Light/LightSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/Light/LightSummaryViewTests.swift index 54610d46..a5ff7a72 100644 --- a/Marlin/MarlinTests/DataSources/Light/LightSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/Light/LightSummaryViewTests.swift @@ -38,11 +38,10 @@ final class LightSummaryViewTests: XCTestCase { InjectedValues[\.lightRemoteDataSource] = remoteDataSource localDataSource.list = [light] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summary = LightSummaryView(light: LightListModel(lightModel: light)) .setShowMoreDetails(false) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) @@ -87,7 +86,7 @@ final class LightSummaryViewTests: XCTestCase { tester().waitForTappableView(withAccessibilityLabel: "dismiss popup") tester().tapScreen(at: CGPoint(x:20, y:20)) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: light) + BookmarkHelper().verifyBookmarkButton(bookmarkable: light) } func testShowMoreDetails() { @@ -115,11 +114,10 @@ final class LightSummaryViewTests: XCTestCase { InjectedValues[\.lightRemoteDataSource] = remoteDataSource localDataSource.list = [light] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summary = LightSummaryView(light: LightListModel(lightModel: light)) .setShowMoreDetails(true) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) diff --git a/Marlin/MarlinTests/DataSources/MODU/ModuDetailViewTests.swift b/Marlin/MarlinTests/DataSources/MODU/ModuDetailViewTests.swift index 4d58264a..9079eacc 100644 --- a/Marlin/MarlinTests/DataSources/MODU/ModuDetailViewTests.swift +++ b/Marlin/MarlinTests/DataSources/MODU/ModuDetailViewTests.swift @@ -36,11 +36,10 @@ final class ModuDetailViewTests: XCTestCase { localDataSource.list = [modu] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let detailView = ModuDetailView(name: "ABAN II") - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: detailView) @@ -78,11 +77,10 @@ final class ModuDetailViewTests: XCTestCase { localDataSource.list = [modu] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let detailView = ModuDetailView(name: "ABAN II") - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: detailView) diff --git a/Marlin/MarlinTests/DataSources/MODU/ModuSummaryTests.swift b/Marlin/MarlinTests/DataSources/MODU/ModuSummaryTests.swift index a6dd0212..c876f80d 100644 --- a/Marlin/MarlinTests/DataSources/MODU/ModuSummaryTests.swift +++ b/Marlin/MarlinTests/DataSources/MODU/ModuSummaryTests.swift @@ -37,12 +37,11 @@ final class ModuSummaryTests: XCTestCase { localDataSource.list = [modu] let repository = ModuRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = ModuSummaryView(modu: ModuListModel(moduModel: modu)) .setShowMoreDetails(false) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summary) @@ -87,7 +86,7 @@ final class ModuSummaryTests: XCTestCase { tester().waitForTappableView(withAccessibilityLabel: "dismiss popup") tester().tapScreen(at: CGPoint(x:20, y:20)) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: modu) + BookmarkHelper().verifyBookmarkButton(bookmarkable: modu) } func testShowMoreDetails() { @@ -115,12 +114,11 @@ final class ModuSummaryTests: XCTestCase { localDataSource.list = [modu] let repository = ModuRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) - + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource + let summary = ModuSummaryView(modu: ModuListModel(moduModel: modu)) .setShowMoreDetails(true) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) diff --git a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningDetailTests.swift b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningDetailTests.swift index 3b2c2770..bdc03dfe 100644 --- a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningDetailTests.swift +++ b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningDetailTests.swift @@ -37,11 +37,10 @@ final class NavigationalWarningDetailTests: XCTestCase { localDataSource.list.append(newItem) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let detailView = NavigationalWarningDetailView(msgYear: newItem.msgYear!, msgNumber: newItem.msgNumber!, navArea: newItem.navArea) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: detailView) @@ -71,6 +70,6 @@ final class NavigationalWarningDetailTests: XCTestCase { let textView = viewTester().usingLabel("Text").view as! UITextView XCTAssertEqual(textView.text, newItem.text) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: newItem) + BookmarkHelper().verifyBookmarkButton(bookmarkable: newItem) } } diff --git a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningNavAreaListViewTests.swift b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningNavAreaListViewTests.swift index 65005f75..3104b8ee 100644 --- a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningNavAreaListViewTests.swift +++ b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningNavAreaListViewTests.swift @@ -65,12 +65,11 @@ final class NavigationalWarningNavAreaListViewTests: XCTestCase { localDataSource.list.append(contentsOf: warnings) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let container = Container(passThrough: passThrough) .environmentObject(appState) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: container) @@ -133,12 +132,11 @@ final class NavigationalWarningNavAreaListViewTests: XCTestCase { var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let mapFeatureRepository = NavigationalWarningsMapFeatureRepository() let container = Container(passThrough: passThrough) .environmentObject(appState) .environmentObject(mockLocationManager as LocationManager) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) .environmentObject(mapFeatureRepository) let controller = UIHostingController(rootView: container) @@ -214,10 +212,9 @@ final class NavigationalWarningNavAreaListViewTests: XCTestCase { var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let container = Container(passThrough: passThrough) .environmentObject(appState) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: container) let window = TestHelpers.getKeyWindowVisible() @@ -293,10 +290,9 @@ final class NavigationalWarningNavAreaListViewTests: XCTestCase { var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let container = Container(passThrough: passThrough) .environmentObject(appState) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: container) let window = TestHelpers.getKeyWindowVisible() @@ -372,12 +368,11 @@ final class NavigationalWarningNavAreaListViewTests: XCTestCase { var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource UserDefaults.standard.setValue(warnings[5].primaryKey, forKey: "lastSeen-4") let container = Container(passThrough: passThrough) .environmentObject(appState) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: container) let window = TestHelpers.getKeyWindowVisible() @@ -455,10 +450,9 @@ final class NavigationalWarningNavAreaListViewTests: XCTestCase { var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let container = Container(passThrough: passThrough) .environmentObject(appState) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: container) let window = TestHelpers.getKeyWindowVisible() diff --git a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningSummaryViewTests.swift index a81a502f..5f678d22 100644 --- a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningSummaryViewTests.swift @@ -37,10 +37,9 @@ final class NavigationalWarningSummaryViewTests: XCTestCase { localDataSource.list.append(nw) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summary = NavigationalWarningSummaryView(navigationalWarning: nw) .setShowMoreDetails(false) - .environmentObject(bookmarkRepository) let controller = UIHostingController(rootView: summary) let window = TestHelpers.getKeyWindowVisible() @@ -56,7 +55,7 @@ final class NavigationalWarningSummaryViewTests: XCTestCase { tester().waitForTappableView(withAccessibilityLabel: "dismiss popup") tester().tapScreen(at: CGPoint(x:20, y:20)) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: nw) + BookmarkHelper().verifyBookmarkButton(bookmarkable: nw) } } diff --git a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningsOverviewTests.swift b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningsOverviewTests.swift index bca48d76..91e056ae 100644 --- a/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningsOverviewTests.swift +++ b/Marlin/MarlinTests/DataSources/NavigationalWarning/NavigationalWarningsOverviewTests.swift @@ -101,13 +101,12 @@ final class NavigationalWarningsOverviewTests: XCTestCase { var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let mapFeatureRepository = NavigationalWarningsMapFeatureRepository() let container = Container(passThrough: passThrough) .environmentObject(appState) .environmentObject(mockLocationManager as LocationManager) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) .environmentObject(mapFeatureRepository) let controller = UIHostingController(rootView: container) @@ -205,13 +204,12 @@ final class NavigationalWarningsOverviewTests: XCTestCase { var routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let mapFeatureRepository = NavigationalWarningsMapFeatureRepository() let container = Container(passThrough: passThrough) .environmentObject(appState) .environmentObject(mockLocationManager as LocationManager) - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) .environmentObject(mapFeatureRepository) let controller = UIHostingController(rootView: container) diff --git a/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewModelTests.swift b/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewModelTests.swift index a66c7bdc..dcdf444d 100644 --- a/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewModelTests.swift +++ b/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewModelTests.swift @@ -11,6 +11,13 @@ import OHHTTPStubs @testable import Marlin final class NoticeToMarinersFullNoticeViewModelTests: XCTestCase { + + override class func setUp() { + let localDataSource = NoticeToMarinersStaticLocalDataSource() + let remoteDataSource = NoticeToMarinersRemoteDataSource() + InjectedValues[\.ntmLocalDataSource] = localDataSource + InjectedValues[\.ntmRemoteDataSource] = remoteDataSource + } func testCreateFetchRequestNoticeNumber() { let model = NoticeToMarinersFullNoticeViewViewModel() diff --git a/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewTests.swift b/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewTests.swift index eb66445a..c15b2b5b 100644 --- a/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewTests.swift +++ b/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersFullNoticeViewTests.swift @@ -250,10 +250,9 @@ final class NoticeToMarinersFullNoticeViewTests: XCTestCase { let repository = NoticeToMarinersRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let detailView = NoticeToMarinersFullNoticeView(noticeNumber: Int(ntm.noticeNumber!)) - .environmentObject(bookmarkRepository) .environmentObject(repository) let controller = UIHostingController(rootView: detailView) diff --git a/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersSummaryViewTests.swift index d245b063..22c93008 100644 --- a/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/NoticeToMariners/NoticeToMarinersSummaryViewTests.swift @@ -41,11 +41,10 @@ final class NoticeToMarinersSummaryViewTests: XCTestCase { InjectedValues[\.ntmRemoteDataSource] = remoteDataSource let repository = NoticeToMarinersRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summaryView = NoticeToMarinersFileSummaryView(odsEntryId: ntm.odsEntryId!) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summaryView) let window = TestHelpers.getKeyWindowVisible() @@ -82,11 +81,10 @@ final class NoticeToMarinersSummaryViewTests: XCTestCase { InjectedValues[\.ntmRemoteDataSource] = remoteDataSource let repository = NoticeToMarinersRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summaryView = NoticeToMarinersSummaryView(noticeToMariners: NoticeToMarinersListModel(noticeToMarinersModel: ntm)) .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summaryView) @@ -95,7 +93,7 @@ final class NoticeToMarinersSummaryViewTests: XCTestCase { tester().waitForView(withAccessibilityLabel: "202247") tester().waitForView(withAccessibilityLabel: "November 19 - November 25") - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: ntm) + BookmarkHelper().verifyBookmarkButton(bookmarkable: ntm) } func testReDownloadFullPublication() { @@ -125,12 +123,12 @@ final class NoticeToMarinersSummaryViewTests: XCTestCase { let remoteDataSource = NoticeToMarinersRemoteDataSource() InjectedValues[\.ntmLocalDataSource] = localDataSource InjectedValues[\.ntmRemoteDataSource] = remoteDataSource - let repository = NoticeToMarinersRepository() + @Injected(\.ntmRepository) + var repository: NoticeToMarinersRepository let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summaryView = NoticeToMarinersFileSummaryView(odsEntryId: ntm.odsEntryId!) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summaryView) let window = TestHelpers.getKeyWindowVisible() @@ -200,13 +198,13 @@ final class NoticeToMarinersSummaryViewTests: XCTestCase { let remoteDataSource = NoticeToMarinersRemoteDataSource() InjectedValues[\.ntmLocalDataSource] = localDataSource InjectedValues[\.ntmRemoteDataSource] = remoteDataSource - let repository = NoticeToMarinersRepository() + + @Injected(\.ntmRepository) + var repository: NoticeToMarinersRepository let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summaryView = NoticeToMarinersFileSummaryView(odsEntryId: ntm.odsEntryId!) - .environmentObject(repository) - .environmentObject(bookmarkRepository) .environmentObject(MarlinRouter()) let controller = UIHostingController(rootView: summaryView) let window = TestHelpers.getKeyWindowVisible() diff --git a/Marlin/MarlinTests/DataSources/Port/PortDetailViewTests.swift b/Marlin/MarlinTests/DataSources/Port/PortDetailViewTests.swift index c26897c0..f53767de 100644 --- a/Marlin/MarlinTests/DataSources/Port/PortDetailViewTests.swift +++ b/Marlin/MarlinTests/DataSources/Port/PortDetailViewTests.swift @@ -136,11 +136,10 @@ final class PortDetailViewTests: XCTestCase { localDataSource.list = [port] let repository = PortRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() let detailView = PortDetailView(portNumber: 760) .environmentObject(mockLocationManager as LocationManager) - .environmentObject(bookmarkRepository) let controller = UIHostingController(rootView: detailView) let window = TestHelpers.getKeyWindowVisible() @@ -394,11 +393,10 @@ final class PortDetailViewTests: XCTestCase { localDataSource.list = [port] let repository = PortRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() let detailView = PortDetailView(portNumber: 760) .environmentObject(mockLocationManager as LocationManager) - .environmentObject(bookmarkRepository) let controller = UIHostingController(rootView: detailView) let window = TestHelpers.getKeyWindowVisible() diff --git a/Marlin/MarlinTests/DataSources/Port/PortSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/Port/PortSummaryViewTests.swift index 7ef0f3cf..4bd2c8f5 100644 --- a/Marlin/MarlinTests/DataSources/Port/PortSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/Port/PortSummaryViewTests.swift @@ -137,12 +137,11 @@ final class PortSummaryViewTests: XCTestCase { localDataSource.list = [port] let repository = PortRepository() let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() let summary = PortSummaryView(port: PortListModel(portModel:port)) .setShowMoreDetails(false) .environmentObject(mockLocationManager as LocationManager) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) @@ -180,7 +179,7 @@ final class PortSummaryViewTests: XCTestCase { waitForExpectations(timeout: 10, handler: nil) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: port) + BookmarkHelper().verifyBookmarkButton(bookmarkable: port) tester().waitForView(withAccessibilityLabel: "share") tester().tapView(withAccessibilityLabel: "share") @@ -312,12 +311,11 @@ final class PortSummaryViewTests: XCTestCase { InjectedValues[\.portRemoteDataSource] = remoteDataSource localDataSource.list = [port] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() let summary = PortSummaryView(port: PortListModel(portModel:port)) .setShowMoreDetails(true) .environmentObject(mockLocationManager as LocationManager) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) @@ -331,7 +329,7 @@ final class PortSummaryViewTests: XCTestCase { tester().waitForAbsenceOfView(withAccessibilityLabel: "scope") - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: port) + BookmarkHelper().verifyBookmarkButton(bookmarkable: port) } } diff --git a/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconDetailViewTests.swift b/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconDetailViewTests.swift index 4c7a7286..4db3a38a 100644 --- a/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconDetailViewTests.swift +++ b/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconDetailViewTests.swift @@ -62,11 +62,10 @@ final class RadioBeaconDetailViewTests: XCTestCase { InjectedValues[\.radioBeaconRemoteDataSource] = remoteDataSource localDataSource.list = [rb] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let detailView = RadioBeaconDetailView(featureNumber: 10, volumeNumber: "PUB 110") - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: detailView) @@ -135,11 +134,10 @@ final class RadioBeaconDetailViewTests: XCTestCase { InjectedValues[\.radioBeaconRemoteDataSource] = remoteDataSource localDataSource.list = [rb] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let routeWaypointRepository = RouteWaypointRepository(localDataSource: RouteWaypointStaticLocalDataSource()) let detailView = RadioBeaconDetailView(featureNumber: 10, volumeNumber: "PUB 110") - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) let controller = UIHostingController(rootView: detailView) @@ -178,7 +176,7 @@ final class RadioBeaconDetailViewTests: XCTestCase { tester().waitForTappableView(withAccessibilityLabel: "dismiss popup") tester().tapScreen(at: CGPoint(x:20, y:20)) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: rb) + BookmarkHelper().verifyBookmarkButton(bookmarkable: rb) } } diff --git a/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconSummaryViewTests.swift b/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconSummaryViewTests.swift index 773970da..e22d9cf8 100644 --- a/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconSummaryViewTests.swift +++ b/Marlin/MarlinTests/DataSources/RadioBeacon/RadioBeaconSummaryViewTests.swift @@ -47,11 +47,10 @@ final class RadioBeaconSummaryViewTests: XCTestCase { InjectedValues[\.radioBeaconRemoteDataSource] = remoteDataSource localDataSource.list = [rb] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summary = RadioBeaconSummaryView(radioBeacon: RadioBeaconListModel(radioBeaconModel:rb)) .setShowMoreDetails(false) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) @@ -98,7 +97,7 @@ final class RadioBeaconSummaryViewTests: XCTestCase { tester().waitForTappableView(withAccessibilityLabel: "dismiss popup") tester().tapScreen(at: CGPoint(x:20, y:20)) - BookmarkHelper().verifyBookmarkButton(repository: bookmarkRepository, bookmarkable: rb) + BookmarkHelper().verifyBookmarkButton(bookmarkable: rb) } func testShowMoreDetails() { @@ -135,11 +134,10 @@ final class RadioBeaconSummaryViewTests: XCTestCase { InjectedValues[\.radioBeaconRemoteDataSource] = remoteDataSource localDataSource.list = [rb] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summary = RadioBeaconSummaryView(radioBeacon: RadioBeaconListModel(radioBeaconModel:rb)) .setShowMoreDetails(true) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) @@ -189,11 +187,10 @@ final class RadioBeaconSummaryViewTests: XCTestCase { InjectedValues[\.radioBeaconRemoteDataSource] = remoteDataSource localDataSource.list = [rb] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let summary = RadioBeaconSummaryView(radioBeacon: RadioBeaconListModel(radioBeaconModel:rb)) .setShowSectionHeader(true) - .environmentObject(bookmarkRepository) .environmentObject(router) let controller = UIHostingController(rootView: summary) diff --git a/Marlin/MarlinTests/Mocks/PublicationStaticLocalDataSource.swift b/Marlin/MarlinTests/Mocks/PublicationStaticLocalDataSource.swift index 4f0811db..ffdf61d4 100644 --- a/Marlin/MarlinTests/Mocks/PublicationStaticLocalDataSource.swift +++ b/Marlin/MarlinTests/Mocks/PublicationStaticLocalDataSource.swift @@ -16,12 +16,15 @@ class PublicationStaticLocalDataSource: PublicationLocalDataSource { var existsMap: [String: Bool] = [:] func checkFileExists(s3Key: String) -> Bool { + print("XXX check file exists in publication static local data source \(s3Key)") guard let epub = map[s3Key] else { + print("XXX not in map \(map)") return false } var downloaded = false if let destinationUrl = URL(string: epub.savePath) { downloaded = FileManager().fileExists(atPath: destinationUrl.path) + print("XXX downloaded? \(downloaded)") } if downloaded != epub.isDownloaded { var model = map[s3Key] ?? PublicationModel() @@ -33,6 +36,7 @@ class PublicationStaticLocalDataSource: PublicationLocalDataSource { subject.send(model) } } + print("XXXX exists map \(existsMap)") return existsMap[s3Key] ?? false } diff --git a/Marlin/MarlinTests/UI/DifferentialGPSStation/DGPSStationListTests.swift b/Marlin/MarlinTests/UI/DifferentialGPSStation/DGPSStationListTests.swift index da584aa6..c0ded9be 100644 --- a/Marlin/MarlinTests/UI/DifferentialGPSStation/DGPSStationListTests.swift +++ b/Marlin/MarlinTests/UI/DifferentialGPSStation/DGPSStationListTests.swift @@ -59,7 +59,7 @@ final class DGPSStationListTests: XCTestCase { InjectedValues[\.dgpsemoteDataSource] = remoteDataSource localDataSource.list = [dgps] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() @@ -76,7 +76,6 @@ final class DGPSStationListTests: XCTestCase { } } let view = Container() - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) .environmentObject(router) let controller = UIHostingController(rootView: view) @@ -171,7 +170,7 @@ final class DGPSStationListTests: XCTestCase { InjectedValues[\.dgpsemoteDataSource] = remoteDataSource localDataSource.list = [dgps, dgps2] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() @@ -188,7 +187,6 @@ final class DGPSStationListTests: XCTestCase { } } let view = Container() - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) .environmentObject(router) let controller = UIHostingController(rootView: view) @@ -268,7 +266,7 @@ final class DGPSStationListTests: XCTestCase { InjectedValues[\.dgpsemoteDataSource] = remoteDataSource localDataSource.list = [dgps, dgps2] let bookmarkLocalDataSource = BookmarkStaticLocalDataSource() - let bookmarkRepository = BookmarkRepository(localDataSource: bookmarkLocalDataSource) + InjectedValues[\.bookmarkLocalDataSource] = bookmarkLocalDataSource let router = MarlinRouter() @@ -285,7 +283,6 @@ final class DGPSStationListTests: XCTestCase { } } let view = Container() - .environmentObject(bookmarkRepository) .environmentObject(routeWaypointRepository) .environmentObject(router) let controller = UIHostingController(rootView: view)