From 21508c7cd5ff5b78ac30ab802a5cda7fce3d625c Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 28 Aug 2023 16:04:33 +0200 Subject: [PATCH 1/7] added an empty test --- Data/Usecases/API/APIService.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Data/Usecases/API/APIService.swift b/Data/Usecases/API/APIService.swift index 6d0e6e7..3e19cd0 100644 --- a/Data/Usecases/API/APIService.swift +++ b/Data/Usecases/API/APIService.swift @@ -43,4 +43,8 @@ struct APIService: APIWorker { throw NetworkError.statusCode(httpUrlResponse.statusCode) } } + + func anEmptyTestWhichShouldBeReportedAsACodeSmell() { + + } } From aa607a9d3c10334ccfe5d3d2506d9f306135b14e Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 28 Aug 2023 16:30:02 +0200 Subject: [PATCH 2/7] introduced SPM for domain and data --- Data/.gitignore | 9 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Data/Package.swift | 38 + Data/README.md | 3 + .../Data}/Classes/Mapper/EntityMapable.swift | 0 .../Data}/Injection/DataInjection.swift | 1 + .../Data}/Usecases/API/APIService.swift | 1 + .../Data}/Usecases/API/APIWorker.swift | 0 .../Data}/Usecases/API/Models/APIMethod.swift | 0 .../Usecases/API/Models/FlickrAPIError.swift | 0 .../API/Models/FlickrAPIErrorEntity.swift | 0 .../API/Models/FlickrAPIResponseEntity.swift | 0 .../API/Models/FlickrAPIResponseStat.swift | 0 .../Data}/Usecases/API/URLSessionable.swift | 0 .../SearchPhotos/Mappers/PhotoMapper.swift | 0 .../Mappers/SearchPhotosResultMapper.swift | 0 .../Models/FlickrSearchPhotoError.swift | 0 .../FlickrSearchPhotosAPIResponseEntity.swift | 0 .../SearchPhotos/Models/PhotoEntity.swift | 0 .../Models/SearchPhotosResponseEntity.swift | 0 .../SearchPhotos/SearchPhotosService.swift | 1 + Data/Supporting Files/Data.h | 18 - .../DataTests}/Mocks/APIWorkerMock.swift | 0 .../DataTests}/Mocks/URLSessionMock.swift | 0 .../Usecases/API/APIServiceTest.swift | 0 .../Mappers/PhotoMapperTest.swift | 0 .../SearchPhotosResultMapperTest.swift | 0 .../SearchPhotosServiceTest.swift | 0 Domain/.gitignore | 9 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Domain/Package.swift | 35 + Domain/README.md | 3 + .../Domain}/Classes/BaseError.swift | 0 .../Domain}/Injection/DomainInjection.swift | 0 .../Usecases/API/Models/NetworkError.swift | 0 .../Usecases/SearchPhotos/Models/Photo.swift | 0 .../Models/SearchPhotosResult.swift | 0 .../SearchPhotos/SearchPhotosWorker.swift | 0 Domain/Supporting Files/Domain.h | 18 - .../DomainTests/DomainPackageTests.swift | 11 + FlickrFinder.xcodeproj/project.pbxproj | 888 ++---------------- .../xcschemes/FlickrFinder.xcscheme | 47 +- 42 files changed, 208 insertions(+), 890 deletions(-) create mode 100644 Data/.gitignore create mode 100644 Data/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Data/Package.swift create mode 100644 Data/README.md rename Data/{ => Sources/Data}/Classes/Mapper/EntityMapable.swift (100%) rename Data/{ => Sources/Data}/Injection/DataInjection.swift (97%) rename Data/{ => Sources/Data}/Usecases/API/APIService.swift (98%) rename Data/{ => Sources/Data}/Usecases/API/APIWorker.swift (100%) rename Data/{ => Sources/Data}/Usecases/API/Models/APIMethod.swift (100%) rename Data/{ => Sources/Data}/Usecases/API/Models/FlickrAPIError.swift (100%) rename Data/{ => Sources/Data}/Usecases/API/Models/FlickrAPIErrorEntity.swift (100%) rename Data/{ => Sources/Data}/Usecases/API/Models/FlickrAPIResponseEntity.swift (100%) rename Data/{ => Sources/Data}/Usecases/API/Models/FlickrAPIResponseStat.swift (100%) rename Data/{ => Sources/Data}/Usecases/API/URLSessionable.swift (100%) rename Data/{ => Sources/Data}/Usecases/SearchPhotos/Mappers/PhotoMapper.swift (100%) rename Data/{ => Sources/Data}/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapper.swift (100%) rename Data/{ => Sources/Data}/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift (100%) rename Data/{ => Sources/Data}/Usecases/SearchPhotos/Models/FlickrSearchPhotosAPIResponseEntity.swift (100%) rename Data/{ => Sources/Data}/Usecases/SearchPhotos/Models/PhotoEntity.swift (100%) rename Data/{ => Sources/Data}/Usecases/SearchPhotos/Models/SearchPhotosResponseEntity.swift (100%) rename Data/{ => Sources/Data}/Usecases/SearchPhotos/SearchPhotosService.swift (99%) delete mode 100644 Data/Supporting Files/Data.h rename {DataTests => Data/Tests/DataTests}/Mocks/APIWorkerMock.swift (100%) rename {DataTests => Data/Tests/DataTests}/Mocks/URLSessionMock.swift (100%) rename {DataTests => Data/Tests/DataTests}/Usecases/API/APIServiceTest.swift (100%) rename {DataTests => Data/Tests/DataTests}/Usecases/SearchPhotos/Mappers/PhotoMapperTest.swift (100%) rename {DataTests => Data/Tests/DataTests}/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapperTest.swift (100%) rename {DataTests => Data/Tests/DataTests}/Usecases/SearchPhotos/SearchPhotosServiceTest.swift (100%) create mode 100644 Domain/.gitignore create mode 100644 Domain/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Domain/Package.swift create mode 100644 Domain/README.md rename Domain/{ => Sources/Domain}/Classes/BaseError.swift (100%) rename Domain/{ => Sources/Domain}/Injection/DomainInjection.swift (100%) rename Domain/{ => Sources/Domain}/Usecases/API/Models/NetworkError.swift (100%) rename Domain/{ => Sources/Domain}/Usecases/SearchPhotos/Models/Photo.swift (100%) rename Domain/{ => Sources/Domain}/Usecases/SearchPhotos/Models/SearchPhotosResult.swift (100%) rename Domain/{ => Sources/Domain}/Usecases/SearchPhotos/SearchPhotosWorker.swift (100%) delete mode 100644 Domain/Supporting Files/Domain.h create mode 100644 Domain/Tests/DomainTests/DomainPackageTests.swift diff --git a/Data/.gitignore b/Data/.gitignore new file mode 100644 index 0000000..3b29812 --- /dev/null +++ b/Data/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ +DerivedData/ +.swiftpm/config/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/Data/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Data/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Data/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Data/Package.swift b/Data/Package.swift new file mode 100644 index 0000000..ce437e5 --- /dev/null +++ b/Data/Package.swift @@ -0,0 +1,38 @@ +// swift-tools-version: 5.8 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Data", + platforms: [ + .iOS(.v16), + .tvOS(.v16), + .watchOS(.v9), + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "Data", + targets: ["Data"]), + ], + dependencies: [ + .package(path: "../Domain"), + .package(url: "https://github.com/hmlongco/Factory", from: "1.0.0"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "Data", + dependencies: [ + .product(name: "Domain", package: "Domain"), + ]), + .testTarget( + name: "DataTests", + dependencies: [ + "Data", + .product(name: "Factory", package: "Factory") + ]), + ] +) diff --git a/Data/README.md b/Data/README.md new file mode 100644 index 0000000..e4cf73b --- /dev/null +++ b/Data/README.md @@ -0,0 +1,3 @@ +# DataPackage + +A description of this package. diff --git a/Data/Classes/Mapper/EntityMapable.swift b/Data/Sources/Data/Classes/Mapper/EntityMapable.swift similarity index 100% rename from Data/Classes/Mapper/EntityMapable.swift rename to Data/Sources/Data/Classes/Mapper/EntityMapable.swift diff --git a/Data/Injection/DataInjection.swift b/Data/Sources/Data/Injection/DataInjection.swift similarity index 97% rename from Data/Injection/DataInjection.swift rename to Data/Sources/Data/Injection/DataInjection.swift index 85d3326..9a016d8 100644 --- a/Data/Injection/DataInjection.swift +++ b/Data/Sources/Data/Injection/DataInjection.swift @@ -7,6 +7,7 @@ import Domain import Factory +import Foundation // MARK: - Singletons extension Container: AutoRegistering { diff --git a/Data/Usecases/API/APIService.swift b/Data/Sources/Data/Usecases/API/APIService.swift similarity index 98% rename from Data/Usecases/API/APIService.swift rename to Data/Sources/Data/Usecases/API/APIService.swift index 3e19cd0..6fcb34f 100644 --- a/Data/Usecases/API/APIService.swift +++ b/Data/Sources/Data/Usecases/API/APIService.swift @@ -7,6 +7,7 @@ import Domain import Factory +import Foundation struct APIService: APIWorker { diff --git a/Data/Usecases/API/APIWorker.swift b/Data/Sources/Data/Usecases/API/APIWorker.swift similarity index 100% rename from Data/Usecases/API/APIWorker.swift rename to Data/Sources/Data/Usecases/API/APIWorker.swift diff --git a/Data/Usecases/API/Models/APIMethod.swift b/Data/Sources/Data/Usecases/API/Models/APIMethod.swift similarity index 100% rename from Data/Usecases/API/Models/APIMethod.swift rename to Data/Sources/Data/Usecases/API/Models/APIMethod.swift diff --git a/Data/Usecases/API/Models/FlickrAPIError.swift b/Data/Sources/Data/Usecases/API/Models/FlickrAPIError.swift similarity index 100% rename from Data/Usecases/API/Models/FlickrAPIError.swift rename to Data/Sources/Data/Usecases/API/Models/FlickrAPIError.swift diff --git a/Data/Usecases/API/Models/FlickrAPIErrorEntity.swift b/Data/Sources/Data/Usecases/API/Models/FlickrAPIErrorEntity.swift similarity index 100% rename from Data/Usecases/API/Models/FlickrAPIErrorEntity.swift rename to Data/Sources/Data/Usecases/API/Models/FlickrAPIErrorEntity.swift diff --git a/Data/Usecases/API/Models/FlickrAPIResponseEntity.swift b/Data/Sources/Data/Usecases/API/Models/FlickrAPIResponseEntity.swift similarity index 100% rename from Data/Usecases/API/Models/FlickrAPIResponseEntity.swift rename to Data/Sources/Data/Usecases/API/Models/FlickrAPIResponseEntity.swift diff --git a/Data/Usecases/API/Models/FlickrAPIResponseStat.swift b/Data/Sources/Data/Usecases/API/Models/FlickrAPIResponseStat.swift similarity index 100% rename from Data/Usecases/API/Models/FlickrAPIResponseStat.swift rename to Data/Sources/Data/Usecases/API/Models/FlickrAPIResponseStat.swift diff --git a/Data/Usecases/API/URLSessionable.swift b/Data/Sources/Data/Usecases/API/URLSessionable.swift similarity index 100% rename from Data/Usecases/API/URLSessionable.swift rename to Data/Sources/Data/Usecases/API/URLSessionable.swift diff --git a/Data/Usecases/SearchPhotos/Mappers/PhotoMapper.swift b/Data/Sources/Data/Usecases/SearchPhotos/Mappers/PhotoMapper.swift similarity index 100% rename from Data/Usecases/SearchPhotos/Mappers/PhotoMapper.swift rename to Data/Sources/Data/Usecases/SearchPhotos/Mappers/PhotoMapper.swift diff --git a/Data/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapper.swift b/Data/Sources/Data/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapper.swift similarity index 100% rename from Data/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapper.swift rename to Data/Sources/Data/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapper.swift diff --git a/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift b/Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift similarity index 100% rename from Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift rename to Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift diff --git a/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotosAPIResponseEntity.swift b/Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotosAPIResponseEntity.swift similarity index 100% rename from Data/Usecases/SearchPhotos/Models/FlickrSearchPhotosAPIResponseEntity.swift rename to Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotosAPIResponseEntity.swift diff --git a/Data/Usecases/SearchPhotos/Models/PhotoEntity.swift b/Data/Sources/Data/Usecases/SearchPhotos/Models/PhotoEntity.swift similarity index 100% rename from Data/Usecases/SearchPhotos/Models/PhotoEntity.swift rename to Data/Sources/Data/Usecases/SearchPhotos/Models/PhotoEntity.swift diff --git a/Data/Usecases/SearchPhotos/Models/SearchPhotosResponseEntity.swift b/Data/Sources/Data/Usecases/SearchPhotos/Models/SearchPhotosResponseEntity.swift similarity index 100% rename from Data/Usecases/SearchPhotos/Models/SearchPhotosResponseEntity.swift rename to Data/Sources/Data/Usecases/SearchPhotos/Models/SearchPhotosResponseEntity.swift diff --git a/Data/Usecases/SearchPhotos/SearchPhotosService.swift b/Data/Sources/Data/Usecases/SearchPhotos/SearchPhotosService.swift similarity index 99% rename from Data/Usecases/SearchPhotos/SearchPhotosService.swift rename to Data/Sources/Data/Usecases/SearchPhotos/SearchPhotosService.swift index cbbbb81..16443eb 100644 --- a/Data/Usecases/SearchPhotos/SearchPhotosService.swift +++ b/Data/Sources/Data/Usecases/SearchPhotos/SearchPhotosService.swift @@ -7,6 +7,7 @@ import Domain import Factory +import Foundation struct SearchPhotosService: SearchPhotosWorker { diff --git a/Data/Supporting Files/Data.h b/Data/Supporting Files/Data.h deleted file mode 100644 index 8e0d2b0..0000000 --- a/Data/Supporting Files/Data.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Data.h -// Data -// -// Created by Jeroen Bakker on 28/01/2023. -// - -#import - -//! Project version number for Data. -FOUNDATION_EXPORT double DataVersionNumber; - -//! Project version string for Data. -FOUNDATION_EXPORT const unsigned char DataVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/DataTests/Mocks/APIWorkerMock.swift b/Data/Tests/DataTests/Mocks/APIWorkerMock.swift similarity index 100% rename from DataTests/Mocks/APIWorkerMock.swift rename to Data/Tests/DataTests/Mocks/APIWorkerMock.swift diff --git a/DataTests/Mocks/URLSessionMock.swift b/Data/Tests/DataTests/Mocks/URLSessionMock.swift similarity index 100% rename from DataTests/Mocks/URLSessionMock.swift rename to Data/Tests/DataTests/Mocks/URLSessionMock.swift diff --git a/DataTests/Usecases/API/APIServiceTest.swift b/Data/Tests/DataTests/Usecases/API/APIServiceTest.swift similarity index 100% rename from DataTests/Usecases/API/APIServiceTest.swift rename to Data/Tests/DataTests/Usecases/API/APIServiceTest.swift diff --git a/DataTests/Usecases/SearchPhotos/Mappers/PhotoMapperTest.swift b/Data/Tests/DataTests/Usecases/SearchPhotos/Mappers/PhotoMapperTest.swift similarity index 100% rename from DataTests/Usecases/SearchPhotos/Mappers/PhotoMapperTest.swift rename to Data/Tests/DataTests/Usecases/SearchPhotos/Mappers/PhotoMapperTest.swift diff --git a/DataTests/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapperTest.swift b/Data/Tests/DataTests/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapperTest.swift similarity index 100% rename from DataTests/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapperTest.swift rename to Data/Tests/DataTests/Usecases/SearchPhotos/Mappers/SearchPhotosResultMapperTest.swift diff --git a/DataTests/Usecases/SearchPhotos/SearchPhotosServiceTest.swift b/Data/Tests/DataTests/Usecases/SearchPhotos/SearchPhotosServiceTest.swift similarity index 100% rename from DataTests/Usecases/SearchPhotos/SearchPhotosServiceTest.swift rename to Data/Tests/DataTests/Usecases/SearchPhotos/SearchPhotosServiceTest.swift diff --git a/Domain/.gitignore b/Domain/.gitignore new file mode 100644 index 0000000..3b29812 --- /dev/null +++ b/Domain/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ +DerivedData/ +.swiftpm/config/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/Domain/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Domain/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Domain/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Domain/Package.swift b/Domain/Package.swift new file mode 100644 index 0000000..1b3f36e --- /dev/null +++ b/Domain/Package.swift @@ -0,0 +1,35 @@ +// swift-tools-version: 5.8 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Domain", + platforms: [ + .iOS(.v16), + .tvOS(.v16), + .watchOS(.v9), + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "Domain", + targets: ["Domain"]), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/hmlongco/Factory", from: "1.0.0"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "Domain", + dependencies: [ + .product(name: "Factory", package: "Factory") + ]), + .testTarget( + name: "DomainTests", + dependencies: ["Domain"]), + ] +) diff --git a/Domain/README.md b/Domain/README.md new file mode 100644 index 0000000..6623391 --- /dev/null +++ b/Domain/README.md @@ -0,0 +1,3 @@ +# DomainPackage + +A description of this package. diff --git a/Domain/Classes/BaseError.swift b/Domain/Sources/Domain/Classes/BaseError.swift similarity index 100% rename from Domain/Classes/BaseError.swift rename to Domain/Sources/Domain/Classes/BaseError.swift diff --git a/Domain/Injection/DomainInjection.swift b/Domain/Sources/Domain/Injection/DomainInjection.swift similarity index 100% rename from Domain/Injection/DomainInjection.swift rename to Domain/Sources/Domain/Injection/DomainInjection.swift diff --git a/Domain/Usecases/API/Models/NetworkError.swift b/Domain/Sources/Domain/Usecases/API/Models/NetworkError.swift similarity index 100% rename from Domain/Usecases/API/Models/NetworkError.swift rename to Domain/Sources/Domain/Usecases/API/Models/NetworkError.swift diff --git a/Domain/Usecases/SearchPhotos/Models/Photo.swift b/Domain/Sources/Domain/Usecases/SearchPhotos/Models/Photo.swift similarity index 100% rename from Domain/Usecases/SearchPhotos/Models/Photo.swift rename to Domain/Sources/Domain/Usecases/SearchPhotos/Models/Photo.swift diff --git a/Domain/Usecases/SearchPhotos/Models/SearchPhotosResult.swift b/Domain/Sources/Domain/Usecases/SearchPhotos/Models/SearchPhotosResult.swift similarity index 100% rename from Domain/Usecases/SearchPhotos/Models/SearchPhotosResult.swift rename to Domain/Sources/Domain/Usecases/SearchPhotos/Models/SearchPhotosResult.swift diff --git a/Domain/Usecases/SearchPhotos/SearchPhotosWorker.swift b/Domain/Sources/Domain/Usecases/SearchPhotos/SearchPhotosWorker.swift similarity index 100% rename from Domain/Usecases/SearchPhotos/SearchPhotosWorker.swift rename to Domain/Sources/Domain/Usecases/SearchPhotos/SearchPhotosWorker.swift diff --git a/Domain/Supporting Files/Domain.h b/Domain/Supporting Files/Domain.h deleted file mode 100644 index dca6388..0000000 --- a/Domain/Supporting Files/Domain.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Domain.h -// Domain -// -// Created by Jeroen Bakker on 28/01/2023. -// - -#import - -//! Project version number for Domain. -FOUNDATION_EXPORT double DomainVersionNumber; - -//! Project version string for Domain. -FOUNDATION_EXPORT const unsigned char DomainVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Domain/Tests/DomainTests/DomainPackageTests.swift b/Domain/Tests/DomainTests/DomainPackageTests.swift new file mode 100644 index 0000000..5fe7b71 --- /dev/null +++ b/Domain/Tests/DomainTests/DomainPackageTests.swift @@ -0,0 +1,11 @@ +import XCTest +@testable import Domain + +final class DomainPackageTests: XCTestCase { + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct + // results. +// XCTAssertEqual(Domain().text, "Hello, World!") + } +} diff --git a/FlickrFinder.xcodeproj/project.pbxproj b/FlickrFinder.xcodeproj/project.pbxproj index a2d1cb5..a01e35c 100644 --- a/FlickrFinder.xcodeproj/project.pbxproj +++ b/FlickrFinder.xcodeproj/project.pbxproj @@ -14,14 +14,6 @@ 03090EEF2985416000EEEE0E /* Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 03090EEE2985416000EEEE0E /* Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 03090EF22985416000EEEE0E /* Presentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EEC2985416000EEEE0E /* Presentation.framework */; }; 03090EF32985416000EEEE0E /* Presentation.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EEC2985416000EEEE0E /* Presentation.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03090F002985417800EEEE0E /* Domain.h in Headers */ = {isa = PBXBuildFile; fileRef = 03090EFF2985417800EEEE0E /* Domain.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03090F032985417800EEEE0E /* Domain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EFD2985417800EEEE0E /* Domain.framework */; }; - 03090F042985417800EEEE0E /* Domain.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EFD2985417800EEEE0E /* Domain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03090F152985417E00EEEE0E /* Data.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03090F0D2985417E00EEEE0E /* Data.framework */; }; - 03090F1D2985417E00EEEE0E /* Data.h in Headers */ = {isa = PBXBuildFile; fileRef = 03090F0F2985417E00EEEE0E /* Data.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03090F202985417F00EEEE0E /* Data.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03090F0D2985417E00EEEE0E /* Data.framework */; }; - 03090F212985417F00EEEE0E /* Data.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03090F0D2985417E00EEEE0E /* Data.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03090F30298541F600EEEE0E /* Factory in Frameworks */ = {isa = PBXBuildFile; productRef = 03090F2F298541F600EEEE0E /* Factory */; }; 03090F332985421500EEEE0E /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = 03090F322985421500EEEE0E /* Nuke */; }; 03090F3A2985424B00EEEE0E /* Coordinatorable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F392985424B00EEEE0E /* Coordinatorable.swift */; }; 03090F3D2985426300EEEE0E /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F3C2985426300EEEE0E /* AppCoordinator.swift */; }; @@ -32,42 +24,8 @@ 03090F4B298543E000EEEE0E /* SearchPhotosViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F4A298543E000EEEE0E /* SearchPhotosViewController.swift */; }; 03090F4D2985459800EEEE0E /* SearchPhotosViewController+Factory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F4C2985459800EEEE0E /* SearchPhotosViewController+Factory.swift */; }; 03090F502985468C00EEEE0E /* SyncSafe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F4F2985468C00EEEE0E /* SyncSafe.swift */; }; - 03090F53298548CB00EEEE0E /* SearchPhotosService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F52298548CB00EEEE0E /* SearchPhotosService.swift */; }; - 03090F56298548D600EEEE0E /* SearchPhotosWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F55298548D600EEEE0E /* SearchPhotosWorker.swift */; }; - 03090F58298549A000EEEE0E /* Domain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EFD2985417800EEEE0E /* Domain.framework */; }; - 03090F59298549A000EEEE0E /* Domain.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EFD2985417800EEEE0E /* Domain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03090F5D298549A600EEEE0E /* Domain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EFD2985417800EEEE0E /* Domain.framework */; }; - 03090F5E298549A600EEEE0E /* Domain.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03090EFD2985417800EEEE0E /* Domain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03090F6829854CDF00EEEE0E /* DomainInjection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F6729854CDF00EEEE0E /* DomainInjection.swift */; }; - 03090F6A29854DC600EEEE0E /* Factory in Frameworks */ = {isa = PBXBuildFile; productRef = 03090F6929854DC600EEEE0E /* Factory */; }; - 03090F6C29854DD400EEEE0E /* Factory in Frameworks */ = {isa = PBXBuildFile; productRef = 03090F6B29854DD400EEEE0E /* Factory */; }; - 03090F6E29854DDA00EEEE0E /* Factory in Frameworks */ = {isa = PBXBuildFile; productRef = 03090F6D29854DDA00EEEE0E /* Factory */; }; - 03090F7029854DF900EEEE0E /* DataInjection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F6F29854DF900EEEE0E /* DataInjection.swift */; }; - 03090F762985523E00EEEE0E /* BaseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F752985523E00EEEE0E /* BaseError.swift */; }; - 03090F78298553F200EEEE0E /* NetworkError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F77298553F200EEEE0E /* NetworkError.swift */; }; - 03090F7C298555DC00EEEE0E /* FlickrSearchPhotoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F7B298555DC00EEEE0E /* FlickrSearchPhotoError.swift */; }; - 03090F7F298555EF00EEEE0E /* FlickrAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F7E298555EF00EEEE0E /* FlickrAPIError.swift */; }; - 03090F812985573000EEEE0E /* FlickrAPIErrorEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F802985573000EEEE0E /* FlickrAPIErrorEntity.swift */; }; - 03090F832985577800EEEE0E /* FlickrSearchPhotosAPIResponseEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F822985577800EEEE0E /* FlickrSearchPhotosAPIResponseEntity.swift */; }; - 03090F852985585400EEEE0E /* SearchPhotosResponseEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F842985585400EEEE0E /* SearchPhotosResponseEntity.swift */; }; - 03090F872985588B00EEEE0E /* PhotoEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F862985588B00EEEE0E /* PhotoEntity.swift */; }; - 03090F8929855A1E00EEEE0E /* FlickrAPIResponseStat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F8829855A1E00EEEE0E /* FlickrAPIResponseStat.swift */; }; - 03090F8C29855A8F00EEEE0E /* SearchPhotosResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F8B29855A8F00EEEE0E /* SearchPhotosResult.swift */; }; - 03090F8E29855AF100EEEE0E /* Photo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F8D29855AF100EEEE0E /* Photo.swift */; }; - 03090F9229855D2400EEEE0E /* EntityMapable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F9129855D2400EEEE0E /* EntityMapable.swift */; }; - 03090F9429855D6900EEEE0E /* SearchPhotosResultMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F9329855D6900EEEE0E /* SearchPhotosResultMapper.swift */; }; - 03090F9629855DE700EEEE0E /* PhotoMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F9529855DE700EEEE0E /* PhotoMapper.swift */; }; 03090F982985656200EEEE0E /* Task+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F972985656200EEEE0E /* Task+Helper.swift */; }; 03090F9A2985672900EEEE0E /* ThreadSafe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F992985672900EEEE0E /* ThreadSafe.swift */; }; - 03090F9D298568AD00EEEE0E /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090F9C298568AD00EEEE0E /* APIService.swift */; }; - 03090FA2298569C300EEEE0E /* APIWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FA02985699400EEEE0E /* APIWorker.swift */; }; - 03090FA429856A4C00EEEE0E /* FlickrAPIResponseEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FA329856A4C00EEEE0E /* FlickrAPIResponseEntity.swift */; }; - 03090FA629856AD000EEEE0E /* APIMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FA529856AD000EEEE0E /* APIMethod.swift */; }; - 03090FA929856B9800EEEE0E /* SearchPhotosServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FA829856B9800EEEE0E /* SearchPhotosServiceTest.swift */; }; - 03090FAE29856BCD00EEEE0E /* APIWorkerMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FAD29856BCD00EEEE0E /* APIWorkerMock.swift */; }; - 03090FB7298572B600EEEE0E /* Factory in Frameworks */ = {isa = PBXBuildFile; productRef = 03090FB6298572B600EEEE0E /* Factory */; }; - 03090FBC298573A800EEEE0E /* SearchPhotosResultMapperTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FBB298573A800EEEE0E /* SearchPhotosResultMapperTest.swift */; }; - 03090FBE2985751B00EEEE0E /* PhotoMapperTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FBD2985751B00EEEE0E /* PhotoMapperTest.swift */; }; 03090FC129869F8A00EEEE0E /* SearchPhotosSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FC029869F8A00EEEE0E /* SearchPhotosSection.swift */; }; 03090FC329869FDD00EEEE0E /* SearchPhotosItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FC229869FDD00EEEE0E /* SearchPhotosItem.swift */; }; 03090FC52986A4CA00EEEE0E /* SearchPhotosViewControllerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FC42986A4CA00EEEE0E /* SearchPhotosViewControllerViewModel.swift */; }; @@ -76,9 +34,11 @@ 03090FCE2986AE7B00EEEE0E /* SearchPhotosResultCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FCD2986AE7B00EEEE0E /* SearchPhotosResultCell.swift */; }; 03090FD02986AF7800EEEE0E /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = 03090FCF2986AF7800EEEE0E /* Nuke */; }; 03090FE02986BE8700EEEE0E /* SearchPhotosTitleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FDF2986BE8700EEEE0E /* SearchPhotosTitleCell.swift */; }; - 03090FE22986C11B00EEEE0E /* APIServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FE12986C11B00EEEE0E /* APIServiceTest.swift */; }; - 03090FE82986C42500EEEE0E /* URLSessionMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FE72986C42500EEEE0E /* URLSessionMock.swift */; }; - 03090FEA2986C6DC00EEEE0E /* URLSessionable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03090FE92986C6DC00EEEE0E /* URLSessionable.swift */; }; + B0A05DF22A9CE532002EF162 /* Domain in Frameworks */ = {isa = PBXBuildFile; productRef = B0A05DF12A9CE532002EF162 /* Domain */; }; + B0A05DF42A9CE539002EF162 /* Data in Frameworks */ = {isa = PBXBuildFile; productRef = B0A05DF32A9CE539002EF162 /* Data */; }; + B0A05DF62A9CE53B002EF162 /* Domain in Frameworks */ = {isa = PBXBuildFile; productRef = B0A05DF52A9CE53B002EF162 /* Domain */; }; + B0A05DF92A9CE64A002EF162 /* Factory in Frameworks */ = {isa = PBXBuildFile; productRef = B0A05DF82A9CE64A002EF162 /* Factory */; }; + B0A05DFB2A9CE656002EF162 /* Factory in Frameworks */ = {isa = PBXBuildFile; productRef = B0A05DFA2A9CE656002EF162 /* Factory */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -89,48 +49,6 @@ remoteGlobalIDString = 03090EEB2985416000EEEE0E; remoteInfo = Presentation; }; - 03090F012985417800EEEE0E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 03090EA72985408C00EEEE0E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 03090EFC2985417800EEEE0E; - remoteInfo = Domain; - }; - 03090F162985417E00EEEE0E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 03090EA72985408C00EEEE0E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 03090F0C2985417E00EEEE0E; - remoteInfo = Data; - }; - 03090F182985417E00EEEE0E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 03090EA72985408C00EEEE0E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 03090EAE2985408C00EEEE0E; - remoteInfo = FlickrFinder; - }; - 03090F1E2985417F00EEEE0E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 03090EA72985408C00EEEE0E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 03090F0C2985417E00EEEE0E; - remoteInfo = Data; - }; - 03090F5A298549A000EEEE0E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 03090EA72985408C00EEEE0E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 03090EFC2985417800EEEE0E; - remoteInfo = Domain; - }; - 03090F5F298549A600EEEE0E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 03090EA72985408C00EEEE0E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 03090EFC2985417800EEEE0E; - remoteInfo = Domain; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -140,8 +58,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 03090F212985417F00EEEE0E /* Data.framework in Embed Frameworks */, - 03090F042985417800EEEE0E /* Domain.framework in Embed Frameworks */, 03090EF32985416000EEEE0E /* Presentation.framework in Embed Frameworks */, ); name = "Embed Frameworks"; @@ -153,18 +69,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 03090F59298549A000EEEE0E /* Domain.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F61298549A600EEEE0E /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 03090F5E298549A600EEEE0E /* Domain.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -180,11 +84,6 @@ 03090EC02985408D00EEEE0E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 03090EEC2985416000EEEE0E /* Presentation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Presentation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 03090EEE2985416000EEEE0E /* Presentation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Presentation.h; sourceTree = ""; }; - 03090EFD2985417800EEEE0E /* Domain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Domain.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 03090EFF2985417800EEEE0E /* Domain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Domain.h; sourceTree = ""; }; - 03090F0D2985417E00EEEE0E /* Data.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Data.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 03090F0F2985417E00EEEE0E /* Data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Data.h; sourceTree = ""; }; - 03090F142985417E00EEEE0E /* DataTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DataTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 03090F392985424B00EEEE0E /* Coordinatorable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coordinatorable.swift; sourceTree = ""; }; 03090F3C2985426300EEEE0E /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 03090F3F298542CF00EEEE0E /* SearchPhotosCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosCoordinator.swift; sourceTree = ""; }; @@ -194,34 +93,8 @@ 03090F4A298543E000EEEE0E /* SearchPhotosViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosViewController.swift; sourceTree = ""; }; 03090F4C2985459800EEEE0E /* SearchPhotosViewController+Factory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchPhotosViewController+Factory.swift"; sourceTree = ""; }; 03090F4F2985468C00EEEE0E /* SyncSafe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncSafe.swift; sourceTree = ""; }; - 03090F52298548CB00EEEE0E /* SearchPhotosService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosService.swift; sourceTree = ""; }; - 03090F55298548D600EEEE0E /* SearchPhotosWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosWorker.swift; sourceTree = ""; }; - 03090F6729854CDF00EEEE0E /* DomainInjection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainInjection.swift; sourceTree = ""; }; - 03090F6F29854DF900EEEE0E /* DataInjection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataInjection.swift; sourceTree = ""; }; - 03090F752985523E00EEEE0E /* BaseError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseError.swift; sourceTree = ""; }; - 03090F77298553F200EEEE0E /* NetworkError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkError.swift; sourceTree = ""; }; - 03090F7B298555DC00EEEE0E /* FlickrSearchPhotoError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlickrSearchPhotoError.swift; sourceTree = ""; }; - 03090F7E298555EF00EEEE0E /* FlickrAPIError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlickrAPIError.swift; sourceTree = ""; }; - 03090F802985573000EEEE0E /* FlickrAPIErrorEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlickrAPIErrorEntity.swift; sourceTree = ""; }; - 03090F822985577800EEEE0E /* FlickrSearchPhotosAPIResponseEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlickrSearchPhotosAPIResponseEntity.swift; sourceTree = ""; }; - 03090F842985585400EEEE0E /* SearchPhotosResponseEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosResponseEntity.swift; sourceTree = ""; }; - 03090F862985588B00EEEE0E /* PhotoEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoEntity.swift; sourceTree = ""; }; - 03090F8829855A1E00EEEE0E /* FlickrAPIResponseStat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlickrAPIResponseStat.swift; sourceTree = ""; }; - 03090F8B29855A8F00EEEE0E /* SearchPhotosResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosResult.swift; sourceTree = ""; }; - 03090F8D29855AF100EEEE0E /* Photo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Photo.swift; sourceTree = ""; }; - 03090F9129855D2400EEEE0E /* EntityMapable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntityMapable.swift; sourceTree = ""; }; - 03090F9329855D6900EEEE0E /* SearchPhotosResultMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosResultMapper.swift; sourceTree = ""; }; - 03090F9529855DE700EEEE0E /* PhotoMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoMapper.swift; sourceTree = ""; }; 03090F972985656200EEEE0E /* Task+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Task+Helper.swift"; sourceTree = ""; }; 03090F992985672900EEEE0E /* ThreadSafe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadSafe.swift; sourceTree = ""; }; - 03090F9C298568AD00EEEE0E /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; - 03090FA02985699400EEEE0E /* APIWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIWorker.swift; sourceTree = ""; }; - 03090FA329856A4C00EEEE0E /* FlickrAPIResponseEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlickrAPIResponseEntity.swift; sourceTree = ""; }; - 03090FA529856AD000EEEE0E /* APIMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIMethod.swift; sourceTree = ""; }; - 03090FA829856B9800EEEE0E /* SearchPhotosServiceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosServiceTest.swift; sourceTree = ""; }; - 03090FAD29856BCD00EEEE0E /* APIWorkerMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIWorkerMock.swift; sourceTree = ""; }; - 03090FBB298573A800EEEE0E /* SearchPhotosResultMapperTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosResultMapperTest.swift; sourceTree = ""; }; - 03090FBD2985751B00EEEE0E /* PhotoMapperTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoMapperTest.swift; sourceTree = ""; }; 03090FC029869F8A00EEEE0E /* SearchPhotosSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosSection.swift; sourceTree = ""; }; 03090FC229869FDD00EEEE0E /* SearchPhotosItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosItem.swift; sourceTree = ""; }; 03090FC42986A4CA00EEEE0E /* SearchPhotosViewControllerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosViewControllerViewModel.swift; sourceTree = ""; }; @@ -229,9 +102,8 @@ 03090FC92986A7D400EEEE0E /* Updatable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Updatable.swift; sourceTree = ""; }; 03090FCD2986AE7B00EEEE0E /* SearchPhotosResultCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosResultCell.swift; sourceTree = ""; }; 03090FDF2986BE8700EEEE0E /* SearchPhotosTitleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPhotosTitleCell.swift; sourceTree = ""; }; - 03090FE12986C11B00EEEE0E /* APIServiceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIServiceTest.swift; sourceTree = ""; }; - 03090FE72986C42500EEEE0E /* URLSessionMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSessionMock.swift; sourceTree = ""; }; - 03090FE92986C6DC00EEEE0E /* URLSessionable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSessionable.swift; sourceTree = ""; }; + B098FB1C2A9CE4F400DD7798 /* Data */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Data; sourceTree = ""; }; + B098FB1D2A9CE4F900DD7798 /* Domain */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Domain; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -239,10 +111,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 03090F202985417F00EEEE0E /* Data.framework in Frameworks */, - 03090F032985417800EEEE0E /* Domain.framework in Frameworks */, + B0A05DF62A9CE53B002EF162 /* Domain in Frameworks */, + B0A05DF92A9CE64A002EF162 /* Factory in Frameworks */, 03090EF22985416000EEEE0E /* Presentation.framework in Frameworks */, - 03090F30298541F600EEEE0E /* Factory in Frameworks */, + B0A05DF42A9CE539002EF162 /* Data in Frameworks */, 03090F332985421500EEEE0E /* Nuke in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -251,35 +123,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B0A05DFB2A9CE656002EF162 /* Factory in Frameworks */, + B0A05DF22A9CE532002EF162 /* Domain in Frameworks */, 03090FD02986AF7800EEEE0E /* Nuke in Frameworks */, - 03090F58298549A000EEEE0E /* Domain.framework in Frameworks */, - 03090F6C29854DD400EEEE0E /* Factory in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090EFA2985417800EEEE0E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090F6A29854DC600EEEE0E /* Factory in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F0A2985417E00EEEE0E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090F5D298549A600EEEE0E /* Domain.framework in Frameworks */, - 03090F6E29854DDA00EEEE0E /* Factory in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F112985417E00EEEE0E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090F152985417E00EEEE0E /* Data.framework in Frameworks */, - 03090FB7298572B600EEEE0E /* Factory in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -289,11 +135,9 @@ 03090EA62985408C00EEEE0E = { isa = PBXGroup; children = ( + B098FB192A9CE38A00DD7798 /* Packages */, 03090EB12985408C00EEEE0E /* FlickrFinder */, 03090EED2985416000EEEE0E /* Presentation */, - 03090EFE2985417800EEEE0E /* Domain */, - 03090F0E2985417E00EEEE0E /* Data */, - 03090F1A2985417E00EEEE0E /* DataTests */, 03090EB02985408C00EEEE0E /* Products */, 03090F57298549A000EEEE0E /* Frameworks */, ); @@ -304,9 +148,6 @@ children = ( 03090EAF2985408C00EEEE0E /* FlickrFinder.app */, 03090EEC2985416000EEEE0E /* Presentation.framework */, - 03090EFD2985417800EEEE0E /* Domain.framework */, - 03090F0D2985417E00EEEE0E /* Data.framework */, - 03090F142985417E00EEEE0E /* DataTests.xctest */, ); name = Products; sourceTree = ""; @@ -374,37 +215,6 @@ path = Presentation; sourceTree = ""; }; - 03090EFE2985417800EEEE0E /* Domain */ = { - isa = PBXGroup; - children = ( - 03090F742985523600EEEE0E /* Classes */, - 03090F6529854CA100EEEE0E /* Injection */, - 03090F2B298541A900EEEE0E /* Usecases */, - 03090F292985419800EEEE0E /* Supporting Files */, - ); - path = Domain; - sourceTree = ""; - }; - 03090F0E2985417E00EEEE0E /* Data */ = { - isa = PBXGroup; - children = ( - 03090F79298555C000EEEE0E /* Classes */, - 03090F6629854CAB00EEEE0E /* Injection */, - 03090F2C298541B500EEEE0E /* Usecases */, - 03090F2A298541A000EEEE0E /* Supporting Files */, - ); - path = Data; - sourceTree = ""; - }; - 03090F1A2985417E00EEEE0E /* DataTests */ = { - isa = PBXGroup; - children = ( - 03090FAC29856BC400EEEE0E /* Mocks */, - 03090F2D298541BA00EEEE0E /* Usecases */, - ); - path = DataTests; - sourceTree = ""; - }; 03090F282985418F00EEEE0E /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -413,49 +223,6 @@ path = "Supporting Files"; sourceTree = ""; }; - 03090F292985419800EEEE0E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 03090EFF2985417800EEEE0E /* Domain.h */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - 03090F2A298541A000EEEE0E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 03090F0F2985417E00EEEE0E /* Data.h */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - 03090F2B298541A900EEEE0E /* Usecases */ = { - isa = PBXGroup; - children = ( - 03090F9E2985698200EEEE0E /* API */, - 03090F54298548CE00EEEE0E /* SearchPhotos */, - ); - path = Usecases; - sourceTree = ""; - }; - 03090F2C298541B500EEEE0E /* Usecases */ = { - isa = PBXGroup; - children = ( - 03090F9B2985689C00EEEE0E /* API */, - 03090F51298548BF00EEEE0E /* SearchPhotos */, - ); - path = Usecases; - sourceTree = ""; - }; - 03090F2D298541BA00EEEE0E /* Usecases */ = { - isa = PBXGroup; - children = ( - 03090FAB29856BBC00EEEE0E /* API */, - 03090FA729856B8300EEEE0E /* SearchPhotos */, - ); - path = Usecases; - sourceTree = ""; - }; 03090F372985423300EEEE0E /* Coordinator */ = { isa = PBXGroup; children = ( @@ -515,25 +282,6 @@ path = Helpers; sourceTree = ""; }; - 03090F51298548BF00EEEE0E /* SearchPhotos */ = { - isa = PBXGroup; - children = ( - 03090F8F29855D1200EEEE0E /* Mappers */, - 03090F7A298555C800EEEE0E /* Models */, - 03090F52298548CB00EEEE0E /* SearchPhotosService.swift */, - ); - path = SearchPhotos; - sourceTree = ""; - }; - 03090F54298548CE00EEEE0E /* SearchPhotos */ = { - isa = PBXGroup; - children = ( - 03090F8A29855A7F00EEEE0E /* Models */, - 03090F55298548D600EEEE0E /* SearchPhotosWorker.swift */, - ); - path = SearchPhotos; - sourceTree = ""; - }; 03090F57298549A000EEEE0E /* Frameworks */ = { isa = PBXGroup; children = ( @@ -541,149 +289,6 @@ name = Frameworks; sourceTree = ""; }; - 03090F6529854CA100EEEE0E /* Injection */ = { - isa = PBXGroup; - children = ( - 03090F6729854CDF00EEEE0E /* DomainInjection.swift */, - ); - path = Injection; - sourceTree = ""; - }; - 03090F6629854CAB00EEEE0E /* Injection */ = { - isa = PBXGroup; - children = ( - 03090F6F29854DF900EEEE0E /* DataInjection.swift */, - ); - path = Injection; - sourceTree = ""; - }; - 03090F742985523600EEEE0E /* Classes */ = { - isa = PBXGroup; - children = ( - 03090F752985523E00EEEE0E /* BaseError.swift */, - ); - path = Classes; - sourceTree = ""; - }; - 03090F79298555C000EEEE0E /* Classes */ = { - isa = PBXGroup; - children = ( - 03090F9029855D1800EEEE0E /* Mapper */, - ); - path = Classes; - sourceTree = ""; - }; - 03090F7A298555C800EEEE0E /* Models */ = { - isa = PBXGroup; - children = ( - 03090F822985577800EEEE0E /* FlickrSearchPhotosAPIResponseEntity.swift */, - 03090F7B298555DC00EEEE0E /* FlickrSearchPhotoError.swift */, - 03090F842985585400EEEE0E /* SearchPhotosResponseEntity.swift */, - 03090F862985588B00EEEE0E /* PhotoEntity.swift */, - ); - path = Models; - sourceTree = ""; - }; - 03090F7D298555E900EEEE0E /* Models */ = { - isa = PBXGroup; - children = ( - 03090F7E298555EF00EEEE0E /* FlickrAPIError.swift */, - 03090F802985573000EEEE0E /* FlickrAPIErrorEntity.swift */, - 03090FA329856A4C00EEEE0E /* FlickrAPIResponseEntity.swift */, - 03090F8829855A1E00EEEE0E /* FlickrAPIResponseStat.swift */, - 03090FA529856AD000EEEE0E /* APIMethod.swift */, - ); - path = Models; - sourceTree = ""; - }; - 03090F8A29855A7F00EEEE0E /* Models */ = { - isa = PBXGroup; - children = ( - 03090F8B29855A8F00EEEE0E /* SearchPhotosResult.swift */, - 03090F8D29855AF100EEEE0E /* Photo.swift */, - ); - path = Models; - sourceTree = ""; - }; - 03090F8F29855D1200EEEE0E /* Mappers */ = { - isa = PBXGroup; - children = ( - 03090F9329855D6900EEEE0E /* SearchPhotosResultMapper.swift */, - 03090F9529855DE700EEEE0E /* PhotoMapper.swift */, - ); - path = Mappers; - sourceTree = ""; - }; - 03090F9029855D1800EEEE0E /* Mapper */ = { - isa = PBXGroup; - children = ( - 03090F9129855D2400EEEE0E /* EntityMapable.swift */, - ); - path = Mapper; - sourceTree = ""; - }; - 03090F9B2985689C00EEEE0E /* API */ = { - isa = PBXGroup; - children = ( - 03090F7D298555E900EEEE0E /* Models */, - 03090F9C298568AD00EEEE0E /* APIService.swift */, - 03090FA02985699400EEEE0E /* APIWorker.swift */, - 03090FE92986C6DC00EEEE0E /* URLSessionable.swift */, - ); - path = API; - sourceTree = ""; - }; - 03090F9E2985698200EEEE0E /* API */ = { - isa = PBXGroup; - children = ( - 03090F9F2985698900EEEE0E /* Models */, - ); - path = API; - sourceTree = ""; - }; - 03090F9F2985698900EEEE0E /* Models */ = { - isa = PBXGroup; - children = ( - 03090F77298553F200EEEE0E /* NetworkError.swift */, - ); - path = Models; - sourceTree = ""; - }; - 03090FA729856B8300EEEE0E /* SearchPhotos */ = { - isa = PBXGroup; - children = ( - 03090FB82985739000EEEE0E /* Mappers */, - 03090FA829856B9800EEEE0E /* SearchPhotosServiceTest.swift */, - ); - path = SearchPhotos; - sourceTree = ""; - }; - 03090FAB29856BBC00EEEE0E /* API */ = { - isa = PBXGroup; - children = ( - 03090FE12986C11B00EEEE0E /* APIServiceTest.swift */, - ); - path = API; - sourceTree = ""; - }; - 03090FAC29856BC400EEEE0E /* Mocks */ = { - isa = PBXGroup; - children = ( - 03090FAD29856BCD00EEEE0E /* APIWorkerMock.swift */, - 03090FE72986C42500EEEE0E /* URLSessionMock.swift */, - ); - path = Mocks; - sourceTree = ""; - }; - 03090FB82985739000EEEE0E /* Mappers */ = { - isa = PBXGroup; - children = ( - 03090FBB298573A800EEEE0E /* SearchPhotosResultMapperTest.swift */, - 03090FBD2985751B00EEEE0E /* PhotoMapperTest.swift */, - ); - path = Mappers; - sourceTree = ""; - }; 03090FBF29869F7F00EEEE0E /* Models */ = { isa = PBXGroup; children = ( @@ -704,6 +309,15 @@ path = Cells; sourceTree = ""; }; + B098FB192A9CE38A00DD7798 /* Packages */ = { + isa = PBXGroup; + children = ( + B098FB1C2A9CE4F400DD7798 /* Data */, + B098FB1D2A9CE4F900DD7798 /* Domain */, + ); + name = Packages; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -715,22 +329,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 03090EF82985417800EEEE0E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090F002985417800EEEE0E /* Domain.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F082985417E00EEEE0E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090F1D2985417E00EEEE0E /* Data.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -747,13 +345,13 @@ ); dependencies = ( 03090EF12985416000EEEE0E /* PBXTargetDependency */, - 03090F022985417800EEEE0E /* PBXTargetDependency */, - 03090F1F2985417F00EEEE0E /* PBXTargetDependency */, ); name = FlickrFinder; packageProductDependencies = ( - 03090F2F298541F600EEEE0E /* Factory */, 03090F322985421500EEEE0E /* Nuke */, + B0A05DF32A9CE539002EF162 /* Data */, + B0A05DF52A9CE53B002EF162 /* Domain */, + B0A05DF82A9CE64A002EF162 /* Factory */, ); productName = FlickrFinder; productReference = 03090EAF2985408C00EEEE0E /* FlickrFinder.app */; @@ -772,83 +370,17 @@ buildRules = ( ); dependencies = ( - 03090F5B298549A000EEEE0E /* PBXTargetDependency */, ); name = Presentation; packageProductDependencies = ( - 03090F6B29854DD400EEEE0E /* Factory */, 03090FCF2986AF7800EEEE0E /* Nuke */, + B0A05DF12A9CE532002EF162 /* Domain */, + B0A05DFA2A9CE656002EF162 /* Factory */, ); productName = Presentation; productReference = 03090EEC2985416000EEEE0E /* Presentation.framework */; productType = "com.apple.product-type.framework"; }; - 03090EFC2985417800EEEE0E /* Domain */ = { - isa = PBXNativeTarget; - buildConfigurationList = 03090F052985417800EEEE0E /* Build configuration list for PBXNativeTarget "Domain" */; - buildPhases = ( - 03090EF82985417800EEEE0E /* Headers */, - 03090EF92985417800EEEE0E /* Sources */, - 03090EFA2985417800EEEE0E /* Frameworks */, - 03090EFB2985417800EEEE0E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Domain; - packageProductDependencies = ( - 03090F6929854DC600EEEE0E /* Factory */, - ); - productName = Domain; - productReference = 03090EFD2985417800EEEE0E /* Domain.framework */; - productType = "com.apple.product-type.framework"; - }; - 03090F0C2985417E00EEEE0E /* Data */ = { - isa = PBXNativeTarget; - buildConfigurationList = 03090F222985417F00EEEE0E /* Build configuration list for PBXNativeTarget "Data" */; - buildPhases = ( - 03090F082985417E00EEEE0E /* Headers */, - 03090F092985417E00EEEE0E /* Sources */, - 03090F0A2985417E00EEEE0E /* Frameworks */, - 03090F0B2985417E00EEEE0E /* Resources */, - 03090F61298549A600EEEE0E /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 03090F60298549A600EEEE0E /* PBXTargetDependency */, - ); - name = Data; - packageProductDependencies = ( - 03090F6D29854DDA00EEEE0E /* Factory */, - ); - productName = Data; - productReference = 03090F0D2985417E00EEEE0E /* Data.framework */; - productType = "com.apple.product-type.framework"; - }; - 03090F132985417E00EEEE0E /* DataTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 03090F252985417F00EEEE0E /* Build configuration list for PBXNativeTarget "DataTests" */; - buildPhases = ( - 03090F102985417E00EEEE0E /* Sources */, - 03090F112985417E00EEEE0E /* Frameworks */, - 03090F122985417E00EEEE0E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 03090F172985417E00EEEE0E /* PBXTargetDependency */, - 03090F192985417E00EEEE0E /* PBXTargetDependency */, - ); - name = DataTests; - packageProductDependencies = ( - 03090FB6298572B600EEEE0E /* Factory */, - ); - productName = DataTests; - productReference = 03090F142985417E00EEEE0E /* DataTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -866,18 +398,6 @@ CreatedOnToolsVersion = 14.1; LastSwiftMigration = 1410; }; - 03090EFC2985417800EEEE0E = { - CreatedOnToolsVersion = 14.1; - LastSwiftMigration = 1410; - }; - 03090F0C2985417E00EEEE0E = { - CreatedOnToolsVersion = 14.1; - LastSwiftMigration = 1410; - }; - 03090F132985417E00EEEE0E = { - CreatedOnToolsVersion = 14.1; - TestTargetID = 03090EAE2985408C00EEEE0E; - }; }; }; buildConfigurationList = 03090EAA2985408C00EEEE0E /* Build configuration list for PBXProject "FlickrFinder" */; @@ -890,8 +410,8 @@ ); mainGroup = 03090EA62985408C00EEEE0E; packageReferences = ( - 03090F2E298541F600EEEE0E /* XCRemoteSwiftPackageReference "Factory" */, 03090F312985421500EEEE0E /* XCRemoteSwiftPackageReference "Nuke" */, + B0A05DF72A9CE64A002EF162 /* XCRemoteSwiftPackageReference "Factory" */, ); productRefGroup = 03090EB02985408C00EEEE0E /* Products */; projectDirPath = ""; @@ -899,9 +419,6 @@ targets = ( 03090EAE2985408C00EEEE0E /* FlickrFinder */, 03090EEB2985416000EEEE0E /* Presentation */, - 03090EFC2985417800EEEE0E /* Domain */, - 03090F0C2985417E00EEEE0E /* Data */, - 03090F132985417E00EEEE0E /* DataTests */, ); }; /* End PBXProject section */ @@ -923,27 +440,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 03090EFB2985417800EEEE0E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F0B2985417E00EEEE0E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F122985417E00EEEE0E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -981,56 +477,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 03090EF92985417800EEEE0E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090F8E29855AF100EEEE0E /* Photo.swift in Sources */, - 03090F56298548D600EEEE0E /* SearchPhotosWorker.swift in Sources */, - 03090F78298553F200EEEE0E /* NetworkError.swift in Sources */, - 03090F762985523E00EEEE0E /* BaseError.swift in Sources */, - 03090F6829854CDF00EEEE0E /* DomainInjection.swift in Sources */, - 03090F8C29855A8F00EEEE0E /* SearchPhotosResult.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F092985417E00EEEE0E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090F812985573000EEEE0E /* FlickrAPIErrorEntity.swift in Sources */, - 03090F9229855D2400EEEE0E /* EntityMapable.swift in Sources */, - 03090F53298548CB00EEEE0E /* SearchPhotosService.swift in Sources */, - 03090F9629855DE700EEEE0E /* PhotoMapper.swift in Sources */, - 03090FEA2986C6DC00EEEE0E /* URLSessionable.swift in Sources */, - 03090F7C298555DC00EEEE0E /* FlickrSearchPhotoError.swift in Sources */, - 03090FA629856AD000EEEE0E /* APIMethod.swift in Sources */, - 03090F872985588B00EEEE0E /* PhotoEntity.swift in Sources */, - 03090F7F298555EF00EEEE0E /* FlickrAPIError.swift in Sources */, - 03090F9429855D6900EEEE0E /* SearchPhotosResultMapper.swift in Sources */, - 03090F852985585400EEEE0E /* SearchPhotosResponseEntity.swift in Sources */, - 03090F9D298568AD00EEEE0E /* APIService.swift in Sources */, - 03090F7029854DF900EEEE0E /* DataInjection.swift in Sources */, - 03090F8929855A1E00EEEE0E /* FlickrAPIResponseStat.swift in Sources */, - 03090FA2298569C300EEEE0E /* APIWorker.swift in Sources */, - 03090F832985577800EEEE0E /* FlickrSearchPhotosAPIResponseEntity.swift in Sources */, - 03090FA429856A4C00EEEE0E /* FlickrAPIResponseEntity.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03090F102985417E00EEEE0E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 03090FE82986C42500EEEE0E /* URLSessionMock.swift in Sources */, - 03090FBC298573A800EEEE0E /* SearchPhotosResultMapperTest.swift in Sources */, - 03090FAE29856BCD00EEEE0E /* APIWorkerMock.swift in Sources */, - 03090FE22986C11B00EEEE0E /* APIServiceTest.swift in Sources */, - 03090FA929856B9800EEEE0E /* SearchPhotosServiceTest.swift in Sources */, - 03090FBE2985751B00EEEE0E /* PhotoMapperTest.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1039,36 +485,6 @@ target = 03090EEB2985416000EEEE0E /* Presentation */; targetProxy = 03090EF02985416000EEEE0E /* PBXContainerItemProxy */; }; - 03090F022985417800EEEE0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 03090EFC2985417800EEEE0E /* Domain */; - targetProxy = 03090F012985417800EEEE0E /* PBXContainerItemProxy */; - }; - 03090F172985417E00EEEE0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 03090F0C2985417E00EEEE0E /* Data */; - targetProxy = 03090F162985417E00EEEE0E /* PBXContainerItemProxy */; - }; - 03090F192985417E00EEEE0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 03090EAE2985408C00EEEE0E /* FlickrFinder */; - targetProxy = 03090F182985417E00EEEE0E /* PBXContainerItemProxy */; - }; - 03090F1F2985417F00EEEE0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 03090F0C2985417E00EEEE0E /* Data */; - targetProxy = 03090F1E2985417F00EEEE0E /* PBXContainerItemProxy */; - }; - 03090F5B298549A000EEEE0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 03090EFC2985417800EEEE0E /* Domain */; - targetProxy = 03090F5A298549A000EEEE0E /* PBXContainerItemProxy */; - }; - 03090F60298549A600EEEE0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 03090EFC2985417800EEEE0E /* Domain */; - targetProxy = 03090F5F298549A600EEEE0E /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1212,7 +628,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1244,7 +660,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1275,7 +691,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1308,7 +724,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1326,174 +742,6 @@ }; name = Release; }; - 03090F062985417800EEEE0E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = JYSUUAPYSN; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.jeroenscode.Domain; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 03090F072985417800EEEE0E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = JYSUUAPYSN; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.jeroenscode.Domain; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 03090F232985417F00EEEE0E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = JYSUUAPYSN; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.jeroenscode.Data; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 03090F242985417F00EEEE0E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = JYSUUAPYSN; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.jeroenscode.Data; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 03090F262985417F00EEEE0E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = JYSUUAPYSN; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.jeroenscode.DataTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FlickrFinder.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/FlickrFinder"; - }; - name = Debug; - }; - 03090F272985417F00EEEE0E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = JYSUUAPYSN; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.jeroenscode.DataTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FlickrFinder.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/FlickrFinder"; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1524,89 +772,59 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 03090F052985417800EEEE0E /* Build configuration list for PBXNativeTarget "Domain" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 03090F062985417800EEEE0E /* Debug */, - 03090F072985417800EEEE0E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 03090F222985417F00EEEE0E /* Build configuration list for PBXNativeTarget "Data" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 03090F232985417F00EEEE0E /* Debug */, - 03090F242985417F00EEEE0E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 03090F252985417F00EEEE0E /* Build configuration list for PBXNativeTarget "DataTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 03090F262985417F00EEEE0E /* Debug */, - 03090F272985417F00EEEE0E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 03090F2E298541F600EEEE0E /* XCRemoteSwiftPackageReference "Factory" */ = { + 03090F312985421500EEEE0E /* XCRemoteSwiftPackageReference "Nuke" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/hmlongco/Factory"; + repositoryURL = "https://github.com/kean/Nuke"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 1.0.0; + minimumVersion = 9.0.0; }; }; - 03090F312985421500EEEE0E /* XCRemoteSwiftPackageReference "Nuke" */ = { + B0A05DF72A9CE64A002EF162 /* XCRemoteSwiftPackageReference "Factory" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/kean/Nuke"; + repositoryURL = "https://github.com/hmlongco/Factory"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 9.0.0; + minimumVersion = 1.0.0; }; }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 03090F2F298541F600EEEE0E /* Factory */ = { + 03090F322985421500EEEE0E /* Nuke */ = { isa = XCSwiftPackageProductDependency; - package = 03090F2E298541F600EEEE0E /* XCRemoteSwiftPackageReference "Factory" */; - productName = Factory; + package = 03090F312985421500EEEE0E /* XCRemoteSwiftPackageReference "Nuke" */; + productName = Nuke; }; - 03090F322985421500EEEE0E /* Nuke */ = { + 03090FCF2986AF7800EEEE0E /* Nuke */ = { isa = XCSwiftPackageProductDependency; package = 03090F312985421500EEEE0E /* XCRemoteSwiftPackageReference "Nuke" */; productName = Nuke; }; - 03090F6929854DC600EEEE0E /* Factory */ = { + B0A05DF12A9CE532002EF162 /* Domain */ = { isa = XCSwiftPackageProductDependency; - package = 03090F2E298541F600EEEE0E /* XCRemoteSwiftPackageReference "Factory" */; - productName = Factory; + productName = Domain; }; - 03090F6B29854DD400EEEE0E /* Factory */ = { + B0A05DF32A9CE539002EF162 /* Data */ = { isa = XCSwiftPackageProductDependency; - package = 03090F2E298541F600EEEE0E /* XCRemoteSwiftPackageReference "Factory" */; - productName = Factory; + productName = Data; }; - 03090F6D29854DDA00EEEE0E /* Factory */ = { + B0A05DF52A9CE53B002EF162 /* Domain */ = { isa = XCSwiftPackageProductDependency; - package = 03090F2E298541F600EEEE0E /* XCRemoteSwiftPackageReference "Factory" */; - productName = Factory; + productName = Domain; }; - 03090FB6298572B600EEEE0E /* Factory */ = { + B0A05DF82A9CE64A002EF162 /* Factory */ = { isa = XCSwiftPackageProductDependency; - package = 03090F2E298541F600EEEE0E /* XCRemoteSwiftPackageReference "Factory" */; + package = B0A05DF72A9CE64A002EF162 /* XCRemoteSwiftPackageReference "Factory" */; productName = Factory; }; - 03090FCF2986AF7800EEEE0E /* Nuke */ = { + B0A05DFA2A9CE656002EF162 /* Factory */ = { isa = XCSwiftPackageProductDependency; - package = 03090F312985421500EEEE0E /* XCRemoteSwiftPackageReference "Nuke" */; - productName = Nuke; + package = B0A05DF72A9CE64A002EF162 /* XCRemoteSwiftPackageReference "Factory" */; + productName = Factory; }; /* End XCSwiftPackageProductDependency section */ }; diff --git a/FlickrFinder.xcodeproj/xcshareddata/xcschemes/FlickrFinder.xcscheme b/FlickrFinder.xcodeproj/xcshareddata/xcschemes/FlickrFinder.xcscheme index a3db1a9..681c019 100644 --- a/FlickrFinder.xcodeproj/xcshareddata/xcschemes/FlickrFinder.xcscheme +++ b/FlickrFinder.xcodeproj/xcshareddata/xcschemes/FlickrFinder.xcscheme @@ -30,20 +30,6 @@ codeCoverageEnabled = "YES" onlyGenerateCoverageForSpecifiedTargets = "YES"> - - - - + + + + + skipped = "NO"> + ReferencedContainer = "container:Data"> + + + + From ab7dda9ecd4a0e9981c26e201473555723e48f8f Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 28 Aug 2023 16:36:17 +0200 Subject: [PATCH 3/7] set swift package version to 5.7, as sonar does not support 5.8+ --- Data/Package.swift | 2 +- Domain/Package.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Data/Package.swift b/Data/Package.swift index ce437e5..b6404c7 100644 --- a/Data/Package.swift +++ b/Data/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.8 +// swift-tools-version: 5.7 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Domain/Package.swift b/Domain/Package.swift index 1b3f36e..adab006 100644 --- a/Domain/Package.swift +++ b/Domain/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.8 +// swift-tools-version: 5.7 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription From 46e6df3cffb525426cfa0ce6b49acb751ffeed2a Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 28 Aug 2023 16:47:12 +0200 Subject: [PATCH 4/7] updated --- .github/workflows/main.yml | 4 +- .../Models/FlickrSearchPhotoError.swift | 2 +- .../FlickrSearchPhotoErrorTests.swift | 44 +++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 Data/Tests/DataTests/Usecases/SearchPhotos/FlickrSearchPhotoErrorTests.swift diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6a756db..74007e9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -47,13 +47,13 @@ jobs: -Dsonar.organization=jeroenbakker-wbd -Dsonar.projectKey=JeroenBakker-wbd_FlickrFinder -Dsonar.sources=Data/,Domain/,Presentation/,FlickrFinder/ - -Dsonar.tests=DataTests/ + -Dsonar.tests=Data/Tests/,Domain/Tests/ -Dsonar.swift.project=FlickrFinder.xcodeproj -Dsonar.swift.scheme=FlickrFinder -Dsonar.host.url=https://sonarcloud.io -Dsonar.token=$SONAR_TOKEN -Dsonar.coverageReportPaths=coverage.xml - -Dsonar.coverage.exclusions=DataTests/ + -Dsonar.coverage.exclusions=Data/Tests/,Domain/Tests/ -Dsonar.c.file.suffixes=- -Dsonar.cpp.file.suffixes=- -Dsonar.objc.file.suffixes=- \ No newline at end of file diff --git a/Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift b/Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift index 9238b7c..09f3354 100644 --- a/Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift +++ b/Data/Sources/Data/Usecases/SearchPhotos/Models/FlickrSearchPhotoError.swift @@ -7,7 +7,7 @@ import Foundation -enum FlickrSearchPhotoError: Error { +enum FlickrSearchPhotoError: Error, Equatable { case api(FlickrAPIError) case tooManyTags case unknownUser diff --git a/Data/Tests/DataTests/Usecases/SearchPhotos/FlickrSearchPhotoErrorTests.swift b/Data/Tests/DataTests/Usecases/SearchPhotos/FlickrSearchPhotoErrorTests.swift new file mode 100644 index 0000000..81e12fb --- /dev/null +++ b/Data/Tests/DataTests/Usecases/SearchPhotos/FlickrSearchPhotoErrorTests.swift @@ -0,0 +1,44 @@ +// +// Created by Jeroen Bakker on 28/08/2023. +// Copyright (c) 2023 Bleacher Report. All rights reserved. +// + +import XCTest +@testable import Data + +final class FlickrSearchPhotoErrorTests: XCTestCase { + + func test_init_onUnsupportedInput_shouldReturnAPIEnum() throws { + // given + let input = 0 + + // when + let result = FlickrSearchPhotoError(rawValue: input) + + // then + if case .api(let flickrAPIError) = result { + XCTAssertEqual(.unknown, flickrAPIError) + } else { + XCTFail() + } + } + + func test_Init_onSupportedInputs_shouldReturnEnum() throws { + // given + let inputs = [1, 2, 3, 4, 5] + let expectedResults: [FlickrSearchPhotoError] = [ + .tooManyTags, + .unknownUser, + .parameterlessSearchesDisabled, + .noPermission, + .userDeleted + ] + + for (index, input) in inputs.enumerated() { + // when + let result = FlickrSearchPhotoError(rawValue: input) + // then + XCTAssertEqual(expectedResults[index], result) + } + } +} From 5e638e87941de9a56a682f959ba114dfe93e0a5a Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 29 Aug 2023 09:19:16 +0200 Subject: [PATCH 5/7] added exclusions for the test folders --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 74007e9..1604679 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -47,6 +47,7 @@ jobs: -Dsonar.organization=jeroenbakker-wbd -Dsonar.projectKey=JeroenBakker-wbd_FlickrFinder -Dsonar.sources=Data/,Domain/,Presentation/,FlickrFinder/ + -Dsoner.exclusions=Data/Tests/,Domain/Tests/ -Dsonar.tests=Data/Tests/,Domain/Tests/ -Dsonar.swift.project=FlickrFinder.xcodeproj -Dsonar.swift.scheme=FlickrFinder From 2ea8b1971c037d359a70565a133a2c1bff5c63ee Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 29 Aug 2023 09:29:11 +0200 Subject: [PATCH 6/7] updated analysis scopes --- .github/workflows/main.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1604679..4560dbb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -46,15 +46,16 @@ jobs: -Dsonar.projectName=FlickrFinder -Dsonar.organization=jeroenbakker-wbd -Dsonar.projectKey=JeroenBakker-wbd_FlickrFinder - -Dsonar.sources=Data/,Domain/,Presentation/,FlickrFinder/ - -Dsoner.exclusions=Data/Tests/,Domain/Tests/ - -Dsonar.tests=Data/Tests/,Domain/Tests/ + -Dsonar.sources=. + -Dsonar.tests=. + -Dsonar.tests.inclusions=**/Tests/**/* + -Dsoner.exclusions=**/Tests/**/* -Dsonar.swift.project=FlickrFinder.xcodeproj -Dsonar.swift.scheme=FlickrFinder -Dsonar.host.url=https://sonarcloud.io -Dsonar.token=$SONAR_TOKEN -Dsonar.coverageReportPaths=coverage.xml - -Dsonar.coverage.exclusions=Data/Tests/,Domain/Tests/ + -Dsonar.coverage.exclusions=**/Tests/**/* -Dsonar.c.file.suffixes=- -Dsonar.cpp.file.suffixes=- -Dsonar.objc.file.suffixes=- \ No newline at end of file From 6ceba0aafa202de3cc85a452e44f93c62e4aabc1 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 29 Aug 2023 09:29:32 +0200 Subject: [PATCH 7/7] fixed typo --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4560dbb..07cc964 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,7 +48,7 @@ jobs: -Dsonar.projectKey=JeroenBakker-wbd_FlickrFinder -Dsonar.sources=. -Dsonar.tests=. - -Dsonar.tests.inclusions=**/Tests/**/* + -Dsonar.test.inclusions=**/Tests/**/* -Dsoner.exclusions=**/Tests/**/* -Dsonar.swift.project=FlickrFinder.xcodeproj -Dsonar.swift.scheme=FlickrFinder