From bd1151a93b266e0578ca5ac6812a93d99d2339e1 Mon Sep 17 00:00:00 2001 From: Volodymyr Chekyrta <127732735+volodymyr-chekyrta@users.noreply.github.com> Date: Fri, 14 Jul 2023 14:36:11 +0300 Subject: [PATCH 1/2] Optimization (#51) - Optimize requests to CoreData for downloads - Minimize nestedness of the CourseOutlineView - Update tests --- .../AuthorizationMock.generated.swift | 397 ++++++++++++ .../CoreDataModel.xcdatamodel/contents | 3 +- .../Data/Persistence/CorePersistence.swift | 68 +- Core/Core/Domain/Model/CourseBlockModel.swift | 129 ++-- Core/Core/Network/DownloadManager.swift | 64 +- Core/Core/View/Base/WebUnitView.swift | 6 +- Course/Course/Data/CourseRepository.swift | 212 +++--- Course/Course/Domain/CourseInteractor.swift | 2 +- .../Container/CourseContainerViewModel.swift | 40 +- .../Course/Presentation/CourseAnalytics.swift | 7 +- Course/Course/Presentation/CourseRouter.swift | 6 - .../Details/CourseDetailsView.swift | 1 + .../Outline/ContinueWithView.swift | 78 +-- .../Outline/CourseOutlineView.swift | 268 ++++---- .../Outline/CourseVerticalView.swift | 54 +- .../Outline/CourseVerticalViewModel.swift | 18 +- .../Unit/CourseNavigationView.swift | 7 +- .../Presentation/Unit/CourseUnitView.swift | 17 +- .../Unit/CourseUnitViewModel.swift | 29 +- Course/CourseTests/CourseMock.generated.swift | 397 ++++++++++++ .../CourseContainerViewModelTests.swift | 606 +++++++++++++++++- .../Unit/CourseUnitViewModelTests.swift | 147 +++-- .../Presentation/DashboardView.swift | 5 +- .../Presentation/DashboardViewModel.swift | 2 +- .../DashboardMock.generated.swift | 397 ++++++++++++ .../DiscoveryMock.generated.swift | 397 ++++++++++++ .../Data/Network/DiscussionRepository.swift | 1 + .../DiscussionMock.generated.swift | 397 ++++++++++++ OpenEdX/DI/ScreenAssembly.swift | 3 +- OpenEdX/Router.swift | 15 +- .../Profile/Domain/ProfileInteractor.swift | 4 +- .../ProfileTests/ProfileMock.generated.swift | 397 ++++++++++++ 32 files changed, 3635 insertions(+), 539 deletions(-) diff --git a/Authorization/AuthorizationTests/AuthorizationMock.generated.swift b/Authorization/AuthorizationTests/AuthorizationMock.generated.swift index ddd1dbb74..b47ea117a 100644 --- a/Authorization/AuthorizationTests/AuthorizationMock.generated.swift +++ b/Authorization/AuthorizationTests/AuthorizationMock.generated.swift @@ -1663,3 +1663,400 @@ open class ConnectivityProtocolMock: ConnectivityProtocol, Mock { } } +// MARK: - DownloadManagerProtocol + +open class DownloadManagerProtocolMock: DownloadManagerProtocol, Mock { + public init(sequencing sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst, stubbing stubbingPolicy: StubbingPolicy = .wrap, file: StaticString = #file, line: UInt = #line) { + SwiftyMockyTestObserver.setup() + self.sequencingPolicy = sequencingPolicy + self.stubbingPolicy = stubbingPolicy + self.file = file + self.line = line + } + + var matcher: Matcher = Matcher.default + var stubbingPolicy: StubbingPolicy = .wrap + var sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst + + private var queue = DispatchQueue(label: "com.swiftymocky.invocations", qos: .userInteractive) + private var invocations: [MethodType] = [] + private var methodReturnValues: [Given] = [] + private var methodPerformValues: [Perform] = [] + private var file: StaticString? + private var line: UInt? + + public typealias PropertyStub = Given + public typealias MethodStub = Given + public typealias SubscriptStub = Given + + /// Convenience method - call setupMock() to extend debug information when failure occurs + public func setupMock(file: StaticString = #file, line: UInt = #line) { + self.file = file + self.line = line + } + + /// Clear mock internals. You can specify what to reset (invocations aka verify, givens or performs) or leave it empty to clear all mock internals + public func resetMock(_ scopes: MockScope...) { + let scopes: [MockScope] = scopes.isEmpty ? [.invocation, .given, .perform] : scopes + if scopes.contains(.invocation) { invocations = [] } + if scopes.contains(.given) { methodReturnValues = [] } + if scopes.contains(.perform) { methodPerformValues = [] } + } + + + + + + open func publisher() -> AnyPublisher { + addInvocation(.m_publisher) + let perform = methodPerformValue(.m_publisher) as? () -> Void + perform?() + var __value: AnyPublisher + do { + __value = try methodReturnValue(.m_publisher).casted() + } catch { + onFatalFailure("Stub return value not specified for publisher(). Use given") + Failure("Stub return value not specified for publisher(). Use given") + } + return __value + } + + open func addToDownloadQueue(blocks: [CourseBlock]) throws { + addInvocation(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + do { + _ = try methodReturnValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { + addInvocation(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) + let perform = methodPerformValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) as? (String) -> Void + perform?(`courseId`) + var __value: [DownloadData] + do { + __value = try methodReturnValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))).casted() + } catch { + onFatalFailure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + Failure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + } + return __value + } + + open func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws { + addInvocation(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) as? (String, [CourseBlock]) -> Void + perform?(`courseId`, `blocks`) + do { + _ = try methodReturnValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func resumeDownloading() throws { + addInvocation(.m_resumeDownloading) + let perform = methodPerformValue(.m_resumeDownloading) as? () -> Void + perform?() + do { + _ = try methodReturnValue(.m_resumeDownloading).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func pauseDownloading() { + addInvocation(.m_pauseDownloading) + let perform = methodPerformValue(.m_pauseDownloading) as? () -> Void + perform?() + } + + open func deleteFile(blocks: [CourseBlock]) { + addInvocation(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + } + + open func fileUrl(for blockId: String) -> URL? { + addInvocation(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) + let perform = methodPerformValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) as? (String) -> Void + perform?(`blockId`) + var __value: URL? = nil + do { + __value = try methodReturnValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))).casted() + } catch { + // do nothing + } + return __value + } + + + fileprivate enum MethodType { + case m_publisher + case m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>) + case m_getDownloadsForCourse__courseId(Parameter) + case m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter, Parameter<[CourseBlock]>) + case m_resumeDownloading + case m_pauseDownloading + case m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>) + case m_fileUrl__for_blockId(Parameter) + + static func compareParameters(lhs: MethodType, rhs: MethodType, matcher: Matcher) -> Matcher.ComparisonResult { + switch (lhs, rhs) { + case (.m_publisher, .m_publisher): return .match + + case (.m_addToDownloadQueue__blocks_blocks(let lhsBlocks), .m_addToDownloadQueue__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_getDownloadsForCourse__courseId(let lhsCourseid), .m_getDownloadsForCourse__courseId(let rhsCourseid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "_ courseId")) + return Matcher.ComparisonResult(results) + + case (.m_cancelDownloading__courseId_courseIdblocks_blocks(let lhsCourseid, let lhsBlocks), .m_cancelDownloading__courseId_courseIdblocks_blocks(let rhsCourseid, let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "courseId")) + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_resumeDownloading, .m_resumeDownloading): return .match + + case (.m_pauseDownloading, .m_pauseDownloading): return .match + + case (.m_deleteFile__blocks_blocks(let lhsBlocks), .m_deleteFile__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_fileUrl__for_blockId(let lhsBlockid), .m_fileUrl__for_blockId(let rhsBlockid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlockid, rhs: rhsBlockid, with: matcher), lhsBlockid, rhsBlockid, "for blockId")) + return Matcher.ComparisonResult(results) + default: return .none + } + } + + func intValue() -> Int { + switch self { + case .m_publisher: return 0 + case let .m_addToDownloadQueue__blocks_blocks(p0): return p0.intValue + case let .m_getDownloadsForCourse__courseId(p0): return p0.intValue + case let .m_cancelDownloading__courseId_courseIdblocks_blocks(p0, p1): return p0.intValue + p1.intValue + case .m_resumeDownloading: return 0 + case .m_pauseDownloading: return 0 + case let .m_deleteFile__blocks_blocks(p0): return p0.intValue + case let .m_fileUrl__for_blockId(p0): return p0.intValue + } + } + func assertionName() -> String { + switch self { + case .m_publisher: return ".publisher()" + case .m_addToDownloadQueue__blocks_blocks: return ".addToDownloadQueue(blocks:)" + case .m_getDownloadsForCourse__courseId: return ".getDownloadsForCourse(_:)" + case .m_cancelDownloading__courseId_courseIdblocks_blocks: return ".cancelDownloading(courseId:blocks:)" + case .m_resumeDownloading: return ".resumeDownloading()" + case .m_pauseDownloading: return ".pauseDownloading()" + case .m_deleteFile__blocks_blocks: return ".deleteFile(blocks:)" + case .m_fileUrl__for_blockId: return ".fileUrl(for:)" + } + } + } + + open class Given: StubbedMethod { + fileprivate var method: MethodType + + private init(method: MethodType, products: [StubProduct]) { + self.method = method + super.init(products) + } + + + public static func publisher(willReturn: AnyPublisher...) -> MethodStub { + return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func getDownloadsForCourse(_ courseId: Parameter, willReturn: [DownloadData]...) -> MethodStub { + return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func fileUrl(for blockId: Parameter, willReturn: URL?...) -> MethodStub { + return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func publisher(willProduce: (Stubber>) -> Void) -> MethodStub { + let willReturn: [AnyPublisher] = [] + let given: Given = { return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (AnyPublisher).self) + willProduce(stubber) + return given + } + public static func getDownloadsForCourse(_ courseId: Parameter, willProduce: (Stubber<[DownloadData]>) -> Void) -> MethodStub { + let willReturn: [[DownloadData]] = [] + let given: Given = { return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: ([DownloadData]).self) + willProduce(stubber) + return given + } + public static func fileUrl(for blockId: Parameter, willProduce: (Stubber) -> Void) -> MethodStub { + let willReturn: [URL?] = [] + let given: Given = { return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (URL?).self) + willProduce(stubber) + return given + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func resumeDownloading(willThrow: Error...) -> MethodStub { + return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) + } + public static func resumeDownloading(willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + } + + public struct Verify { + fileprivate var method: MethodType + + public static func publisher() -> Verify { return Verify(method: .m_publisher)} + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_addToDownloadQueue__blocks_blocks(`blocks`))} + public static func getDownloadsForCourse(_ courseId: Parameter) -> Verify { return Verify(method: .m_getDownloadsForCourse__courseId(`courseId`))} + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`))} + public static func resumeDownloading() -> Verify { return Verify(method: .m_resumeDownloading)} + public static func pauseDownloading() -> Verify { return Verify(method: .m_pauseDownloading)} + public static func deleteFile(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_deleteFile__blocks_blocks(`blocks`))} + public static func fileUrl(for blockId: Parameter) -> Verify { return Verify(method: .m_fileUrl__for_blockId(`blockId`))} + } + + public struct Perform { + fileprivate var method: MethodType + var performs: Any + + public static func publisher(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_publisher, performs: perform) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), performs: perform) + } + public static func getDownloadsForCourse(_ courseId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_getDownloadsForCourse__courseId(`courseId`), performs: perform) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, perform: @escaping (String, [CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), performs: perform) + } + public static func resumeDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_resumeDownloading, performs: perform) + } + public static func pauseDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_pauseDownloading, performs: perform) + } + public static func deleteFile(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_deleteFile__blocks_blocks(`blocks`), performs: perform) + } + public static func fileUrl(for blockId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_fileUrl__for_blockId(`blockId`), performs: perform) + } + } + + public func given(_ method: Given) { + methodReturnValues.append(method) + } + + public func perform(_ method: Perform) { + methodPerformValues.append(method) + methodPerformValues.sort { $0.method.intValue() < $1.method.intValue() } + } + + public func verify(_ method: Verify, count: Count = Count.moreOrEqual(to: 1), file: StaticString = #file, line: UInt = #line) { + let fullMatches = matchingCalls(method, file: file, line: line) + let success = count.matches(fullMatches) + let assertionName = method.method.assertionName() + let feedback: String = { + guard !success else { return "" } + return Utils.closestCallsMessage( + for: self.invocations.map { invocation in + matcher.set(file: file, line: line) + defer { matcher.clearFileAndLine() } + return MethodType.compareParameters(lhs: invocation, rhs: method.method, matcher: matcher) + }, + name: assertionName + ) + }() + MockyAssert(success, "Expected: \(count) invocations of `\(assertionName)`, but was: \(fullMatches).\(feedback)", file: file, line: line) + } + + private func addInvocation(_ call: MethodType) { + self.queue.sync { invocations.append(call) } + } + private func methodReturnValue(_ method: MethodType) throws -> StubProduct { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let candidates = sequencingPolicy.sorted(methodReturnValues, by: { $0.method.intValue() > $1.method.intValue() }) + let matched = candidates.first(where: { $0.isValid && MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch }) + guard let product = matched?.getProduct(policy: self.stubbingPolicy) else { throw MockError.notStubed } + return product + } + private func methodPerformValue(_ method: MethodType) -> Any? { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let matched = methodPerformValues.reversed().first { MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch } + return matched?.performs + } + private func matchingCalls(_ method: MethodType, file: StaticString?, line: UInt?) -> [MethodType] { + matcher.set(file: file ?? self.file, line: line ?? self.line) + defer { matcher.clearFileAndLine() } + return invocations.filter { MethodType.compareParameters(lhs: $0, rhs: method, matcher: matcher).isFullMatch } + } + private func matchingCalls(_ method: Verify, file: StaticString?, line: UInt?) -> Int { + return matchingCalls(method.method, file: file, line: line).count + } + private func givenGetterValue(_ method: MethodType, _ message: String) -> T { + do { + return try methodReturnValue(method).casted() + } catch { + onFatalFailure(message) + Failure(message) + } + } + private func optionalGivenGetterValue(_ method: MethodType, _ message: String) -> T? { + do { + return try methodReturnValue(method).casted() + } catch { + return nil + } + } + private func onFatalFailure(_ message: String) { + guard let file = self.file, let line = self.line else { return } // Let if fail if cannot handle gratefully + SwiftyMockyTestObserver.handleFatalError(message: message, file: file, line: line) + } +} + diff --git a/Core/Core/Data/Persistence/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents b/Core/Core/Data/Persistence/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents index c6a7f60f6..79f74bbed 100644 --- a/Core/Core/Data/Persistence/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents +++ b/Core/Core/Data/Persistence/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents @@ -1,6 +1,7 @@ - + + diff --git a/Core/Core/Data/Persistence/CorePersistence.swift b/Core/Core/Data/Persistence/CorePersistence.swift index 131f69e0d..d465caabe 100644 --- a/Core/Core/Data/Persistence/CorePersistence.swift +++ b/Core/Core/Data/Persistence/CorePersistence.swift @@ -11,8 +11,8 @@ import Combine public protocol CorePersistenceProtocol { func publisher() -> AnyPublisher func addToDownloadQueue(blocks: [CourseBlock]) - func getBlocksForDownloading() -> [DownloadData] - func getAllDownloads() -> [DownloadData] + func getNextBlockForDownloading() -> DownloadData? + func getDownloadsForCourse(_ courseId: String) -> [DownloadData] func downloadData(by blockId: String) -> DownloadData? func updateDownloadState(id: String, state: DownloadState, resumeData: Data?) func deleteDownloadData(id: String) throws @@ -67,6 +67,7 @@ public class CorePersistence: CorePersistenceProtocol { let newDownloadData = CDDownloadData(context: context) context.mergePolicy = NSMergePolicy.mergeByPropertyObjectTrump newDownloadData.id = block.id + newDownloadData.courseId = block.courseId newDownloadData.url = url newDownloadData.fileName = fileName newDownloadData.progress = .zero @@ -77,32 +78,38 @@ public class CorePersistence: CorePersistenceProtocol { } } - public func getBlocksForDownloading() -> [DownloadData] { + public func getNextBlockForDownloading() -> DownloadData? { let request = CDDownloadData.fetchRequest() request.predicate = NSPredicate(format: "state != %@", DownloadState.finished.rawValue) - guard let downloadData = try? context.fetch(request) else { return [] } - return downloadData.map { - DownloadData(id: $0.id ?? "", - url: $0.url ?? "", - fileName: $0.fileName ?? "", - progress: $0.progress, - resumeData: $0.resumeData, - state: DownloadState(rawValue: $0.state ?? "") ?? .waiting, - type: DownloadType(rawValue: $0.type ?? "") ?? .video) - } + request.fetchLimit = 1 + guard let data = try? context.fetch(request).first else { return nil } + return DownloadData( + id: data.id ?? "", + courseId: data.courseId ?? "", + url: data.url ?? "", + fileName: data.fileName ?? "", + progress: data.progress, + resumeData: data.resumeData, + state: DownloadState(rawValue: data.state ?? "") ?? .waiting, + type: DownloadType(rawValue: data.type ?? "" ) ?? .video + ) } - public func getAllDownloads() -> [DownloadData] { + public func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { let request = CDDownloadData.fetchRequest() + request.predicate = NSPredicate(format: "courseId = %@", courseId) guard let downloadData = try? context.fetch(request) else { return [] } return downloadData.map { - DownloadData(id: $0.id ?? "", - url: $0.url ?? "", - fileName: $0.fileName ?? "", - progress: $0.progress, - resumeData: $0.resumeData, - state: DownloadState(rawValue: $0.state ?? "") ?? .waiting, - type: DownloadType(rawValue: $0.type ?? "") ?? .video) + DownloadData( + id: $0.id ?? "", + courseId: $0.courseId ?? "", + url: $0.url ?? "", + fileName: $0.fileName ?? "", + progress: $0.progress, + resumeData: $0.resumeData, + state: DownloadState(rawValue: $0.state ?? "") ?? .waiting, + type: DownloadType(rawValue: $0.type ?? "") ?? .video + ) } } @@ -110,14 +117,16 @@ public class CorePersistence: CorePersistenceProtocol { let request = CDDownloadData.fetchRequest() request.predicate = NSPredicate(format: "id = %@", blockId) guard let downloadData = try? context.fetch(request).first else { return nil } - return DownloadData(id: downloadData.id ?? "", - url: downloadData.url ?? "", - fileName: downloadData.fileName ?? "", - progress: downloadData.progress, - resumeData: downloadData.resumeData, - state: DownloadState(rawValue: downloadData.state ?? "") ?? .paused, - type: DownloadType(rawValue: downloadData.type ?? "" ) ?? .video) - + return DownloadData( + id: downloadData.id ?? "", + courseId: downloadData.courseId ?? "", + url: downloadData.url ?? "", + fileName: downloadData.fileName ?? "", + progress: downloadData.progress, + resumeData: downloadData.resumeData, + state: DownloadState(rawValue: downloadData.state ?? "") ?? .paused, + type: DownloadType(rawValue: downloadData.type ?? "" ) ?? .video + ) } public func updateDownloadState(id: String, state: DownloadState, resumeData: Data?) { @@ -155,6 +164,7 @@ public class CorePersistence: CorePersistenceProtocol { let newDownloadData = CDDownloadData(context: context) context.mergePolicy = NSMergePolicy.mergeByPropertyObjectTrump newDownloadData.id = data.id + newDownloadData.courseId = data.courseId newDownloadData.url = data.url newDownloadData.progress = data.progress newDownloadData.fileName = data.fileName diff --git a/Core/Core/Domain/Model/CourseBlockModel.swift b/Core/Core/Domain/Model/CourseBlockModel.swift index 0165d9ffb..c22907af4 100644 --- a/Core/Core/Domain/Model/CourseBlockModel.swift +++ b/Core/Core/Domain/Model/CourseBlockModel.swift @@ -8,8 +8,6 @@ import Foundation public struct CourseStructure: Equatable { - - public let courseID: String public let id: String public let graded: Bool public let completion: Double @@ -18,21 +16,21 @@ public struct CourseStructure: Equatable { public let displayName: String public let topicID: String? public let childs: [CourseChapter] - public let media: DataLayer.CourseMedia + public let media: DataLayer.CourseMedia //FIXME Domain model public let certificate: Certificate? - public init(courseID: String, - id: String, - graded: Bool, - completion: Double, - viewYouTubeUrl: String, - encodedVideo: String, - displayName: String, - topicID: String? = nil, - childs: [CourseChapter], - media: DataLayer.CourseMedia, - certificate: Certificate?) { - self.courseID = courseID + public init( + id: String, + graded: Bool, + completion: Double, + viewYouTubeUrl: String, + encodedVideo: String, + displayName: String, + topicID: String? = nil, + childs: [CourseChapter], + media: DataLayer.CourseMedia, + certificate: Certificate? + ) { self.id = id self.graded = graded self.completion = completion @@ -52,39 +50,29 @@ public struct CourseStructure: Equatable { } public struct CourseChapter { - public init(blockId: String, - id: String, - displayName: String, - type: BlockType, - childs: [CourseSequential]) { - self.blockId = blockId - self.id = id - self.displayName = displayName - self.type = type - self.childs = childs - } public let blockId: String public let id: String public let displayName: String public let type: BlockType public let childs: [CourseSequential] -} - -public struct CourseSequential { - public init(blockId: String, - id: String, - displayName: String, - type: BlockType, - completion: Double, - childs: [CourseVertical]) { + + public init( + blockId: String, + id: String, + displayName: String, + type: BlockType, + childs: [CourseSequential] + ) { self.blockId = blockId self.id = id self.displayName = displayName self.type = type - self.completion = completion self.childs = childs } +} + +public struct CourseSequential { public let blockId: String public let id: String @@ -96,15 +84,15 @@ public struct CourseSequential { public var isDownloadable: Bool { return childs.first(where: { $0.isDownloadable }) != nil } -} - -public struct CourseVertical { - public init(blockId: String, - id: String, - displayName: String, - type: BlockType, - completion: Double, - childs: [CourseBlock]) { + + public init( + blockId: String, + id: String, + displayName: String, + type: BlockType, + completion: Double, + childs: [CourseVertical] + ) { self.blockId = blockId self.id = id self.displayName = displayName @@ -112,9 +100,12 @@ public struct CourseVertical { self.completion = completion self.childs = childs } - +} + +public struct CourseVertical { public let blockId: String public let id: String + public let courseId: String public let displayName: String public let type: BlockType public let completion: Double @@ -123,6 +114,24 @@ public struct CourseVertical { public var isDownloadable: Bool { return childs.first(where: { $0.isDownloadable }) != nil } + + public init( + blockId: String, + id: String, + courseId: String, + displayName: String, + type: BlockType, + completion: Double, + childs: [CourseBlock] + ) { + self.blockId = blockId + self.id = id + self.courseId = courseId + self.displayName = displayName + self.type = type + self.completion = completion + self.childs = childs + } } public struct SubtitleUrl: Equatable { @@ -138,6 +147,7 @@ public struct SubtitleUrl: Equatable { public struct CourseBlock: Equatable { public let blockId: String public let id: String + public let courseId: String public let topicId: String? public let graded: Bool public let completion: Double @@ -147,23 +157,28 @@ public struct CourseBlock: Equatable { public let subtitles: [SubtitleUrl]? public let videoUrl: String? public let youTubeUrl: String? + public var isDownloadable: Bool { return videoUrl != nil } - public init(blockId: String, - id: String, - topicId: String? = nil, - graded: Bool, - completion: Double, - type: BlockType, - displayName: String, - studentUrl: String, - subtitles: [SubtitleUrl]? = nil, - videoUrl: String? = nil, - youTubeUrl: String? = nil) { + public init( + blockId: String, + id: String, + courseId: String, + topicId: String? = nil, + graded: Bool, + completion: Double, + type: BlockType, + displayName: String, + studentUrl: String, + subtitles: [SubtitleUrl]? = nil, + videoUrl: String? = nil, + youTubeUrl: String? = nil + ) { self.blockId = blockId self.id = id + self.courseId = courseId self.topicId = topicId self.graded = graded self.completion = completion diff --git a/Core/Core/Network/DownloadManager.swift b/Core/Core/Network/DownloadManager.swift index 7166f5b90..e635d1541 100644 --- a/Core/Core/Network/DownloadManager.swift +++ b/Core/Core/Network/DownloadManager.swift @@ -22,6 +22,7 @@ public enum DownloadType: String { public struct DownloadData { public let id: String + public let courseId: String public let url: String public let fileName: String public let progress: Double @@ -34,11 +35,12 @@ public class NoWiFiError: LocalizedError { public init() {} } +//sourcery: AutoMockable public protocol DownloadManagerProtocol { func publisher() -> AnyPublisher func addToDownloadQueue(blocks: [CourseBlock]) throws - func getAllDownloads() -> [DownloadData] - func cancelDownloading(blocks: [CourseBlock]) throws + func getDownloadsForCourse(_ courseId: String) -> [DownloadData] + func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws func resumeDownloading() throws func pauseDownloading() func deleteFile(blocks: [CourseBlock]) @@ -54,9 +56,10 @@ public class DownloadManager: DownloadManagerProtocol { private var currentDownload: DownloadData? private var isDownloadingInProgress: Bool = false - public init(persistence: CorePersistenceProtocol, - appStorage: Core.AppStorage, - connectivity: ConnectivityProtocol + public init( + persistence: CorePersistenceProtocol, + appStorage: Core.AppStorage, + connectivity: ConnectivityProtocol ) { self.persistence = persistence self.appStorage = appStorage @@ -70,15 +73,16 @@ public class DownloadManager: DownloadManagerProtocol { public func addToDownloadQueue(blocks: [CourseBlock]) throws { if userCanDownload() { persistence.addToDownloadQueue(blocks: blocks) + guard !isDownloadingInProgress else { return } try newDownload() } else { - throw NoWiFiError() - } + throw NoWiFiError() + } } private func newDownload() throws { if userCanDownload() { - guard let download = persistence.getBlocksForDownloading().first else { + guard let download = persistence.getNextBlockForDownloading() else { isDownloadingInProgress = false return } @@ -101,14 +105,14 @@ public class DownloadManager: DownloadManagerProtocol { } } - public func getAllDownloads() -> [DownloadData] { - return persistence.getAllDownloads() + public func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { + return persistence.getDownloadsForCourse(courseId) } - public func cancelDownloading(blocks: [CourseBlock]) throws { + public func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws { downloadRequest?.cancel() - let downloaded = getAllDownloads().filter { $0.state == .finished } + let downloaded = getDownloadsForCourse(courseId).filter { $0.state == .finished } let blocksForDelete = blocks.filter { block in downloaded.first(where: { $0.id == block.id }) == nil } deleteFile(blocks: blocksForDelete) @@ -117,9 +121,11 @@ public class DownloadManager: DownloadManagerProtocol { private func downloadFileWithProgress(_ download: DownloadData) throws { if let url = URL(string: download.url) { - persistence.updateDownloadState(id: download.id, - state: .inProgress, - resumeData: download.resumeData) + persistence.updateDownloadState( + id: download.id, + state: .inProgress, + resumeData: download.resumeData + ) self.isDownloadingInProgress = true let fileName = url.lastPathComponent if let resumeData = download.resumeData { @@ -127,17 +133,19 @@ public class DownloadManager: DownloadManagerProtocol { } else { downloadRequest = AF.download(url) } - // downloadRequest?.downloadProgress { prog in - // let completed = Double(prog.fractionCompleted * 100) - // print(">>>>> Downloading", download.url, completed, "%") - // } +// downloadRequest?.downloadProgress { prog in +// let completed = Double(prog.fractionCompleted * 100) +// print(">>>>> Downloading", download.url, completed, "%") +// } downloadRequest?.responseData(completionHandler: { [weak self] data in guard let self else { return } if let data = data.value, let url = self.videosFolderUrl() { self.saveFile(file: fileName, data: data, url: url) - self.persistence.updateDownloadState(id: download.id, - state: .finished, - resumeData: nil) + self.persistence.updateDownloadState( + id: download.id, + state: .finished, + resumeData: nil + ) try? self.newDownload() } }) @@ -151,9 +159,11 @@ public class DownloadManager: DownloadManagerProtocol { public func pauseDownloading() { guard let currentDownload else { return } downloadRequest?.cancel(byProducingResumeData: { resumeData in - self.persistence.updateDownloadState(id: currentDownload.id, - state: .paused, - resumeData: resumeData) + self.persistence.updateDownloadState( + id: currentDownload.id, + state: .paused, + resumeData: resumeData + ) }) } @@ -230,11 +240,11 @@ public class DownloadManagerMock: DownloadManagerProtocol { } - public func getAllDownloads() -> [DownloadData] { + public func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { return [] } - public func cancelDownloading(blocks: [CourseBlock]) { + public func cancelDownloading(courseId: String, blocks: [CourseBlock]) { } diff --git a/Core/Core/View/Base/WebUnitView.swift b/Core/Core/View/Base/WebUnitView.swift index e1108b3dc..7b4ed8157 100644 --- a/Core/Core/View/Base/WebUnitView.swift +++ b/Core/Core/View/Base/WebUnitView.swift @@ -58,12 +58,12 @@ public struct WebUnitView: View { isLoading: $isWebViewLoading, refreshCookies: { await viewModel.updateCookies(force: true) }) - .introspect(.scrollView, on: .iOS(.v14, .v15, .v16, .v17), customize: { scrollView in - scrollView.isScrollEnabled = false - }) .frame(width: reader.size.width, height: reader.size.height) } } + .introspect(.scrollView, on: .iOS(.v14, .v15, .v16, .v17), customize: { scrollView in + scrollView.isScrollEnabled = false + }) if viewModel.updatingCookies || isWebViewLoading { VStack { ProgressBar(size: 40, lineWidth: 8) diff --git a/Course/Course/Data/CourseRepository.swift b/Course/Course/Data/CourseRepository.swift index 55f97a869..6be4d39e9 100644 --- a/Course/Course/Data/CourseRepository.swift +++ b/Course/Course/Data/CourseRepository.swift @@ -51,17 +51,17 @@ public class CourseRepository: CourseRepositoryProtocol { } public func getCourseBlocks(courseID: String) async throws -> CourseStructure { - let structure = try await api.requestData( + let course = try await api.requestData( CourseDetailsEndpoint.getCourseBlocks(courseID: courseID, userName: appStorage.user?.username ?? "") ).mapResponse(DataLayer.CourseStructure.self) - persistence.saveCourseStructure(structure: structure) - let parsedStructure = parseCourseStructure(structure: structure) + persistence.saveCourseStructure(structure: course) + let parsedStructure = parseCourseStructure(course: course) return parsedStructure } public func getCourseBlocksOffline(courseID: String) throws -> CourseStructure { let localData = try persistence.loadCourseStructure(courseID: courseID) - return parseCourseStructure(structure: localData) + return parseCourseStructure(course: localData) } public func enrollToCourse(courseID: String) async throws -> Bool { @@ -112,35 +112,36 @@ public class CourseRepository: CourseRepositoryProtocol { } } - private func parseCourseStructure(structure: DataLayer.CourseStructure) -> CourseStructure { - let blocks = Array(structure.dict.values) - let course = blocks.first(where: {$0.type == BlockType.course.rawValue })! - let descendants = course.descendants ?? [] + private func parseCourseStructure(course: DataLayer.CourseStructure) -> CourseStructure { + let blocks = Array(course.dict.values) + let courseBlock = blocks.first(where: {$0.type == BlockType.course.rawValue })! + let descendants = courseBlock.descendants ?? [] var childs: [CourseChapter] = [] for descend in descendants { - let chapter = parseChapters(id: descend, blocks: blocks) + let chapter = parseChapters(id: descend, courseId: course.id, blocks: blocks) childs.append(chapter) } - return CourseStructure(courseID: structure.id, - id: course.id, - graded: course.graded, - completion: course.completion ?? 0, - viewYouTubeUrl: course.userViewData?.encodedVideo?.youTube?.url ?? "", - encodedVideo: course.userViewData?.encodedVideo?.fallback?.url ?? "", - displayName: course.displayName, - topicID: course.userViewData?.topicID, - childs: childs, - media: structure.media, - certificate: structure.certificate?.domain) + return CourseStructure( + id: course.id, + graded: courseBlock.graded, + completion: courseBlock.completion ?? 0, + viewYouTubeUrl: courseBlock.userViewData?.encodedVideo?.youTube?.url ?? "", + encodedVideo: courseBlock.userViewData?.encodedVideo?.fallback?.url ?? "", + displayName: courseBlock.displayName, + topicID: courseBlock.userViewData?.topicID, + childs: childs, + media: course.media, + certificate: course.certificate?.domain + ) } - private func parseChapters(id: String, blocks: [DataLayer.CourseBlock]) -> CourseChapter { + private func parseChapters(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseChapter { let chapter = blocks.first(where: {$0.id == id })! let descendants = chapter.descendants ?? [] var childs: [CourseSequential] = [] for descend in descendants { - let chapter = parseSequential(id: descend, blocks: blocks) + let chapter = parseSequential(id: descend, courseId: courseId, blocks: blocks) childs.append(chapter) } return CourseChapter(blockId: chapter.blockId, @@ -151,39 +152,44 @@ public class CourseRepository: CourseRepositoryProtocol { } - private func parseSequential(id: String, blocks: [DataLayer.CourseBlock]) -> CourseSequential { + private func parseSequential(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseSequential { let sequential = blocks.first(where: {$0.id == id })! let descendants = sequential.descendants ?? [] var childs: [CourseVertical] = [] for descend in descendants { - let vertical = parseVerticals(id: descend, blocks: blocks) + let vertical = parseVerticals(id: descend, courseId: courseId, blocks: blocks) childs.append(vertical) } - return CourseSequential(blockId: sequential.blockId, - id: sequential.id, - displayName: sequential.displayName, - type: BlockType(rawValue: sequential.type) ?? .unknown, - completion: sequential.completion ?? 0, - childs: childs) + return CourseSequential( + blockId: sequential.blockId, + id: sequential.id, + displayName: sequential.displayName, + type: BlockType(rawValue: sequential.type) ?? .unknown, + completion: sequential.completion ?? 0, + childs: childs + ) } - private func parseVerticals(id: String, blocks: [DataLayer.CourseBlock]) -> CourseVertical { + private func parseVerticals(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseVertical { let sequential = blocks.first(where: {$0.id == id })! let descendants = sequential.descendants ?? [] var childs: [CourseBlock] = [] for descend in descendants { - let block = parseBlock(id: descend, blocks: blocks) + let block = parseBlock(id: descend, courseId: courseId, blocks: blocks) childs.append(block) } - return CourseVertical(blockId: sequential.blockId, - id: sequential.id, - displayName: sequential.displayName, - type: BlockType(rawValue: sequential.type) ?? .unknown, - completion: sequential.completion ?? 0, - childs: childs) + return CourseVertical( + blockId: sequential.blockId, + id: sequential.id, + courseId: courseId, + displayName: sequential.displayName, + type: BlockType(rawValue: sequential.type) ?? .unknown, + completion: sequential.completion ?? 0, + childs: childs + ) } - private func parseBlock(id: String, blocks: [DataLayer.CourseBlock]) -> CourseBlock { + private func parseBlock(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseBlock { let block = blocks.first(where: {$0.id == id })! let subtitles = block.userViewData?.transcripts?.map { let url = $0.value @@ -192,24 +198,27 @@ public class CourseRepository: CourseRepositoryProtocol { return SubtitleUrl(language: $0.key, url: url) } - return CourseBlock(blockId: block.blockId, - id: block.id, - topicId: block.userViewData?.topicID, - graded: block.graded, - completion: block.completion ?? 0, - type: BlockType(rawValue: block.type) ?? .unknown, - displayName: block.displayName, - studentUrl: block.studentUrl, - subtitles: subtitles, - videoUrl: block.userViewData?.encodedVideo?.fallback?.url, - youTubeUrl: block.userViewData?.encodedVideo?.youTube?.url) + return CourseBlock( + blockId: block.blockId, + id: block.id, + courseId: courseId, + topicId: block.userViewData?.topicID, + graded: block.graded, + completion: block.completion ?? 0, + type: BlockType(rawValue: block.type) ?? .unknown, + displayName: block.displayName, + studentUrl: block.studentUrl, + subtitles: subtitles, + videoUrl: block.userViewData?.encodedVideo?.fallback?.url, + youTubeUrl: block.userViewData?.encodedVideo?.youTube?.url + ) } } // Mark - For testing and SwiftUI preview -#if DEBUG // swiftlint:disable all +#if DEBUG class CourseRepositoryMock: CourseRepositoryProtocol { func resumeBlock(courseID: String) async throws -> ResumeBlock { ResumeBlock(blockID: "123") @@ -245,7 +254,7 @@ class CourseRepositoryMock: CourseRepositoryProtocol { let decoder = JSONDecoder() let jsonData = Data(courseStructureJson.utf8) let courseBlocks = try decoder.decode(DataLayer.CourseStructure.self, from: jsonData) - return parseCourseStructure(structure: courseBlocks) + return parseCourseStructure(course: courseBlocks) } public func getCourseDetails(courseID: String) async throws -> CourseDetails { @@ -267,12 +276,8 @@ class CourseRepositoryMock: CourseRepositoryProtocol { public func getCourseBlocks(courseID: String) async throws -> CourseStructure { do { -// let decoder = JSONDecoder() -// let jsonData = Data(courseStructureJson.utf8) let courseBlocks = try courseStructureJson.data(using: .utf8)!.mapResponse(DataLayer.CourseStructure.self) - -// let courseBlocks = try decoder.decode(DataLayer.CourseStructure.self, from: jsonData) - return parseCourseStructure(structure: courseBlocks) + return parseCourseStructure(course: courseBlocks) } catch { throw error } @@ -309,87 +314,94 @@ And there are various ways of describing it-- call it oral poetry or """ } - private func parseCourseStructure(structure: DataLayer.CourseStructure) -> CourseStructure { - let blocks = Array(structure.dict.values) - let course = blocks.first(where: {$0.type == BlockType.course.rawValue })! - let descendants = course.descendants ?? [] + private func parseCourseStructure(course: DataLayer.CourseStructure) -> CourseStructure { + let blocks = Array(course.dict.values) + let courseBlock = blocks.first(where: {$0.type == BlockType.course.rawValue })! + let descendants = courseBlock.descendants ?? [] var childs: [CourseChapter] = [] for descend in descendants { - let chapter = parseChapters(id: descend, blocks: blocks) + let chapter = parseChapters(id: descend, courseId: course.id, blocks: blocks) childs.append(chapter) } - return CourseStructure(courseID: structure.id, - id: course.id, - graded: course.graded, - completion: course.completion ?? 0, - viewYouTubeUrl: course.userViewData?.encodedVideo?.youTube?.url ?? "", - encodedVideo: course.userViewData?.encodedVideo?.fallback?.url ?? "", - displayName: course.displayName, - topicID: course.userViewData?.topicID, - childs: childs, - media: structure.media, - certificate: structure.certificate?.domain) + return CourseStructure( + id: course.id, + graded: courseBlock.graded, + completion: courseBlock.completion ?? 0, + viewYouTubeUrl: courseBlock.userViewData?.encodedVideo?.youTube?.url ?? "", + encodedVideo: courseBlock.userViewData?.encodedVideo?.fallback?.url ?? "", + displayName: courseBlock.displayName, + topicID: courseBlock.userViewData?.topicID, + childs: childs, + media: course.media, + certificate: course.certificate?.domain + ) } - private func parseChapters(id: String, blocks: [DataLayer.CourseBlock]) -> CourseChapter { + private func parseChapters(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseChapter { let chapter = blocks.first(where: {$0.id == id })! let descendants = chapter.descendants ?? [] var childs: [CourseSequential] = [] for descend in descendants { - let chapter = parseSequential(id: descend, blocks: blocks) + let chapter = parseSequential(id: descend, courseId: courseId, blocks: blocks) childs.append(chapter) } - return CourseChapter(blockId: chapter.blockId, - id: chapter.id, - displayName: chapter.displayName, - type: BlockType(rawValue: chapter.type) ?? .unknown, - childs: childs) + return CourseChapter( + blockId: chapter.blockId, + id: chapter.id, + displayName: chapter.displayName, + type: BlockType(rawValue: chapter.type) ?? .unknown, + childs: childs + ) } - private func parseSequential(id: String, blocks: [DataLayer.CourseBlock]) -> CourseSequential { + private func parseSequential(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseSequential { let sequential = blocks.first(where: {$0.id == id })! let descendants = sequential.descendants ?? [] var childs: [CourseVertical] = [] for descend in descendants { - let vertical = parseVerticals(id: descend, blocks: blocks) + let vertical = parseVerticals(id: descend, courseId: courseId, blocks: blocks) childs.append(vertical) } - return CourseSequential(blockId: sequential.blockId, - id: sequential.id, - displayName: sequential.displayName, - type: BlockType(rawValue: sequential.type) ?? .unknown, - completion: sequential.completion ?? 0, - childs: childs) + return CourseSequential( + blockId: sequential.blockId, + id: sequential.id, + displayName: sequential.displayName, + type: BlockType(rawValue: sequential.type) ?? .unknown, + completion: sequential.completion ?? 0, + childs: childs + ) } - private func parseVerticals(id: String, blocks: [DataLayer.CourseBlock]) -> CourseVertical { + private func parseVerticals(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseVertical { let sequential = blocks.first(where: {$0.id == id })! let descendants = sequential.descendants ?? [] var childs: [CourseBlock] = [] for descend in descendants { - let block = parseBlock(id: descend, blocks: blocks) + let block = parseBlock(id: descend, courseId: courseId, blocks: blocks) childs.append(block) } - return CourseVertical(blockId: sequential.blockId, - id: sequential.id, - displayName: sequential.displayName, - type: BlockType(rawValue: sequential.type) ?? .unknown, - completion: sequential.completion ?? 0, - childs: childs) + return CourseVertical( + blockId: sequential.blockId, + id: sequential.id, + courseId: courseId, + displayName: sequential.displayName, + type: BlockType(rawValue: sequential.type) ?? .unknown, + completion: sequential.completion ?? 0, + childs: childs + ) } - private func parseBlock(id: String, blocks: [DataLayer.CourseBlock]) -> CourseBlock { + private func parseBlock(id: String, courseId: String, blocks: [DataLayer.CourseBlock]) -> CourseBlock { let block = blocks.first(where: {$0.id == id })! let subtitles = block.userViewData?.transcripts?.map { let url = $0.value -// .replacingOccurrences(of: config.baseURL.absoluteString, with: "") -// .replacingOccurrences(of: "?lang=\($0.key)", with: "") return SubtitleUrl(language: $0.key, url: url) } return CourseBlock(blockId: block.blockId, id: block.id, + courseId: courseId, topicId: block.userViewData?.topicID, graded: block.graded, completion: block.completion ?? 0, @@ -1023,5 +1035,5 @@ And there are various ways of describing it-- call it oral poetry or } """ } - #endif +// swiftlint:enable all diff --git a/Course/Course/Domain/CourseInteractor.swift b/Course/Course/Domain/CourseInteractor.swift index 3bcfdd574..df58f05a9 100644 --- a/Course/Course/Domain/CourseInteractor.swift +++ b/Course/Course/Domain/CourseInteractor.swift @@ -48,7 +48,6 @@ public class CourseInteractor: CourseInteractorProtocol { } } return CourseStructure( - courseID: course.courseID, id: course.id, graded: course.graded, completion: course.completion, @@ -135,6 +134,7 @@ public class CourseInteractor: CourseInteractorProtocol { return CourseVertical( blockId: vertical.blockId, id: vertical.id, + courseId: vertical.courseId, displayName: vertical.displayName, type: vertical.type, completion: vertical.completion, diff --git a/Course/Course/Presentation/Container/CourseContainerViewModel.swift b/Course/Course/Presentation/Container/CourseContainerViewModel.swift index 4f948bfa9..938c187a0 100644 --- a/Course/Course/Presentation/Container/CourseContainerViewModel.swift +++ b/Course/Course/Presentation/Container/CourseContainerViewModel.swift @@ -27,10 +27,7 @@ public class CourseContainerViewModel: BaseCourseViewModel { } } - private let interactor: CourseInteractorProtocol - private let authInteractor: AuthInteractorProtocol let router: CourseRouter - let analytics: CourseAnalytics let config: Config let connectivity: ConnectivityProtocol @@ -40,6 +37,10 @@ public class CourseContainerViewModel: BaseCourseViewModel { let enrollmentStart: Date? let enrollmentEnd: Date? + private let interactor: CourseInteractorProtocol + private let authInteractor: AuthInteractorProtocol + private let analytics: CourseAnalytics + public init( interactor: CourseInteractorProtocol, authInteractor: AuthInteractorProtocol, @@ -88,8 +89,10 @@ public class CourseContainerViewModel: BaseCourseViewModel { courseStructure = try await interactor.getCourseBlocks(courseID: courseID) isShowProgress = false if let courseStructure { - let continueWith = try await getResumeBlock(courseID: courseID, - courseStructure: courseStructure) + let continueWith = try await getResumeBlock( + courseID: courseID, + courseStructure: courseStructure + ) withAnimation { self.continueWith = continueWith } @@ -139,7 +142,7 @@ public class CourseContainerViewModel: BaseCourseViewModel { try manager.addToDownloadQueue(blocks: blocks) downloadState[blockId] = .downloading case .downloading: - try manager.cancelDownloading(blocks: blocks) + try manager.cancelDownloading(courseId: courseStructure?.id ?? "", blocks: blocks) downloadState[blockId] = .available case .finished: manager.deleteFile(blocks: blocks) @@ -169,12 +172,31 @@ public class CourseContainerViewModel: BaseCourseViewModel { } } + func trackSequentialClicked(_ sequential: CourseSequential) { + guard let course = courseStructure else { return } + analytics.sequentialClicked( + courseId: course.id, + courseName: course.displayName, + blockId: sequential.blockId, + blockName: sequential.displayName + ) + } + + func trackResumeCourseTapped(blockId: String) { + guard let course = courseStructure else { return } + analytics.resumeCourseTapped( + courseId: course.id, + courseName: course.displayName, + blockId: blockId + ) + } + @MainActor private func setDownloadsStates() { - guard let courseStructure else { return } - let downloads = manager.getAllDownloads() + guard let course = courseStructure else { return } + let downloads = manager.getDownloadsForCourse(course.id) var states: [String: DownloadViewState] = [:] - for chapter in courseStructure.childs { + for chapter in course.childs { for sequential in chapter.childs where sequential.isDownloadable { var childs: [DownloadViewState] = [] for vertical in sequential.childs where vertical.isDownloadable { diff --git a/Course/Course/Presentation/CourseAnalytics.swift b/Course/Course/Presentation/CourseAnalytics.swift index 914774946..6ad6e0389 100644 --- a/Course/Course/Presentation/CourseAnalytics.swift +++ b/Course/Course/Presentation/CourseAnalytics.swift @@ -37,7 +37,12 @@ class CourseAnalyticsMock: CourseAnalytics { public func nextBlockClicked(courseId: String, courseName: String, blockId: String, blockName: String) {} public func prevBlockClicked(courseId: String, courseName: String, blockId: String, blockName: String) {} public func finishVerticalClicked(courseId: String, courseName: String, blockId: String, blockName: String) {} - public func finishVerticalNextSectionClicked(courseId: String, courseName: String, blockId: String, blockName: String) {} + public func finishVerticalNextSectionClicked( + courseId: String, + courseName: String, + blockId: String, + blockName: String + ) {} public func finishVerticalBackToOutlineClicked(courseId: String, courseName: String) {} public func courseOutlineCourseTabClicked(courseId: String, courseName: String) {} public func courseOutlineVideosTabClicked(courseId: String, courseName: String) {} diff --git a/Course/Course/Presentation/CourseRouter.swift b/Course/Course/Presentation/CourseRouter.swift index b6e2832f3..2c9a60982 100644 --- a/Course/Course/Presentation/CourseRouter.swift +++ b/Course/Course/Presentation/CourseRouter.swift @@ -22,7 +22,6 @@ public protocol CourseRouter: BaseRouter { func showCourseUnit( courseName: String, - id: String, blockId: String, courseID: String, sectionName: String, @@ -33,7 +32,6 @@ public protocol CourseRouter: BaseRouter { ) func replaceCourseUnit( - id: String, courseName: String, blockId: String, courseID: String, @@ -45,7 +43,6 @@ public protocol CourseRouter: BaseRouter { ) func showCourseVerticalView( - id: String, courseID: String, courseName: String, title: String, @@ -80,7 +77,6 @@ public class CourseRouterMock: BaseRouterMock, CourseRouter { public func showCourseUnit( courseName: String, - id: String, blockId: String, courseID: String, sectionName: String, @@ -91,7 +87,6 @@ public class CourseRouterMock: BaseRouterMock, CourseRouter { ) {} public func replaceCourseUnit( - id: String, courseName: String, blockId: String, courseID: String, @@ -103,7 +98,6 @@ public class CourseRouterMock: BaseRouterMock, CourseRouter { ) {} public func showCourseVerticalView( - id: String, courseID: String, courseName: String, title: String, diff --git a/Course/Course/Presentation/Details/CourseDetailsView.swift b/Course/Course/Presentation/Details/CourseDetailsView.swift index b7556292e..c6ba3b2e1 100644 --- a/Course/Course/Presentation/Details/CourseDetailsView.swift +++ b/Course/Course/Presentation/Details/CourseDetailsView.swift @@ -349,4 +349,5 @@ struct CourseDetailsView_Previews: PreviewProvider { .previewDisplayName("CourseDetailsView Dark") } } +// swiftlint:enable all #endif diff --git a/Course/Course/Presentation/Outline/ContinueWithView.swift b/Course/Course/Presentation/Outline/ContinueWithView.swift index 998ddeca2..14bc3b874 100644 --- a/Course/Course/Presentation/Outline/ContinueWithView.swift +++ b/Course/Course/Presentation/Outline/ContinueWithView.swift @@ -15,18 +15,16 @@ struct ContinueWith { } struct ContinueWithView: View { - let data: ContinueWith - let courseStructure: CourseStructure - let router: CourseRouter - let analytics: CourseAnalytics + private let data: ContinueWith + private let courseStructure: CourseStructure + private let action: () -> Void private var idiom: UIUserInterfaceIdiom { UIDevice.current.userInterfaceIdiom } - init(data: ContinueWith, courseStructure: CourseStructure, router: CourseRouter, analytics: CourseAnalytics) { + init(data: ContinueWith, courseStructure: CourseStructure, action: @escaping () -> Void) { self.data = data self.courseStructure = courseStructure - self.router = router - self.analytics = analytics + self.action = action } var body: some View { @@ -39,19 +37,8 @@ struct ContinueWithView: View { ContinueTitle(vertical: vertical) }.foregroundColor(CoreAssets.textPrimary.swiftUIColor) Spacer() - UnitButtonView(type: .continueLesson, action: { - analytics.resumeCourseTapped(courseId: courseStructure.courseID, - courseName: courseStructure.displayName, - blockId: chapter.childs[data.sequentialIndex] - .childs[data.verticalIndex].blockId) - router.showCourseVerticalView(id: courseStructure.id, - courseID: courseStructure.courseID, - courseName: courseStructure.displayName, - title: chapter.childs[data.sequentialIndex].displayName, - chapters: courseStructure.childs, - chapterIndex: data.chapterIndex, - sequentialIndex: data.sequentialIndex) - }).frame(width: 200) + UnitButtonView(type: .continueLesson, action: action) + .frame(width: 200) } .padding(.horizontal, 24) .padding(.top, 32) } else { @@ -59,23 +46,11 @@ struct ContinueWithView: View { ContinueTitle(vertical: vertical) .foregroundColor(CoreAssets.textPrimary.swiftUIColor) } - UnitButtonView(type: .continueLesson, action: { - analytics.resumeCourseTapped(courseId: courseStructure.courseID, - courseName: courseStructure.displayName, - blockId: chapter.childs[data.sequentialIndex] - .childs[data.verticalIndex].blockId) - router.showCourseVerticalView(id: courseStructure.id, - courseID: courseStructure.courseID, - courseName: courseStructure.displayName, - title: chapter.childs[data.sequentialIndex].displayName, - chapters: courseStructure.childs, - chapterIndex: data.chapterIndex, - sequentialIndex: data.sequentialIndex) - }) + UnitButtonView(type: .continueLesson, action: action) } } - } .padding(.horizontal, 24) + }.padding(.horizontal, 24) .padding(.top, 32) } } @@ -120,12 +95,15 @@ struct ContinueWithView_Previews: PreviewProvider { CourseVertical( blockId: "1", id: "1", + courseId: "123", displayName: "Vertical", type: .vertical, completion: 0, childs: [ CourseBlock( - blockId: "2", id: "2", + blockId: "2", + id: "2", + courseId: "123", graded: true, completion: 0, type: .html, @@ -134,20 +112,22 @@ struct ContinueWithView_Previews: PreviewProvider { ])])]) ] - ContinueWithView(data: ContinueWith(chapterIndex: 0, sequentialIndex: 0, verticalIndex: 0), - courseStructure: CourseStructure(courseID: "v1-course", - id: "123", - graded: true, - completion: 0, - viewYouTubeUrl: "", - encodedVideo: "", - displayName: "Namaste", - childs: childs, - media: DataLayer.CourseMedia.init(image: - .init(raw: "", small: "", large: "")), - certificate: nil), - router: CourseRouterMock(), - analytics: CourseAnalyticsMock()) + ContinueWithView( + data: ContinueWith(chapterIndex: 0, sequentialIndex: 0, verticalIndex: 0), + courseStructure: CourseStructure( + id: "123", + graded: true, + completion: 0, + viewYouTubeUrl: "", + encodedVideo: "", + displayName: "Namaste", + childs: childs, + media: DataLayer.CourseMedia( + image: .init(raw: "", small: "", large: "") + ), + certificate: nil) + ) { + } } } #endif diff --git a/Course/Course/Presentation/Outline/CourseOutlineView.swift b/Course/Course/Presentation/Outline/CourseOutlineView.swift index b0f06ef29..9a31759c9 100644 --- a/Course/Course/Presentation/Outline/CourseOutlineView.swift +++ b/Course/Course/Presentation/Outline/CourseOutlineView.swift @@ -33,12 +33,13 @@ public struct CourseOutlineView: View { public var body: some View { ZStack(alignment: .top) { - // MARK: - Page name GeometryReader { proxy in VStack(alignment: .center) { - NavigationBar(title: title, - leftButtonAction: { viewModel.router.back() }) + NavigationBar( + title: title, + leftButtonAction: { viewModel.router.back() } + ) // MARK: - Page Body RefreshableScrollViewCompat(action: { @@ -68,15 +69,21 @@ public struct CourseOutlineView: View { Text(CourseLocalization.Outline.passedTheCourse) .font(Theme.Fonts.bodyMedium) .multilineTextAlignment(.center) - StyledButton(CourseLocalization.Outline.viewCertificate, - action: { openCertificateView = true }, - isTransparent: true) + StyledButton( + CourseLocalization.Outline.viewCertificate, + action: { openCertificateView = true }, + isTransparent: true + ) .frame(width: 141) .padding(.top, 8) - .fullScreenCover(isPresented: $openCertificateView, - content: { - WebBrowser(url: url, pageTitle: CourseLocalization.Outline.certificate) - }) + .fullScreenCover( + isPresented: $openCertificateView, + content: { + WebBrowser( + url: url, + pageTitle: CourseLocalization.Outline.certificate + ) + }) }.padding(.horizontal, 24) .padding(.top, 8) .foregroundColor(.white) @@ -89,117 +96,42 @@ public struct CourseOutlineView: View { .padding(.top, 7) .fixedSize(horizontal: false, vertical: true) - if !isVideo { - if let continueWith = viewModel.continueWith, - let courseStructure = viewModel.courseStructure { - ContinueWithView( - data: continueWith, - courseStructure: courseStructure, - router: viewModel.router, - analytics: viewModel.analytics + if let continueWith = viewModel.continueWith, + let courseStructure = viewModel.courseStructure, + !isVideo { + + // MARK: - ContinueWith button + ContinueWithView( + data: continueWith, + courseStructure: courseStructure + ) { + let chapter = courseStructure.childs[continueWith.chapterIndex] + let sequential = chapter.childs[continueWith.sequentialIndex] + + viewModel.trackResumeCourseTapped( + blockId: sequential.childs[continueWith.verticalIndex].blockId + ) + viewModel.router.showCourseVerticalView( + courseID: courseStructure.id, + courseName: courseStructure.displayName, + title: sequential.displayName, + chapters: courseStructure.childs, + chapterIndex: continueWith.chapterIndex, + sequentialIndex: continueWith.sequentialIndex ) } } - if let courseStructure = isVideo + if let course = isVideo ? viewModel.courseVideosStructure : viewModel.courseStructure { - // MARK: - Sections list - let chapters = courseStructure.childs - ForEach(chapters, id: \.id) { chapter in - let chapterIndex = chapters.firstIndex(where: { $0.id == chapter.id }) - Text(chapter.displayName) - .font(Theme.Fonts.titleMedium) - .multilineTextAlignment(.leading) - .foregroundColor(CoreAssets.textSecondary.swiftUIColor) - .padding(.horizontal, 24) - .padding(.top, 40) - ForEach(chapter.childs, id: \.id) { child in - let sequentialIndex = chapter.childs.firstIndex(where: { $0.id == child.id }) - VStack(alignment: .leading) { - Button(action: { - if let chapterIndex, let sequentialIndex { - viewModel.analytics - .sequentialClicked(courseId: courseID, - courseName: self.title, - blockId: child.blockId, - blockName: child.displayName) - viewModel.router.showCourseVerticalView( - id: courseID, - courseID: courseStructure.courseID, - courseName: viewModel.courseStructure?.displayName ?? "", - title: child.displayName, - chapters: chapters, - chapterIndex: chapterIndex, - sequentialIndex: sequentialIndex - ) - } - }, label: { - Group { - child.type.image - Text(child.displayName) - .font(Theme.Fonts.titleMedium) - .multilineTextAlignment(.leading) - .lineLimit(1) - .frame( - maxWidth: idiom == .pad - ? proxy.size.width * 0.5 - : proxy.size.width * 0.6, - alignment: .leading - ) - }.foregroundColor(CoreAssets.textPrimary.swiftUIColor) - Spacer() - if let state = viewModel.downloadState[child.id] { - switch state { - case .available: - DownloadAvailableView() - .onTapGesture { - viewModel.onDownloadViewTap( - chapter: chapter, - blockId: child.id, - state: state - ) - } - .onForeground { - viewModel.onForeground() - } - case .downloading: - DownloadProgressView() - .onTapGesture { - viewModel.onDownloadViewTap( - chapter: chapter, - blockId: child.id, - state: state - ) - } - .onBackground { - viewModel.onBackground() - } - case .finished: - DownloadFinishedView() - .onTapGesture { - viewModel.onDownloadViewTap( - chapter: chapter, - blockId: child.id, - state: state - ) - } - } - } - Image(systemName: "chevron.right") - .foregroundColor(CoreAssets.accentColor.swiftUIColor) - }).padding(.horizontal, 36) - .padding(.vertical, 20) - if chapterIndex != chapters.count - 1 { - Divider() - .frame(height: 1) - .overlay(CoreAssets.cardViewStroke.swiftUIColor) - .padding(.horizontal, 24) - } - } - } - } + // MARK: - Sections + CourseStructureView( + proxy: proxy, + course: course, + viewModel: viewModel + ) } else { if let courseStart = viewModel.courseStart { Text(courseStart > Date() ? CourseLocalization.Outline.courseHasntStarted : "") @@ -255,6 +187,114 @@ public struct CourseOutlineView: View { } } +struct CourseStructureView: View { + + private let proxy: GeometryProxy + private let course: CourseStructure + private let viewModel: CourseContainerViewModel + private var idiom: UIUserInterfaceIdiom { UIDevice.current.userInterfaceIdiom } + + init(proxy: GeometryProxy, course: CourseStructure, viewModel: CourseContainerViewModel) { + self.proxy = proxy + self.course = course + self.viewModel = viewModel + } + + var body: some View { + let chapters = course.childs + ForEach(chapters, id: \.id) { chapter in + let chapterIndex = chapters.firstIndex(where: { $0.id == chapter.id }) + Text(chapter.displayName) + .font(Theme.Fonts.titleMedium) + .multilineTextAlignment(.leading) + .foregroundColor(CoreAssets.textSecondary.swiftUIColor) + .padding(.horizontal, 24) + .padding(.top, 40) + ForEach(chapter.childs, id: \.id) { child in + let sequentialIndex = chapter.childs.firstIndex(where: { $0.id == child.id }) + VStack(alignment: .leading) { + Button( + action: { + if let chapterIndex, let sequentialIndex { + viewModel.trackSequentialClicked(child) + viewModel.router.showCourseVerticalView( + courseID: viewModel.courseStructure?.id ?? "", + courseName: viewModel.courseStructure?.displayName ?? "", + title: child.displayName, + chapters: chapters, + chapterIndex: chapterIndex, + sequentialIndex: sequentialIndex + ) + } + }, + label: { + Group { + child.type.image + Text(child.displayName) + .font(Theme.Fonts.titleMedium) + .multilineTextAlignment(.leading) + .lineLimit(1) + .frame( + maxWidth: idiom == .pad + ? proxy.size.width * 0.5 + : proxy.size.width * 0.6, + alignment: .leading + ) + }.foregroundColor(CoreAssets.textPrimary.swiftUIColor) + Spacer() + if let state = viewModel.downloadState[child.id] { + switch state { + case .available: + DownloadAvailableView() + .onTapGesture { + viewModel.onDownloadViewTap( + chapter: chapter, + blockId: child.id, + state: state + ) + } + .onForeground { + viewModel.onForeground() + } + case .downloading: + DownloadProgressView() + .onTapGesture { + viewModel.onDownloadViewTap( + chapter: chapter, + blockId: child.id, + state: state + ) + } + .onBackground { + viewModel.onBackground() + } + case .finished: + DownloadFinishedView() + .onTapGesture { + viewModel.onDownloadViewTap( + chapter: chapter, + blockId: child.id, + state: state + ) + } + } + } + Image(systemName: "chevron.right") + .foregroundColor(CoreAssets.accentColor.swiftUIColor) + }).padding(.horizontal, 36) + .padding(.vertical, 20) + if chapterIndex != chapters.count - 1 { + Divider() + .frame(height: 1) + .overlay(CoreAssets.cardViewStroke.swiftUIColor) + .padding(.horizontal, 24) + } + } + } + } + } +} + #if DEBUG struct CourseOutlineView_Previews: PreviewProvider { static var previews: some View { diff --git a/Course/Course/Presentation/Outline/CourseVerticalView.swift b/Course/Course/Presentation/Outline/CourseVerticalView.swift index cf72ea53a..40ccd5153 100644 --- a/Course/Course/Presentation/Outline/CourseVerticalView.swift +++ b/Course/Course/Presentation/Outline/CourseVerticalView.swift @@ -15,7 +15,6 @@ public struct CourseVerticalView: View { private var title: String private var courseName: String private var courseID: String - private let id: String @ObservedObject private var viewModel: CourseVerticalViewModel private var idiom: UIUserInterfaceIdiom { UIDevice.current.userInterfaceIdiom } @@ -24,13 +23,11 @@ public struct CourseVerticalView: View { title: String, courseName: String, courseID: String, - id: String, viewModel: CourseVerticalViewModel ) { self.title = title self.courseName = courseName self.courseID = courseID - self.id = id self.viewModel = viewModel } @@ -50,19 +47,21 @@ public struct CourseVerticalView: View { Button(action: { let vertical = viewModel.verticals[index] if let block = vertical.childs.first { - viewModel.analytics.verticalClicked(courseId: courseID, - courseName: courseName, - blockId: vertical.blockId, - blockName: vertical.displayName) - viewModel.router.showCourseUnit(courseName: courseName, - id: id, - blockId: block.id, - courseID: courseID, - sectionName: block.displayName, - verticalIndex: index, - chapters: viewModel.chapters, - chapterIndex: viewModel.chapterIndex, - sequentialIndex: viewModel.sequentialIndex) + viewModel.trackVerticalClicked( + courseId: courseID, + courseName: courseName, + vertical: vertical + ) + viewModel.router.showCourseUnit( + courseName: courseName, + blockId: block.id, + courseID: courseID, + sectionName: block.displayName, + verticalIndex: index, + chapters: viewModel.chapters, + chapterIndex: viewModel.chapterIndex, + sequentialIndex: viewModel.sequentialIndex + ) } }, label: { HStack { @@ -188,6 +187,7 @@ struct CourseVerticalView_Previews: PreviewProvider { CourseVertical( blockId: "4", id: "4", + courseId: "1", displayName: "Vertical", type: .vertical, completion: 0, @@ -207,13 +207,23 @@ struct CourseVerticalView_Previews: PreviewProvider { ) return Group { - CourseVerticalView(title: "Course title", courseName: "CourseName", courseID: "1", id: "1", viewModel: viewModel) - .preferredColorScheme(.light) - .previewDisplayName("CourseVerticalView Light") + CourseVerticalView( + title: "Course title", + courseName: "CourseName", + courseID: "1", + viewModel: viewModel + ) + .preferredColorScheme(.light) + .previewDisplayName("CourseVerticalView Light") - CourseVerticalView(title: "Course title", courseName: "CourseName", courseID: "1", id: "1", viewModel: viewModel) - .preferredColorScheme(.dark) - .previewDisplayName("CourseVerticalView Dark") + CourseVerticalView( + title: "Course title", + courseName: "CourseName", + courseID: "1", + viewModel: viewModel + ) + .preferredColorScheme(.dark) + .previewDisplayName("CourseVerticalView Dark") } } diff --git a/Course/Course/Presentation/Outline/CourseVerticalViewModel.swift b/Course/Course/Presentation/Outline/CourseVerticalViewModel.swift index 793fb7519..9f2ae30b7 100644 --- a/Course/Course/Presentation/Outline/CourseVerticalViewModel.swift +++ b/Course/Course/Presentation/Outline/CourseVerticalViewModel.swift @@ -67,7 +67,7 @@ public class CourseVerticalViewModel: BaseCourseViewModel { try manager.addToDownloadQueue(blocks: blocks) downloadState[vertical.id] = .downloading case .downloading: - try manager.cancelDownloading(blocks: blocks) + try manager.cancelDownloading(courseId: vertical.courseId, blocks: blocks) downloadState[vertical.id] = .available case .finished: manager.deleteFile(blocks: blocks) @@ -81,8 +81,22 @@ public class CourseVerticalViewModel: BaseCourseViewModel { } } + func trackVerticalClicked( + courseId: String, + courseName: String, + vertical: CourseVertical + ) { + analytics.verticalClicked( + courseId: courseId, + courseName: courseName, + blockId: vertical.blockId, + blockName: vertical.displayName + ) + } + private func setDownloadsStates() { - let downloads = manager.getAllDownloads() + guard let courseId = verticals.first?.courseId else { return } + let downloads = manager.getDownloadsForCourse(courseId) var states: [String: DownloadViewState] = [:] for vertical in verticals where vertical.isDownloadable { var childs: [DownloadViewState] = [] diff --git a/Course/Course/Presentation/Unit/CourseNavigationView.swift b/Course/Course/Presentation/Unit/CourseNavigationView.swift index 97db77c0d..ba9d34a5a 100644 --- a/Course/Course/Presentation/Unit/CourseNavigationView.swift +++ b/Course/Course/Presentation/Unit/CourseNavigationView.swift @@ -72,9 +72,8 @@ struct CourseNavigationView: View { okTapped: { playerStateSubject.send(VideoPlayerState.pause) playerStateSubject.send(VideoPlayerState.kill) - viewModel.analytics - .finishVerticalBackToOutlineClicked(courseId: viewModel.courseID, - courseName: viewModel.courseName) + + viewModel.trackFinishVerticalBackToOutlineClicked() viewModel.router.dismiss(animated: false) viewModel.router.back(animated: true) }, @@ -113,7 +112,6 @@ struct CourseNavigationView: View { ) viewModel.router.replaceCourseUnit( - id: viewModel.id, courseName: viewModel.courseName, blockId: viewModel.lessonID, courseID: viewModel.courseID, @@ -156,7 +154,6 @@ struct CourseNavigationView_Previews: PreviewProvider { let viewModel = CourseUnitViewModel( lessonID: "1", courseID: "1", - id: "1", courseName: "Name", chapters: [], chapterIndex: 1, diff --git a/Course/Course/Presentation/Unit/CourseUnitView.swift b/Course/Course/Presentation/Unit/CourseUnitView.swift index d8b06640e..1479844a4 100644 --- a/Course/Course/Presentation/Unit/CourseUnitView.swift +++ b/Course/Course/Presentation/Unit/CourseUnitView.swift @@ -96,7 +96,7 @@ public struct CourseUnitView: View { VStack { if showDiscussion { DiscussionView( - id: viewModel.id, + id: viewModel.courseID, blockID: blockID, blockKey: blockKey, title: title, @@ -105,7 +105,7 @@ public struct CourseUnitView: View { Spacer(minLength: 100) } else { DiscussionView( - id: viewModel.id, + id: viewModel.courseID, blockID: blockID, blockKey: blockKey, title: title, @@ -218,6 +218,7 @@ struct CourseUnitView_Previews: PreviewProvider { CourseBlock( blockId: "1", id: "1", + courseId: "123", topicId: "1", graded: false, completion: 0, @@ -230,6 +231,7 @@ struct CourseUnitView_Previews: PreviewProvider { CourseBlock( blockId: "2", id: "2", + courseId: "123", topicId: "2", graded: false, completion: 0, @@ -242,6 +244,7 @@ struct CourseUnitView_Previews: PreviewProvider { CourseBlock( blockId: "3", id: "3", + courseId: "123", topicId: "3", graded: false, completion: 0, @@ -254,6 +257,7 @@ struct CourseUnitView_Previews: PreviewProvider { CourseBlock( blockId: "4", id: "4", + courseId: "123", topicId: "4", graded: false, completion: 0, @@ -280,7 +284,9 @@ struct CourseUnitView_Previews: PreviewProvider { completion: 0, childs: [ CourseVertical( - blockId: "6", id: "6", + blockId: "6", + id: "6", + courseId: "123", displayName: "6", type: .vertical, completion: 0, @@ -304,7 +310,9 @@ struct CourseUnitView_Previews: PreviewProvider { completion: 0, childs: [ CourseVertical( - blockId: "4", id: "4", + blockId: "4", + id: "4", + courseId: "1", displayName: "4", type: .vertical, completion: 0, @@ -319,7 +327,6 @@ struct CourseUnitView_Previews: PreviewProvider { return CourseUnitView(viewModel: CourseUnitViewModel( lessonID: "", courseID: "", - id: "1", courseName: "courseName", chapters: chapters, chapterIndex: 0, diff --git a/Course/Course/Presentation/Unit/CourseUnitViewModel.swift b/Course/Course/Presentation/Unit/CourseUnitViewModel.swift index cca727927..e48e3ab32 100644 --- a/Course/Course/Presentation/Unit/CourseUnitViewModel.swift +++ b/Course/Course/Presentation/Unit/CourseUnitViewModel.swift @@ -63,7 +63,6 @@ public class CourseUnitViewModel: ObservableObject { var lessonID: String var courseID: String - var id: String private let interactor: CourseInteractorProtocol let router: CourseRouter @@ -82,7 +81,6 @@ public class CourseUnitViewModel: ObservableObject { public init( lessonID: String, courseID: String, - id: String, courseName: String, chapters: [CourseChapter], chapterIndex: Int, @@ -96,7 +94,6 @@ public class CourseUnitViewModel: ObservableObject { ) { self.lessonID = lessonID self.courseID = courseID - self.id = id self.courseName = courseName self.chapters = chapters self.chapterIndex = chapterIndex @@ -127,25 +124,29 @@ public class CourseUnitViewModel: ObservableObject { if index != verticals[verticalIndex].childs.count - 1 { index += 1 } let nextBlock = verticals[verticalIndex].childs[index] nextTitles() - analytics.nextBlockClicked(courseId: courseID, - courseName: courseName, - blockId: nextBlock.blockId, - blockName: nextBlock.displayName) + analytics.nextBlockClicked( + courseId: courseID, + courseName: courseName, + blockId: nextBlock.blockId, + blockName: nextBlock.displayName + ) case .previous: if index != 0 { index -= 1 } nextTitles() let prevBlock = verticals[verticalIndex].childs[index] - analytics.prevBlockClicked(courseId: courseID, - courseName: courseName, - blockId: prevBlock.blockId, - blockName: prevBlock.displayName) + analytics.prevBlockClicked( + courseId: courseID, + courseName: courseName, + blockId: prevBlock.blockId, + blockName: prevBlock.displayName + ) } } @MainActor func blockCompletionRequest(blockID: String) async { do { - try await interactor.blockCompletionRequest(courseID: self.id, blockID: blockID) + try await interactor.blockCompletionRequest(courseID: courseID, blockID: blockID) } catch let error { if error.isInternetError || error is NoCachedDataError { errorMessage = CoreLocalization.Error.slowOrNoInternetConnection @@ -175,4 +176,8 @@ public class CourseUnitViewModel: ObservableObject { return URL(string: url) } } + + func trackFinishVerticalBackToOutlineClicked() { + analytics.finishVerticalBackToOutlineClicked(courseId: courseID, courseName: courseName) + } } diff --git a/Course/CourseTests/CourseMock.generated.swift b/Course/CourseTests/CourseMock.generated.swift index ff0dc4ced..bdf04ef71 100644 --- a/Course/CourseTests/CourseMock.generated.swift +++ b/Course/CourseTests/CourseMock.generated.swift @@ -2055,3 +2055,400 @@ open class CourseInteractorProtocolMock: CourseInteractorProtocol, Mock { } } +// MARK: - DownloadManagerProtocol + +open class DownloadManagerProtocolMock: DownloadManagerProtocol, Mock { + public init(sequencing sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst, stubbing stubbingPolicy: StubbingPolicy = .wrap, file: StaticString = #file, line: UInt = #line) { + SwiftyMockyTestObserver.setup() + self.sequencingPolicy = sequencingPolicy + self.stubbingPolicy = stubbingPolicy + self.file = file + self.line = line + } + + var matcher: Matcher = Matcher.default + var stubbingPolicy: StubbingPolicy = .wrap + var sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst + + private var queue = DispatchQueue(label: "com.swiftymocky.invocations", qos: .userInteractive) + private var invocations: [MethodType] = [] + private var methodReturnValues: [Given] = [] + private var methodPerformValues: [Perform] = [] + private var file: StaticString? + private var line: UInt? + + public typealias PropertyStub = Given + public typealias MethodStub = Given + public typealias SubscriptStub = Given + + /// Convenience method - call setupMock() to extend debug information when failure occurs + public func setupMock(file: StaticString = #file, line: UInt = #line) { + self.file = file + self.line = line + } + + /// Clear mock internals. You can specify what to reset (invocations aka verify, givens or performs) or leave it empty to clear all mock internals + public func resetMock(_ scopes: MockScope...) { + let scopes: [MockScope] = scopes.isEmpty ? [.invocation, .given, .perform] : scopes + if scopes.contains(.invocation) { invocations = [] } + if scopes.contains(.given) { methodReturnValues = [] } + if scopes.contains(.perform) { methodPerformValues = [] } + } + + + + + + open func publisher() -> AnyPublisher { + addInvocation(.m_publisher) + let perform = methodPerformValue(.m_publisher) as? () -> Void + perform?() + var __value: AnyPublisher + do { + __value = try methodReturnValue(.m_publisher).casted() + } catch { + onFatalFailure("Stub return value not specified for publisher(). Use given") + Failure("Stub return value not specified for publisher(). Use given") + } + return __value + } + + open func addToDownloadQueue(blocks: [CourseBlock]) throws { + addInvocation(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + do { + _ = try methodReturnValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { + addInvocation(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) + let perform = methodPerformValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) as? (String) -> Void + perform?(`courseId`) + var __value: [DownloadData] + do { + __value = try methodReturnValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))).casted() + } catch { + onFatalFailure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + Failure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + } + return __value + } + + open func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws { + addInvocation(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) as? (String, [CourseBlock]) -> Void + perform?(`courseId`, `blocks`) + do { + _ = try methodReturnValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func resumeDownloading() throws { + addInvocation(.m_resumeDownloading) + let perform = methodPerformValue(.m_resumeDownloading) as? () -> Void + perform?() + do { + _ = try methodReturnValue(.m_resumeDownloading).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func pauseDownloading() { + addInvocation(.m_pauseDownloading) + let perform = methodPerformValue(.m_pauseDownloading) as? () -> Void + perform?() + } + + open func deleteFile(blocks: [CourseBlock]) { + addInvocation(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + } + + open func fileUrl(for blockId: String) -> URL? { + addInvocation(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) + let perform = methodPerformValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) as? (String) -> Void + perform?(`blockId`) + var __value: URL? = nil + do { + __value = try methodReturnValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))).casted() + } catch { + // do nothing + } + return __value + } + + + fileprivate enum MethodType { + case m_publisher + case m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>) + case m_getDownloadsForCourse__courseId(Parameter) + case m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter, Parameter<[CourseBlock]>) + case m_resumeDownloading + case m_pauseDownloading + case m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>) + case m_fileUrl__for_blockId(Parameter) + + static func compareParameters(lhs: MethodType, rhs: MethodType, matcher: Matcher) -> Matcher.ComparisonResult { + switch (lhs, rhs) { + case (.m_publisher, .m_publisher): return .match + + case (.m_addToDownloadQueue__blocks_blocks(let lhsBlocks), .m_addToDownloadQueue__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_getDownloadsForCourse__courseId(let lhsCourseid), .m_getDownloadsForCourse__courseId(let rhsCourseid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "_ courseId")) + return Matcher.ComparisonResult(results) + + case (.m_cancelDownloading__courseId_courseIdblocks_blocks(let lhsCourseid, let lhsBlocks), .m_cancelDownloading__courseId_courseIdblocks_blocks(let rhsCourseid, let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "courseId")) + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_resumeDownloading, .m_resumeDownloading): return .match + + case (.m_pauseDownloading, .m_pauseDownloading): return .match + + case (.m_deleteFile__blocks_blocks(let lhsBlocks), .m_deleteFile__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_fileUrl__for_blockId(let lhsBlockid), .m_fileUrl__for_blockId(let rhsBlockid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlockid, rhs: rhsBlockid, with: matcher), lhsBlockid, rhsBlockid, "for blockId")) + return Matcher.ComparisonResult(results) + default: return .none + } + } + + func intValue() -> Int { + switch self { + case .m_publisher: return 0 + case let .m_addToDownloadQueue__blocks_blocks(p0): return p0.intValue + case let .m_getDownloadsForCourse__courseId(p0): return p0.intValue + case let .m_cancelDownloading__courseId_courseIdblocks_blocks(p0, p1): return p0.intValue + p1.intValue + case .m_resumeDownloading: return 0 + case .m_pauseDownloading: return 0 + case let .m_deleteFile__blocks_blocks(p0): return p0.intValue + case let .m_fileUrl__for_blockId(p0): return p0.intValue + } + } + func assertionName() -> String { + switch self { + case .m_publisher: return ".publisher()" + case .m_addToDownloadQueue__blocks_blocks: return ".addToDownloadQueue(blocks:)" + case .m_getDownloadsForCourse__courseId: return ".getDownloadsForCourse(_:)" + case .m_cancelDownloading__courseId_courseIdblocks_blocks: return ".cancelDownloading(courseId:blocks:)" + case .m_resumeDownloading: return ".resumeDownloading()" + case .m_pauseDownloading: return ".pauseDownloading()" + case .m_deleteFile__blocks_blocks: return ".deleteFile(blocks:)" + case .m_fileUrl__for_blockId: return ".fileUrl(for:)" + } + } + } + + open class Given: StubbedMethod { + fileprivate var method: MethodType + + private init(method: MethodType, products: [StubProduct]) { + self.method = method + super.init(products) + } + + + public static func publisher(willReturn: AnyPublisher...) -> MethodStub { + return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func getDownloadsForCourse(_ courseId: Parameter, willReturn: [DownloadData]...) -> MethodStub { + return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func fileUrl(for blockId: Parameter, willReturn: URL?...) -> MethodStub { + return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func publisher(willProduce: (Stubber>) -> Void) -> MethodStub { + let willReturn: [AnyPublisher] = [] + let given: Given = { return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (AnyPublisher).self) + willProduce(stubber) + return given + } + public static func getDownloadsForCourse(_ courseId: Parameter, willProduce: (Stubber<[DownloadData]>) -> Void) -> MethodStub { + let willReturn: [[DownloadData]] = [] + let given: Given = { return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: ([DownloadData]).self) + willProduce(stubber) + return given + } + public static func fileUrl(for blockId: Parameter, willProduce: (Stubber) -> Void) -> MethodStub { + let willReturn: [URL?] = [] + let given: Given = { return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (URL?).self) + willProduce(stubber) + return given + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func resumeDownloading(willThrow: Error...) -> MethodStub { + return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) + } + public static func resumeDownloading(willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + } + + public struct Verify { + fileprivate var method: MethodType + + public static func publisher() -> Verify { return Verify(method: .m_publisher)} + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_addToDownloadQueue__blocks_blocks(`blocks`))} + public static func getDownloadsForCourse(_ courseId: Parameter) -> Verify { return Verify(method: .m_getDownloadsForCourse__courseId(`courseId`))} + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`))} + public static func resumeDownloading() -> Verify { return Verify(method: .m_resumeDownloading)} + public static func pauseDownloading() -> Verify { return Verify(method: .m_pauseDownloading)} + public static func deleteFile(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_deleteFile__blocks_blocks(`blocks`))} + public static func fileUrl(for blockId: Parameter) -> Verify { return Verify(method: .m_fileUrl__for_blockId(`blockId`))} + } + + public struct Perform { + fileprivate var method: MethodType + var performs: Any + + public static func publisher(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_publisher, performs: perform) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), performs: perform) + } + public static func getDownloadsForCourse(_ courseId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_getDownloadsForCourse__courseId(`courseId`), performs: perform) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, perform: @escaping (String, [CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), performs: perform) + } + public static func resumeDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_resumeDownloading, performs: perform) + } + public static func pauseDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_pauseDownloading, performs: perform) + } + public static func deleteFile(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_deleteFile__blocks_blocks(`blocks`), performs: perform) + } + public static func fileUrl(for blockId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_fileUrl__for_blockId(`blockId`), performs: perform) + } + } + + public func given(_ method: Given) { + methodReturnValues.append(method) + } + + public func perform(_ method: Perform) { + methodPerformValues.append(method) + methodPerformValues.sort { $0.method.intValue() < $1.method.intValue() } + } + + public func verify(_ method: Verify, count: Count = Count.moreOrEqual(to: 1), file: StaticString = #file, line: UInt = #line) { + let fullMatches = matchingCalls(method, file: file, line: line) + let success = count.matches(fullMatches) + let assertionName = method.method.assertionName() + let feedback: String = { + guard !success else { return "" } + return Utils.closestCallsMessage( + for: self.invocations.map { invocation in + matcher.set(file: file, line: line) + defer { matcher.clearFileAndLine() } + return MethodType.compareParameters(lhs: invocation, rhs: method.method, matcher: matcher) + }, + name: assertionName + ) + }() + MockyAssert(success, "Expected: \(count) invocations of `\(assertionName)`, but was: \(fullMatches).\(feedback)", file: file, line: line) + } + + private func addInvocation(_ call: MethodType) { + self.queue.sync { invocations.append(call) } + } + private func methodReturnValue(_ method: MethodType) throws -> StubProduct { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let candidates = sequencingPolicy.sorted(methodReturnValues, by: { $0.method.intValue() > $1.method.intValue() }) + let matched = candidates.first(where: { $0.isValid && MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch }) + guard let product = matched?.getProduct(policy: self.stubbingPolicy) else { throw MockError.notStubed } + return product + } + private func methodPerformValue(_ method: MethodType) -> Any? { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let matched = methodPerformValues.reversed().first { MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch } + return matched?.performs + } + private func matchingCalls(_ method: MethodType, file: StaticString?, line: UInt?) -> [MethodType] { + matcher.set(file: file ?? self.file, line: line ?? self.line) + defer { matcher.clearFileAndLine() } + return invocations.filter { MethodType.compareParameters(lhs: $0, rhs: method, matcher: matcher).isFullMatch } + } + private func matchingCalls(_ method: Verify, file: StaticString?, line: UInt?) -> Int { + return matchingCalls(method.method, file: file, line: line).count + } + private func givenGetterValue(_ method: MethodType, _ message: String) -> T { + do { + return try methodReturnValue(method).casted() + } catch { + onFatalFailure(message) + Failure(message) + } + } + private func optionalGivenGetterValue(_ method: MethodType, _ message: String) -> T? { + do { + return try methodReturnValue(method).casted() + } catch { + return nil + } + } + private func onFatalFailure(_ message: String) { + guard let file = self.file, let line = self.line else { return } // Let if fail if cannot handle gratefully + SwiftyMockyTestObserver.handleFatalError(message: message, file: file, line: line) + } +} + diff --git a/Course/CourseTests/Presentation/Container/CourseContainerViewModelTests.swift b/Course/CourseTests/Presentation/Container/CourseContainerViewModelTests.swift index bae62298c..86c12aa7a 100644 --- a/Course/CourseTests/Presentation/Container/CourseContainerViewModelTests.swift +++ b/Course/CourseTests/Presentation/Container/CourseContainerViewModelTests.swift @@ -11,6 +11,7 @@ import XCTest @testable import Course import Alamofire import SwiftUI +import Combine final class CourseContainerViewModelTests: XCTestCase { @@ -42,6 +43,7 @@ final class CourseContainerViewModelTests: XCTestCase { let block = CourseBlock( blockId: "", id: "", + courseId: "123", topicId: "", graded: true, completion: 0, @@ -54,6 +56,7 @@ final class CourseContainerViewModelTests: XCTestCase { let vertical = CourseVertical( blockId: "", id: "", + courseId: "123", displayName: "", type: .vertical, completion: 0, @@ -78,7 +81,6 @@ final class CourseContainerViewModelTests: XCTestCase { let childs = [chapter] let courseStructure = CourseStructure( - courseID: "1", id: "123", graded: true, completion: 0, @@ -140,19 +142,20 @@ final class CourseContainerViewModelTests: XCTestCase { enrollmentEnd: nil ) - let courseStructure = CourseStructure(courseID: "1", - id: "123", - graded: true, - completion: 0, - viewYouTubeUrl: "", - encodedVideo: "", - displayName: "", - topicID: nil, - childs: [], - media: DataLayer.CourseMedia(image: DataLayer.Image(raw: "", - small: "", - large: "")), - certificate: nil) + let courseStructure = CourseStructure( + id: "123", + graded: true, + completion: 0, + viewYouTubeUrl: "", + encodedVideo: "", + displayName: "", + topicID: nil, + childs: [], + media: DataLayer.CourseMedia(image: DataLayer.Image(raw: "", + small: "", + large: "")), + certificate: nil + ) Given(interactor, .getCourseBlocksOffline(courseID: .any, willReturn: courseStructure)) Given(interactor, .getCourseVideoBlocks(fullStructure: .any, @@ -319,4 +322,579 @@ final class CourseContainerViewModelTests: XCTestCase { viewModel.trackSelectedTab(selection: .handounds, courseId: "1", courseName: "name") Verify(analytics, .courseOutlineHandoutsTabClicked(courseId: .value("1"), courseName: .value("name"))) } + + func testOnDownloadViewAvailableTap() { + let interactor = CourseInteractorProtocolMock() + let authInteractor = AuthInteractorProtocolMock() + let router = CourseRouterMock() + let analytics = CourseAnalyticsMock() + let config = ConfigMock() + let connectivity = ConnectivityProtocolMock() + let downloadManager = DownloadManagerProtocolMock() + + Given(connectivity, .isInternetAvaliable(getter: true)) + + Given(downloadManager, .publisher(willReturn: Empty().eraseToAnyPublisher())) + + let viewModel = CourseContainerViewModel( + interactor: interactor, + authInteractor: authInteractor, + router: router, + analytics: analytics, + config: config, + connectivity: connectivity, + manager: downloadManager, + isActive: true, + courseStart: Date(), + courseEnd: nil, + enrollmentStart: nil, + enrollmentEnd: nil + ) + + let blockId = "chapter:block:1" + + let chapter = CourseChapter( + blockId: blockId, + id: "1", + displayName: "Chapter 1", + type: .chapter, + childs: [] + ) + + viewModel.onDownloadViewTap( + chapter: chapter, + blockId: blockId, + state: .available + ) + + XCTAssertEqual(viewModel.downloadState[blockId], .downloading) + } + + func testOnDownloadViewDownloadingTap() { + let interactor = CourseInteractorProtocolMock() + let authInteractor = AuthInteractorProtocolMock() + let router = CourseRouterMock() + let analytics = CourseAnalyticsMock() + let config = ConfigMock() + let connectivity = ConnectivityProtocolMock() + let downloadManager = DownloadManagerProtocolMock() + + Given(connectivity, .isInternetAvaliable(getter: true)) + + Given(downloadManager, .publisher(willReturn: Empty().eraseToAnyPublisher())) + + let viewModel = CourseContainerViewModel( + interactor: interactor, + authInteractor: authInteractor, + router: router, + analytics: analytics, + config: config, + connectivity: connectivity, + manager: downloadManager, + isActive: true, + courseStart: Date(), + courseEnd: nil, + enrollmentStart: nil, + enrollmentEnd: nil + ) + + let blockId = "chapter:block:1" + + let chapter = CourseChapter( + blockId: blockId, + id: "1", + displayName: "Chapter 1", + type: .chapter, + childs: [] + ) + + viewModel.onDownloadViewTap( + chapter: chapter, + blockId: blockId, + state: .downloading + ) + + XCTAssertEqual(viewModel.downloadState[blockId], .available) + } + + func testOnDownloadViewFinishedTap() { + let interactor = CourseInteractorProtocolMock() + let authInteractor = AuthInteractorProtocolMock() + let router = CourseRouterMock() + let analytics = CourseAnalyticsMock() + let config = ConfigMock() + let connectivity = ConnectivityProtocolMock() + let downloadManager = DownloadManagerProtocolMock() + + Given(connectivity, .isInternetAvaliable(getter: true)) + + Given(downloadManager, .publisher(willReturn: Empty().eraseToAnyPublisher())) + + let viewModel = CourseContainerViewModel( + interactor: interactor, + authInteractor: authInteractor, + router: router, + analytics: analytics, + config: config, + connectivity: connectivity, + manager: downloadManager, + isActive: true, + courseStart: Date(), + courseEnd: nil, + enrollmentStart: nil, + enrollmentEnd: nil + ) + + let blockId = "chapter:block:1" + + let chapter = CourseChapter( + blockId: blockId, + id: "1", + displayName: "Chapter 1", + type: .chapter, + childs: [] + ) + + viewModel.onDownloadViewTap( + chapter: chapter, + blockId: blockId, + state: .finished + ) + + XCTAssertEqual(viewModel.downloadState[blockId], .available) + } + + func testSetDownloadsStatesAvailable() { + let interactor = CourseInteractorProtocolMock() + let authInteractor = AuthInteractorProtocolMock() + let router = CourseRouterMock() + let analytics = CourseAnalyticsMock() + let config = ConfigMock() + let connectivity = ConnectivityProtocolMock() + let downloadManager = DownloadManagerProtocolMock() + + let block = CourseBlock( + blockId: "block:1", + id: "1", + courseId: "123", + topicId: "", + graded: false, + completion: 0, + type: .video, + displayName: "", + studentUrl: "", + videoUrl: "https://example.com/file.mp4", + youTubeUrl: nil + ) + let vertical = CourseVertical( + blockId: "block:vertical1", + id: "vertical1", + courseId: "123", + displayName: "", + type: .vertical, + completion: 0, + childs: [block] + ) + let sequential = CourseSequential( + blockId: "block:sequential1", + id: "sequential1", + displayName: "", + type: .chapter, + completion: 0, + childs: [vertical] + ) + let chapter = CourseChapter( + blockId: "", + id: "", + displayName: "", + type: .chapter, + childs: [sequential] + ) + + let childs = [chapter] + + let courseStructure = CourseStructure( + id: "123", + graded: true, + completion: 0, + viewYouTubeUrl: "", + encodedVideo: "", + displayName: "", + topicID: nil, + childs: childs, + media: DataLayer.CourseMedia(image: DataLayer.Image( + raw: "", + small: "", + large: "" + )), + certificate: nil + ) + + Given(connectivity, .isInternetAvaliable(getter: true)) + + Given(downloadManager, .publisher(willReturn: Just(1).eraseToAnyPublisher())) + Given(downloadManager, .getDownloadsForCourse(.any, willReturn: [])) + + let viewModel = CourseContainerViewModel( + interactor: interactor, + authInteractor: authInteractor, + router: router, + analytics: analytics, + config: config, + connectivity: connectivity, + manager: downloadManager, + isActive: true, + courseStart: Date(), + courseEnd: nil, + enrollmentStart: nil, + enrollmentEnd: nil + ) + viewModel.courseStructure = courseStructure + + let exp = expectation(description: "DispatchQueue.main.async Starting") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { + exp.fulfill() + } + + wait(for: [exp], timeout: 1) + + XCTAssertEqual(viewModel.downloadState[sequential.id], .available) + } + + func testSetDownloadsStatesDownloading() { + let interactor = CourseInteractorProtocolMock() + let authInteractor = AuthInteractorProtocolMock() + let router = CourseRouterMock() + let analytics = CourseAnalyticsMock() + let config = ConfigMock() + let connectivity = ConnectivityProtocolMock() + let downloadManager = DownloadManagerProtocolMock() + + let block = CourseBlock( + blockId: "block:1", + id: "1", + courseId: "123", + topicId: "", + graded: false, + completion: 0, + type: .video, + displayName: "", + studentUrl: "", + videoUrl: "https://example.com/file.mp4", + youTubeUrl: nil + ) + let vertical = CourseVertical( + blockId: "block:vertical1", + id: "vertical1", + courseId: "123", + displayName: "", + type: .vertical, + completion: 0, + childs: [block] + ) + let sequential = CourseSequential( + blockId: "block:sequential1", + id: "sequential1", + displayName: "", + type: .chapter, + completion: 0, + childs: [vertical] + ) + let chapter = CourseChapter( + blockId: "", + id: "", + displayName: "", + type: .chapter, + childs: [sequential] + ) + + let childs = [chapter] + + let courseStructure = CourseStructure( + id: "123", + graded: true, + completion: 0, + viewYouTubeUrl: "", + encodedVideo: "", + displayName: "", + topicID: nil, + childs: childs, + media: DataLayer.CourseMedia(image: DataLayer.Image( + raw: "", + small: "", + large: "" + )), + certificate: nil + ) + + let downloadData = DownloadData( + id: "1", + courseId: "course123", + url: "https://example.com/file.mp4", + fileName: "file.mp4", + progress: 0, + resumeData: nil, + state: .waiting, + type: .video + ) + + Given(connectivity, .isInternetAvaliable(getter: true)) + + Given(downloadManager, .publisher(willReturn: Just(1).eraseToAnyPublisher())) + Given(downloadManager, .getDownloadsForCourse(.any, willReturn: [downloadData])) + + let viewModel = CourseContainerViewModel( + interactor: interactor, + authInteractor: authInteractor, + router: router, + analytics: analytics, + config: config, + connectivity: connectivity, + manager: downloadManager, + isActive: true, + courseStart: Date(), + courseEnd: nil, + enrollmentStart: nil, + enrollmentEnd: nil + ) + viewModel.courseStructure = courseStructure + + let exp = expectation(description: "DispatchQueue.main.async Starting") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { + exp.fulfill() + } + + wait(for: [exp], timeout: 1) + + XCTAssertEqual(viewModel.downloadState[sequential.id], .downloading) + } + + func testSetDownloadsStatesFinished() { + let interactor = CourseInteractorProtocolMock() + let authInteractor = AuthInteractorProtocolMock() + let router = CourseRouterMock() + let analytics = CourseAnalyticsMock() + let config = ConfigMock() + let connectivity = ConnectivityProtocolMock() + let downloadManager = DownloadManagerProtocolMock() + + let block = CourseBlock( + blockId: "block:1", + id: "1", + courseId: "123", + topicId: "", + graded: false, + completion: 0, + type: .video, + displayName: "", + studentUrl: "", + videoUrl: "https://example.com/file.mp4", + youTubeUrl: nil + ) + let vertical = CourseVertical( + blockId: "block:vertical1", + id: "vertical1", + courseId: "123", + displayName: "", + type: .vertical, + completion: 0, + childs: [block] + ) + let sequential = CourseSequential( + blockId: "block:sequential1", + id: "sequential1", + displayName: "", + type: .chapter, + completion: 0, + childs: [vertical] + ) + let chapter = CourseChapter( + blockId: "", + id: "", + displayName: "", + type: .chapter, + childs: [sequential] + ) + + let childs = [chapter] + + let courseStructure = CourseStructure( + id: "123", + graded: true, + completion: 0, + viewYouTubeUrl: "", + encodedVideo: "", + displayName: "", + topicID: nil, + childs: childs, + media: DataLayer.CourseMedia(image: DataLayer.Image( + raw: "", + small: "", + large: "" + )), + certificate: nil + ) + + let downloadData = DownloadData( + id: "1", + courseId: "course123", + url: "https://example.com/file.mp4", + fileName: "file.mp4", + progress: 0, + resumeData: nil, + state: .finished, + type: .video + ) + + Given(connectivity, .isInternetAvaliable(getter: true)) + + Given(downloadManager, .publisher(willReturn: Just(1).eraseToAnyPublisher())) + Given(downloadManager, .getDownloadsForCourse(.any, willReturn: [downloadData])) + + let viewModel = CourseContainerViewModel( + interactor: interactor, + authInteractor: authInteractor, + router: router, + analytics: analytics, + config: config, + connectivity: connectivity, + manager: downloadManager, + isActive: true, + courseStart: Date(), + courseEnd: nil, + enrollmentStart: nil, + enrollmentEnd: nil + ) + viewModel.courseStructure = courseStructure + + let exp = expectation(description: "DispatchQueue.main.async Starting") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { + exp.fulfill() + } + + wait(for: [exp], timeout: 1) + + XCTAssertEqual(viewModel.downloadState[sequential.id], .finished) + } + + func testSetDownloadsStatesPartiallyFinished() { + let interactor = CourseInteractorProtocolMock() + let authInteractor = AuthInteractorProtocolMock() + let router = CourseRouterMock() + let analytics = CourseAnalyticsMock() + let config = ConfigMock() + let connectivity = ConnectivityProtocolMock() + let downloadManager = DownloadManagerProtocolMock() + + let block1 = CourseBlock( + blockId: "block:1", + id: "1", + courseId: "123", + topicId: "", + graded: false, + completion: 0, + type: .video, + displayName: "", + studentUrl: "", + videoUrl: "https://example.com/file.mp4", + youTubeUrl: nil + ) + let block2 = CourseBlock( + blockId: "block:2", + id: "2", + courseId: "123", + topicId: "", + graded: false, + completion: 0, + type: .video, + displayName: "", + studentUrl: "", + videoUrl: "https://example.com/file2.mp4", + youTubeUrl: nil + ) + let vertical = CourseVertical( + blockId: "block:vertical1", + id: "vertical1", + courseId: "123", + displayName: "", + type: .vertical, + completion: 0, + childs: [block1, block2] + ) + let sequential = CourseSequential( + blockId: "block:sequential1", + id: "sequential1", + displayName: "", + type: .chapter, + completion: 0, + childs: [vertical] + ) + let chapter = CourseChapter( + blockId: "", + id: "", + displayName: "", + type: .chapter, + childs: [sequential] + ) + + let childs = [chapter] + + let courseStructure = CourseStructure( + id: "123", + graded: true, + completion: 0, + viewYouTubeUrl: "", + encodedVideo: "", + displayName: "", + topicID: nil, + childs: childs, + media: DataLayer.CourseMedia(image: DataLayer.Image( + raw: "", + small: "", + large: "" + )), + certificate: nil + ) + + let downloadData = DownloadData( + id: "1", + courseId: "course123", + url: "https://example.com/file.mp4", + fileName: "file.mp4", + progress: 0, + resumeData: nil, + state: .finished, + type: .video + ) + + Given(connectivity, .isInternetAvaliable(getter: true)) + + Given(downloadManager, .publisher(willReturn: Just(1).eraseToAnyPublisher())) + Given(downloadManager, .getDownloadsForCourse(.any, willReturn: [downloadData])) + + let viewModel = CourseContainerViewModel( + interactor: interactor, + authInteractor: authInteractor, + router: router, + analytics: analytics, + config: config, + connectivity: connectivity, + manager: downloadManager, + isActive: true, + courseStart: Date(), + courseEnd: nil, + enrollmentStart: nil, + enrollmentEnd: nil + ) + viewModel.courseStructure = courseStructure + + let exp = expectation(description: "DispatchQueue.main.async Starting") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { + exp.fulfill() + } + + wait(for: [exp], timeout: 1) + + XCTAssertEqual(viewModel.downloadState[sequential.id], .available) + } } diff --git a/Course/CourseTests/Presentation/Unit/CourseUnitViewModelTests.swift b/Course/CourseTests/Presentation/Unit/CourseUnitViewModelTests.swift index 7c5be54e4..25d731196 100644 --- a/Course/CourseTests/Presentation/Unit/CourseUnitViewModelTests.swift +++ b/Course/CourseTests/Presentation/Unit/CourseUnitViewModelTests.swift @@ -17,6 +17,7 @@ final class CourseUnitViewModelTests: XCTestCase { static let blocks = [ CourseBlock(blockId: "1", id: "1", + courseId: "123", topicId: "1", graded: false, completion: 0, @@ -27,6 +28,7 @@ final class CourseUnitViewModelTests: XCTestCase { youTubeUrl: nil), CourseBlock(blockId: "2", id: "2", + courseId: "123", topicId: "2", graded: false, completion: 0, @@ -37,6 +39,7 @@ final class CourseUnitViewModelTests: XCTestCase { youTubeUrl: nil), CourseBlock(blockId: "3", id: "3", + courseId: "123", topicId: "3", graded: false, completion: 0, @@ -47,6 +50,7 @@ final class CourseUnitViewModelTests: XCTestCase { youTubeUrl: nil), CourseBlock(blockId: "4", id: "4", + courseId: "123", topicId: "4", graded: false, completion: 0, @@ -70,7 +74,9 @@ final class CourseUnitViewModelTests: XCTestCase { type: .sequential, completion: 0, childs: [ - CourseVertical(blockId: "6", id: "6", + CourseVertical(blockId: "6", + id: "6", + courseId: "123", displayName: "6", type: .vertical, completion: 0, @@ -90,7 +96,9 @@ final class CourseUnitViewModelTests: XCTestCase { type: .sequential, completion: 0, childs: [ - CourseVertical(blockId: "4", id: "4", + CourseVertical(blockId: "4", + id: "4", + courseId: "123", displayName: "4", type: .vertical, completion: 0, @@ -106,19 +114,20 @@ final class CourseUnitViewModelTests: XCTestCase { let connectivity = ConnectivityProtocolMock() let analytics = CourseAnalyticsMock() - let viewModel = CourseUnitViewModel(lessonID: "123", - courseID: "456", - id: "789", - courseName: "name", - chapters: chapters, - chapterIndex: 0, - sequentialIndex: 0, - verticalIndex: 0, - interactor: interactor, - router: router, - analytics: analytics, - connectivity: connectivity, - manager: DownloadManagerMock()) + let viewModel = CourseUnitViewModel( + lessonID: "123", + courseID: "456", + courseName: "name", + chapters: chapters, + chapterIndex: 0, + sequentialIndex: 0, + verticalIndex: 0, + interactor: interactor, + router: router, + analytics: analytics, + connectivity: connectivity, + manager: DownloadManagerMock() + ) Given(interactor, .blockCompletionRequest(courseID: .any, blockID: .any, willProduce: {_ in})) @@ -133,19 +142,20 @@ final class CourseUnitViewModelTests: XCTestCase { let connectivity = ConnectivityProtocolMock() let analytics = CourseAnalyticsMock() - let viewModel = CourseUnitViewModel(lessonID: "123", - courseID: "456", - id: "789", - courseName: "name", - chapters: chapters, - chapterIndex: 0, - sequentialIndex: 0, - verticalIndex: 0, - interactor: interactor, - router: router, - analytics: analytics, - connectivity: connectivity, - manager: DownloadManagerMock()) + let viewModel = CourseUnitViewModel( + lessonID: "123", + courseID: "456", + courseName: "name", + chapters: chapters, + chapterIndex: 0, + sequentialIndex: 0, + verticalIndex: 0, + interactor: interactor, + router: router, + analytics: analytics, + connectivity: connectivity, + manager: DownloadManagerMock() + ) Given(interactor, .blockCompletionRequest(courseID: .any, blockID: .any, @@ -165,19 +175,20 @@ final class CourseUnitViewModelTests: XCTestCase { let connectivity = ConnectivityProtocolMock() let analytics = CourseAnalyticsMock() - let viewModel = CourseUnitViewModel(lessonID: "123", - courseID: "456", - id: "789", - courseName: "name", - chapters: chapters, - chapterIndex: 0, - sequentialIndex: 0, - verticalIndex: 0, - interactor: interactor, - router: router, - analytics: analytics, - connectivity: connectivity, - manager: DownloadManagerMock()) + let viewModel = CourseUnitViewModel( + lessonID: "123", + courseID: "456", + courseName: "name", + chapters: chapters, + chapterIndex: 0, + sequentialIndex: 0, + verticalIndex: 0, + interactor: interactor, + router: router, + analytics: analytics, + connectivity: connectivity, + manager: DownloadManagerMock() + ) let noInternetError = AFError.sessionInvalidated(error: URLError(.notConnectedToInternet)) @@ -199,19 +210,20 @@ final class CourseUnitViewModelTests: XCTestCase { let connectivity = ConnectivityProtocolMock() let analytics = CourseAnalyticsMock() - let viewModel = CourseUnitViewModel(lessonID: "123", - courseID: "456", - id: "789", - courseName: "name", - chapters: chapters, - chapterIndex: 0, - sequentialIndex: 0, - verticalIndex: 0, - interactor: interactor, - router: router, - analytics: analytics, - connectivity: connectivity, - manager: DownloadManagerMock()) + let viewModel = CourseUnitViewModel( + lessonID: "123", + courseID: "456", + courseName: "name", + chapters: chapters, + chapterIndex: 0, + sequentialIndex: 0, + verticalIndex: 0, + interactor: interactor, + router: router, + analytics: analytics, + connectivity: connectivity, + manager: DownloadManagerMock() + ) Given(interactor, .blockCompletionRequest(courseID: .any, blockID: .any, @@ -232,19 +244,20 @@ final class CourseUnitViewModelTests: XCTestCase { let connectivity = ConnectivityProtocolMock() let analytics = CourseAnalyticsMock() - let viewModel = CourseUnitViewModel(lessonID: "123", - courseID: "456", - id: "789", - courseName: "name", - chapters: chapters, - chapterIndex: 0, - sequentialIndex: 0, - verticalIndex: 0, - interactor: interactor, - router: router, - analytics: analytics, - connectivity: connectivity, - manager: DownloadManagerMock()) + let viewModel = CourseUnitViewModel( + lessonID: "123", + courseID: "456", + courseName: "name", + chapters: chapters, + chapterIndex: 0, + sequentialIndex: 0, + verticalIndex: 0, + interactor: interactor, + router: router, + analytics: analytics, + connectivity: connectivity, + manager: DownloadManagerMock() + ) viewModel.loadIndex() diff --git a/Dashboard/Dashboard/Presentation/DashboardView.swift b/Dashboard/Dashboard/Presentation/DashboardView.swift index 7ddc40b05..274a77ecb 100644 --- a/Dashboard/Dashboard/Presentation/DashboardView.swift +++ b/Dashboard/Dashboard/Presentation/DashboardView.swift @@ -72,7 +72,10 @@ public struct DashboardView: View { } } .onTapGesture { - viewModel.dashboardCourseClicked(courseID: course.courseID, courseName: course.name) + viewModel.trackDashboardCourseClicked( + courseID: course.courseID, + courseName: course.name + ) router.showCourseScreens( courseID: course.courseID, isActive: course.isActive, diff --git a/Dashboard/Dashboard/Presentation/DashboardViewModel.swift b/Dashboard/Dashboard/Presentation/DashboardViewModel.swift index 18de4b976..16ddff151 100644 --- a/Dashboard/Dashboard/Presentation/DashboardViewModel.swift +++ b/Dashboard/Dashboard/Presentation/DashboardViewModel.swift @@ -95,7 +95,7 @@ public class DashboardViewModel: ObservableObject { } } - func dashboardCourseClicked(courseID: String, courseName: String) { + func trackDashboardCourseClicked(courseID: String, courseName: String) { analytics.dashboardCourseClicked(courseID: courseID, courseName: courseName) } } diff --git a/Dashboard/DashboardTests/DashboardMock.generated.swift b/Dashboard/DashboardTests/DashboardMock.generated.swift index 551f38c47..b703eace7 100644 --- a/Dashboard/DashboardTests/DashboardMock.generated.swift +++ b/Dashboard/DashboardTests/DashboardMock.generated.swift @@ -1413,3 +1413,400 @@ open class DashboardInteractorProtocolMock: DashboardInteractorProtocol, Mock { } } +// MARK: - DownloadManagerProtocol + +open class DownloadManagerProtocolMock: DownloadManagerProtocol, Mock { + public init(sequencing sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst, stubbing stubbingPolicy: StubbingPolicy = .wrap, file: StaticString = #file, line: UInt = #line) { + SwiftyMockyTestObserver.setup() + self.sequencingPolicy = sequencingPolicy + self.stubbingPolicy = stubbingPolicy + self.file = file + self.line = line + } + + var matcher: Matcher = Matcher.default + var stubbingPolicy: StubbingPolicy = .wrap + var sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst + + private var queue = DispatchQueue(label: "com.swiftymocky.invocations", qos: .userInteractive) + private var invocations: [MethodType] = [] + private var methodReturnValues: [Given] = [] + private var methodPerformValues: [Perform] = [] + private var file: StaticString? + private var line: UInt? + + public typealias PropertyStub = Given + public typealias MethodStub = Given + public typealias SubscriptStub = Given + + /// Convenience method - call setupMock() to extend debug information when failure occurs + public func setupMock(file: StaticString = #file, line: UInt = #line) { + self.file = file + self.line = line + } + + /// Clear mock internals. You can specify what to reset (invocations aka verify, givens or performs) or leave it empty to clear all mock internals + public func resetMock(_ scopes: MockScope...) { + let scopes: [MockScope] = scopes.isEmpty ? [.invocation, .given, .perform] : scopes + if scopes.contains(.invocation) { invocations = [] } + if scopes.contains(.given) { methodReturnValues = [] } + if scopes.contains(.perform) { methodPerformValues = [] } + } + + + + + + open func publisher() -> AnyPublisher { + addInvocation(.m_publisher) + let perform = methodPerformValue(.m_publisher) as? () -> Void + perform?() + var __value: AnyPublisher + do { + __value = try methodReturnValue(.m_publisher).casted() + } catch { + onFatalFailure("Stub return value not specified for publisher(). Use given") + Failure("Stub return value not specified for publisher(). Use given") + } + return __value + } + + open func addToDownloadQueue(blocks: [CourseBlock]) throws { + addInvocation(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + do { + _ = try methodReturnValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { + addInvocation(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) + let perform = methodPerformValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) as? (String) -> Void + perform?(`courseId`) + var __value: [DownloadData] + do { + __value = try methodReturnValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))).casted() + } catch { + onFatalFailure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + Failure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + } + return __value + } + + open func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws { + addInvocation(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) as? (String, [CourseBlock]) -> Void + perform?(`courseId`, `blocks`) + do { + _ = try methodReturnValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func resumeDownloading() throws { + addInvocation(.m_resumeDownloading) + let perform = methodPerformValue(.m_resumeDownloading) as? () -> Void + perform?() + do { + _ = try methodReturnValue(.m_resumeDownloading).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func pauseDownloading() { + addInvocation(.m_pauseDownloading) + let perform = methodPerformValue(.m_pauseDownloading) as? () -> Void + perform?() + } + + open func deleteFile(blocks: [CourseBlock]) { + addInvocation(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + } + + open func fileUrl(for blockId: String) -> URL? { + addInvocation(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) + let perform = methodPerformValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) as? (String) -> Void + perform?(`blockId`) + var __value: URL? = nil + do { + __value = try methodReturnValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))).casted() + } catch { + // do nothing + } + return __value + } + + + fileprivate enum MethodType { + case m_publisher + case m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>) + case m_getDownloadsForCourse__courseId(Parameter) + case m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter, Parameter<[CourseBlock]>) + case m_resumeDownloading + case m_pauseDownloading + case m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>) + case m_fileUrl__for_blockId(Parameter) + + static func compareParameters(lhs: MethodType, rhs: MethodType, matcher: Matcher) -> Matcher.ComparisonResult { + switch (lhs, rhs) { + case (.m_publisher, .m_publisher): return .match + + case (.m_addToDownloadQueue__blocks_blocks(let lhsBlocks), .m_addToDownloadQueue__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_getDownloadsForCourse__courseId(let lhsCourseid), .m_getDownloadsForCourse__courseId(let rhsCourseid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "_ courseId")) + return Matcher.ComparisonResult(results) + + case (.m_cancelDownloading__courseId_courseIdblocks_blocks(let lhsCourseid, let lhsBlocks), .m_cancelDownloading__courseId_courseIdblocks_blocks(let rhsCourseid, let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "courseId")) + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_resumeDownloading, .m_resumeDownloading): return .match + + case (.m_pauseDownloading, .m_pauseDownloading): return .match + + case (.m_deleteFile__blocks_blocks(let lhsBlocks), .m_deleteFile__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_fileUrl__for_blockId(let lhsBlockid), .m_fileUrl__for_blockId(let rhsBlockid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlockid, rhs: rhsBlockid, with: matcher), lhsBlockid, rhsBlockid, "for blockId")) + return Matcher.ComparisonResult(results) + default: return .none + } + } + + func intValue() -> Int { + switch self { + case .m_publisher: return 0 + case let .m_addToDownloadQueue__blocks_blocks(p0): return p0.intValue + case let .m_getDownloadsForCourse__courseId(p0): return p0.intValue + case let .m_cancelDownloading__courseId_courseIdblocks_blocks(p0, p1): return p0.intValue + p1.intValue + case .m_resumeDownloading: return 0 + case .m_pauseDownloading: return 0 + case let .m_deleteFile__blocks_blocks(p0): return p0.intValue + case let .m_fileUrl__for_blockId(p0): return p0.intValue + } + } + func assertionName() -> String { + switch self { + case .m_publisher: return ".publisher()" + case .m_addToDownloadQueue__blocks_blocks: return ".addToDownloadQueue(blocks:)" + case .m_getDownloadsForCourse__courseId: return ".getDownloadsForCourse(_:)" + case .m_cancelDownloading__courseId_courseIdblocks_blocks: return ".cancelDownloading(courseId:blocks:)" + case .m_resumeDownloading: return ".resumeDownloading()" + case .m_pauseDownloading: return ".pauseDownloading()" + case .m_deleteFile__blocks_blocks: return ".deleteFile(blocks:)" + case .m_fileUrl__for_blockId: return ".fileUrl(for:)" + } + } + } + + open class Given: StubbedMethod { + fileprivate var method: MethodType + + private init(method: MethodType, products: [StubProduct]) { + self.method = method + super.init(products) + } + + + public static func publisher(willReturn: AnyPublisher...) -> MethodStub { + return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func getDownloadsForCourse(_ courseId: Parameter, willReturn: [DownloadData]...) -> MethodStub { + return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func fileUrl(for blockId: Parameter, willReturn: URL?...) -> MethodStub { + return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func publisher(willProduce: (Stubber>) -> Void) -> MethodStub { + let willReturn: [AnyPublisher] = [] + let given: Given = { return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (AnyPublisher).self) + willProduce(stubber) + return given + } + public static func getDownloadsForCourse(_ courseId: Parameter, willProduce: (Stubber<[DownloadData]>) -> Void) -> MethodStub { + let willReturn: [[DownloadData]] = [] + let given: Given = { return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: ([DownloadData]).self) + willProduce(stubber) + return given + } + public static func fileUrl(for blockId: Parameter, willProduce: (Stubber) -> Void) -> MethodStub { + let willReturn: [URL?] = [] + let given: Given = { return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (URL?).self) + willProduce(stubber) + return given + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func resumeDownloading(willThrow: Error...) -> MethodStub { + return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) + } + public static func resumeDownloading(willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + } + + public struct Verify { + fileprivate var method: MethodType + + public static func publisher() -> Verify { return Verify(method: .m_publisher)} + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_addToDownloadQueue__blocks_blocks(`blocks`))} + public static func getDownloadsForCourse(_ courseId: Parameter) -> Verify { return Verify(method: .m_getDownloadsForCourse__courseId(`courseId`))} + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`))} + public static func resumeDownloading() -> Verify { return Verify(method: .m_resumeDownloading)} + public static func pauseDownloading() -> Verify { return Verify(method: .m_pauseDownloading)} + public static func deleteFile(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_deleteFile__blocks_blocks(`blocks`))} + public static func fileUrl(for blockId: Parameter) -> Verify { return Verify(method: .m_fileUrl__for_blockId(`blockId`))} + } + + public struct Perform { + fileprivate var method: MethodType + var performs: Any + + public static func publisher(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_publisher, performs: perform) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), performs: perform) + } + public static func getDownloadsForCourse(_ courseId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_getDownloadsForCourse__courseId(`courseId`), performs: perform) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, perform: @escaping (String, [CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), performs: perform) + } + public static func resumeDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_resumeDownloading, performs: perform) + } + public static func pauseDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_pauseDownloading, performs: perform) + } + public static func deleteFile(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_deleteFile__blocks_blocks(`blocks`), performs: perform) + } + public static func fileUrl(for blockId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_fileUrl__for_blockId(`blockId`), performs: perform) + } + } + + public func given(_ method: Given) { + methodReturnValues.append(method) + } + + public func perform(_ method: Perform) { + methodPerformValues.append(method) + methodPerformValues.sort { $0.method.intValue() < $1.method.intValue() } + } + + public func verify(_ method: Verify, count: Count = Count.moreOrEqual(to: 1), file: StaticString = #file, line: UInt = #line) { + let fullMatches = matchingCalls(method, file: file, line: line) + let success = count.matches(fullMatches) + let assertionName = method.method.assertionName() + let feedback: String = { + guard !success else { return "" } + return Utils.closestCallsMessage( + for: self.invocations.map { invocation in + matcher.set(file: file, line: line) + defer { matcher.clearFileAndLine() } + return MethodType.compareParameters(lhs: invocation, rhs: method.method, matcher: matcher) + }, + name: assertionName + ) + }() + MockyAssert(success, "Expected: \(count) invocations of `\(assertionName)`, but was: \(fullMatches).\(feedback)", file: file, line: line) + } + + private func addInvocation(_ call: MethodType) { + self.queue.sync { invocations.append(call) } + } + private func methodReturnValue(_ method: MethodType) throws -> StubProduct { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let candidates = sequencingPolicy.sorted(methodReturnValues, by: { $0.method.intValue() > $1.method.intValue() }) + let matched = candidates.first(where: { $0.isValid && MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch }) + guard let product = matched?.getProduct(policy: self.stubbingPolicy) else { throw MockError.notStubed } + return product + } + private func methodPerformValue(_ method: MethodType) -> Any? { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let matched = methodPerformValues.reversed().first { MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch } + return matched?.performs + } + private func matchingCalls(_ method: MethodType, file: StaticString?, line: UInt?) -> [MethodType] { + matcher.set(file: file ?? self.file, line: line ?? self.line) + defer { matcher.clearFileAndLine() } + return invocations.filter { MethodType.compareParameters(lhs: $0, rhs: method, matcher: matcher).isFullMatch } + } + private func matchingCalls(_ method: Verify, file: StaticString?, line: UInt?) -> Int { + return matchingCalls(method.method, file: file, line: line).count + } + private func givenGetterValue(_ method: MethodType, _ message: String) -> T { + do { + return try methodReturnValue(method).casted() + } catch { + onFatalFailure(message) + Failure(message) + } + } + private func optionalGivenGetterValue(_ method: MethodType, _ message: String) -> T? { + do { + return try methodReturnValue(method).casted() + } catch { + return nil + } + } + private func onFatalFailure(_ message: String) { + guard let file = self.file, let line = self.line else { return } // Let if fail if cannot handle gratefully + SwiftyMockyTestObserver.handleFatalError(message: message, file: file, line: line) + } +} + diff --git a/Discovery/DiscoveryTests/DiscoveryMock.generated.swift b/Discovery/DiscoveryTests/DiscoveryMock.generated.swift index c0c6c1793..034c7c761 100644 --- a/Discovery/DiscoveryTests/DiscoveryMock.generated.swift +++ b/Discovery/DiscoveryTests/DiscoveryMock.generated.swift @@ -1490,3 +1490,400 @@ open class DiscoveryInteractorProtocolMock: DiscoveryInteractorProtocol, Mock { } } +// MARK: - DownloadManagerProtocol + +open class DownloadManagerProtocolMock: DownloadManagerProtocol, Mock { + public init(sequencing sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst, stubbing stubbingPolicy: StubbingPolicy = .wrap, file: StaticString = #file, line: UInt = #line) { + SwiftyMockyTestObserver.setup() + self.sequencingPolicy = sequencingPolicy + self.stubbingPolicy = stubbingPolicy + self.file = file + self.line = line + } + + var matcher: Matcher = Matcher.default + var stubbingPolicy: StubbingPolicy = .wrap + var sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst + + private var queue = DispatchQueue(label: "com.swiftymocky.invocations", qos: .userInteractive) + private var invocations: [MethodType] = [] + private var methodReturnValues: [Given] = [] + private var methodPerformValues: [Perform] = [] + private var file: StaticString? + private var line: UInt? + + public typealias PropertyStub = Given + public typealias MethodStub = Given + public typealias SubscriptStub = Given + + /// Convenience method - call setupMock() to extend debug information when failure occurs + public func setupMock(file: StaticString = #file, line: UInt = #line) { + self.file = file + self.line = line + } + + /// Clear mock internals. You can specify what to reset (invocations aka verify, givens or performs) or leave it empty to clear all mock internals + public func resetMock(_ scopes: MockScope...) { + let scopes: [MockScope] = scopes.isEmpty ? [.invocation, .given, .perform] : scopes + if scopes.contains(.invocation) { invocations = [] } + if scopes.contains(.given) { methodReturnValues = [] } + if scopes.contains(.perform) { methodPerformValues = [] } + } + + + + + + open func publisher() -> AnyPublisher { + addInvocation(.m_publisher) + let perform = methodPerformValue(.m_publisher) as? () -> Void + perform?() + var __value: AnyPublisher + do { + __value = try methodReturnValue(.m_publisher).casted() + } catch { + onFatalFailure("Stub return value not specified for publisher(). Use given") + Failure("Stub return value not specified for publisher(). Use given") + } + return __value + } + + open func addToDownloadQueue(blocks: [CourseBlock]) throws { + addInvocation(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + do { + _ = try methodReturnValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { + addInvocation(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) + let perform = methodPerformValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) as? (String) -> Void + perform?(`courseId`) + var __value: [DownloadData] + do { + __value = try methodReturnValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))).casted() + } catch { + onFatalFailure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + Failure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + } + return __value + } + + open func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws { + addInvocation(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) as? (String, [CourseBlock]) -> Void + perform?(`courseId`, `blocks`) + do { + _ = try methodReturnValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func resumeDownloading() throws { + addInvocation(.m_resumeDownloading) + let perform = methodPerformValue(.m_resumeDownloading) as? () -> Void + perform?() + do { + _ = try methodReturnValue(.m_resumeDownloading).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func pauseDownloading() { + addInvocation(.m_pauseDownloading) + let perform = methodPerformValue(.m_pauseDownloading) as? () -> Void + perform?() + } + + open func deleteFile(blocks: [CourseBlock]) { + addInvocation(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + } + + open func fileUrl(for blockId: String) -> URL? { + addInvocation(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) + let perform = methodPerformValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) as? (String) -> Void + perform?(`blockId`) + var __value: URL? = nil + do { + __value = try methodReturnValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))).casted() + } catch { + // do nothing + } + return __value + } + + + fileprivate enum MethodType { + case m_publisher + case m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>) + case m_getDownloadsForCourse__courseId(Parameter) + case m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter, Parameter<[CourseBlock]>) + case m_resumeDownloading + case m_pauseDownloading + case m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>) + case m_fileUrl__for_blockId(Parameter) + + static func compareParameters(lhs: MethodType, rhs: MethodType, matcher: Matcher) -> Matcher.ComparisonResult { + switch (lhs, rhs) { + case (.m_publisher, .m_publisher): return .match + + case (.m_addToDownloadQueue__blocks_blocks(let lhsBlocks), .m_addToDownloadQueue__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_getDownloadsForCourse__courseId(let lhsCourseid), .m_getDownloadsForCourse__courseId(let rhsCourseid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "_ courseId")) + return Matcher.ComparisonResult(results) + + case (.m_cancelDownloading__courseId_courseIdblocks_blocks(let lhsCourseid, let lhsBlocks), .m_cancelDownloading__courseId_courseIdblocks_blocks(let rhsCourseid, let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "courseId")) + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_resumeDownloading, .m_resumeDownloading): return .match + + case (.m_pauseDownloading, .m_pauseDownloading): return .match + + case (.m_deleteFile__blocks_blocks(let lhsBlocks), .m_deleteFile__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_fileUrl__for_blockId(let lhsBlockid), .m_fileUrl__for_blockId(let rhsBlockid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlockid, rhs: rhsBlockid, with: matcher), lhsBlockid, rhsBlockid, "for blockId")) + return Matcher.ComparisonResult(results) + default: return .none + } + } + + func intValue() -> Int { + switch self { + case .m_publisher: return 0 + case let .m_addToDownloadQueue__blocks_blocks(p0): return p0.intValue + case let .m_getDownloadsForCourse__courseId(p0): return p0.intValue + case let .m_cancelDownloading__courseId_courseIdblocks_blocks(p0, p1): return p0.intValue + p1.intValue + case .m_resumeDownloading: return 0 + case .m_pauseDownloading: return 0 + case let .m_deleteFile__blocks_blocks(p0): return p0.intValue + case let .m_fileUrl__for_blockId(p0): return p0.intValue + } + } + func assertionName() -> String { + switch self { + case .m_publisher: return ".publisher()" + case .m_addToDownloadQueue__blocks_blocks: return ".addToDownloadQueue(blocks:)" + case .m_getDownloadsForCourse__courseId: return ".getDownloadsForCourse(_:)" + case .m_cancelDownloading__courseId_courseIdblocks_blocks: return ".cancelDownloading(courseId:blocks:)" + case .m_resumeDownloading: return ".resumeDownloading()" + case .m_pauseDownloading: return ".pauseDownloading()" + case .m_deleteFile__blocks_blocks: return ".deleteFile(blocks:)" + case .m_fileUrl__for_blockId: return ".fileUrl(for:)" + } + } + } + + open class Given: StubbedMethod { + fileprivate var method: MethodType + + private init(method: MethodType, products: [StubProduct]) { + self.method = method + super.init(products) + } + + + public static func publisher(willReturn: AnyPublisher...) -> MethodStub { + return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func getDownloadsForCourse(_ courseId: Parameter, willReturn: [DownloadData]...) -> MethodStub { + return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func fileUrl(for blockId: Parameter, willReturn: URL?...) -> MethodStub { + return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func publisher(willProduce: (Stubber>) -> Void) -> MethodStub { + let willReturn: [AnyPublisher] = [] + let given: Given = { return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (AnyPublisher).self) + willProduce(stubber) + return given + } + public static func getDownloadsForCourse(_ courseId: Parameter, willProduce: (Stubber<[DownloadData]>) -> Void) -> MethodStub { + let willReturn: [[DownloadData]] = [] + let given: Given = { return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: ([DownloadData]).self) + willProduce(stubber) + return given + } + public static func fileUrl(for blockId: Parameter, willProduce: (Stubber) -> Void) -> MethodStub { + let willReturn: [URL?] = [] + let given: Given = { return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (URL?).self) + willProduce(stubber) + return given + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func resumeDownloading(willThrow: Error...) -> MethodStub { + return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) + } + public static func resumeDownloading(willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + } + + public struct Verify { + fileprivate var method: MethodType + + public static func publisher() -> Verify { return Verify(method: .m_publisher)} + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_addToDownloadQueue__blocks_blocks(`blocks`))} + public static func getDownloadsForCourse(_ courseId: Parameter) -> Verify { return Verify(method: .m_getDownloadsForCourse__courseId(`courseId`))} + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`))} + public static func resumeDownloading() -> Verify { return Verify(method: .m_resumeDownloading)} + public static func pauseDownloading() -> Verify { return Verify(method: .m_pauseDownloading)} + public static func deleteFile(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_deleteFile__blocks_blocks(`blocks`))} + public static func fileUrl(for blockId: Parameter) -> Verify { return Verify(method: .m_fileUrl__for_blockId(`blockId`))} + } + + public struct Perform { + fileprivate var method: MethodType + var performs: Any + + public static func publisher(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_publisher, performs: perform) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), performs: perform) + } + public static func getDownloadsForCourse(_ courseId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_getDownloadsForCourse__courseId(`courseId`), performs: perform) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, perform: @escaping (String, [CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), performs: perform) + } + public static func resumeDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_resumeDownloading, performs: perform) + } + public static func pauseDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_pauseDownloading, performs: perform) + } + public static func deleteFile(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_deleteFile__blocks_blocks(`blocks`), performs: perform) + } + public static func fileUrl(for blockId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_fileUrl__for_blockId(`blockId`), performs: perform) + } + } + + public func given(_ method: Given) { + methodReturnValues.append(method) + } + + public func perform(_ method: Perform) { + methodPerformValues.append(method) + methodPerformValues.sort { $0.method.intValue() < $1.method.intValue() } + } + + public func verify(_ method: Verify, count: Count = Count.moreOrEqual(to: 1), file: StaticString = #file, line: UInt = #line) { + let fullMatches = matchingCalls(method, file: file, line: line) + let success = count.matches(fullMatches) + let assertionName = method.method.assertionName() + let feedback: String = { + guard !success else { return "" } + return Utils.closestCallsMessage( + for: self.invocations.map { invocation in + matcher.set(file: file, line: line) + defer { matcher.clearFileAndLine() } + return MethodType.compareParameters(lhs: invocation, rhs: method.method, matcher: matcher) + }, + name: assertionName + ) + }() + MockyAssert(success, "Expected: \(count) invocations of `\(assertionName)`, but was: \(fullMatches).\(feedback)", file: file, line: line) + } + + private func addInvocation(_ call: MethodType) { + self.queue.sync { invocations.append(call) } + } + private func methodReturnValue(_ method: MethodType) throws -> StubProduct { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let candidates = sequencingPolicy.sorted(methodReturnValues, by: { $0.method.intValue() > $1.method.intValue() }) + let matched = candidates.first(where: { $0.isValid && MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch }) + guard let product = matched?.getProduct(policy: self.stubbingPolicy) else { throw MockError.notStubed } + return product + } + private func methodPerformValue(_ method: MethodType) -> Any? { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let matched = methodPerformValues.reversed().first { MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch } + return matched?.performs + } + private func matchingCalls(_ method: MethodType, file: StaticString?, line: UInt?) -> [MethodType] { + matcher.set(file: file ?? self.file, line: line ?? self.line) + defer { matcher.clearFileAndLine() } + return invocations.filter { MethodType.compareParameters(lhs: $0, rhs: method, matcher: matcher).isFullMatch } + } + private func matchingCalls(_ method: Verify, file: StaticString?, line: UInt?) -> Int { + return matchingCalls(method.method, file: file, line: line).count + } + private func givenGetterValue(_ method: MethodType, _ message: String) -> T { + do { + return try methodReturnValue(method).casted() + } catch { + onFatalFailure(message) + Failure(message) + } + } + private func optionalGivenGetterValue(_ method: MethodType, _ message: String) -> T? { + do { + return try methodReturnValue(method).casted() + } catch { + return nil + } + } + private func onFatalFailure(_ message: String) { + guard let file = self.file, let line = self.line else { return } // Let if fail if cannot handle gratefully + SwiftyMockyTestObserver.handleFatalError(message: message, file: file, line: line) + } +} + diff --git a/Discussion/Discussion/Data/Network/DiscussionRepository.swift b/Discussion/Discussion/Data/Network/DiscussionRepository.swift index c10bb0e7b..a2bc621ec 100644 --- a/Discussion/Discussion/Data/Network/DiscussionRepository.swift +++ b/Discussion/Discussion/Data/Network/DiscussionRepository.swift @@ -427,4 +427,5 @@ public class DiscussionRepositoryMock: DiscussionRepositoryProtocol { return stringJSON } } +// swiftlint:enable all #endif diff --git a/Discussion/DiscussionTests/DiscussionMock.generated.swift b/Discussion/DiscussionTests/DiscussionMock.generated.swift index 7533d76d0..6335fb469 100644 --- a/Discussion/DiscussionTests/DiscussionMock.generated.swift +++ b/Discussion/DiscussionTests/DiscussionMock.generated.swift @@ -2411,3 +2411,400 @@ open class DiscussionRouterMock: DiscussionRouter, Mock { } } +// MARK: - DownloadManagerProtocol + +open class DownloadManagerProtocolMock: DownloadManagerProtocol, Mock { + public init(sequencing sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst, stubbing stubbingPolicy: StubbingPolicy = .wrap, file: StaticString = #file, line: UInt = #line) { + SwiftyMockyTestObserver.setup() + self.sequencingPolicy = sequencingPolicy + self.stubbingPolicy = stubbingPolicy + self.file = file + self.line = line + } + + var matcher: Matcher = Matcher.default + var stubbingPolicy: StubbingPolicy = .wrap + var sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst + + private var queue = DispatchQueue(label: "com.swiftymocky.invocations", qos: .userInteractive) + private var invocations: [MethodType] = [] + private var methodReturnValues: [Given] = [] + private var methodPerformValues: [Perform] = [] + private var file: StaticString? + private var line: UInt? + + public typealias PropertyStub = Given + public typealias MethodStub = Given + public typealias SubscriptStub = Given + + /// Convenience method - call setupMock() to extend debug information when failure occurs + public func setupMock(file: StaticString = #file, line: UInt = #line) { + self.file = file + self.line = line + } + + /// Clear mock internals. You can specify what to reset (invocations aka verify, givens or performs) or leave it empty to clear all mock internals + public func resetMock(_ scopes: MockScope...) { + let scopes: [MockScope] = scopes.isEmpty ? [.invocation, .given, .perform] : scopes + if scopes.contains(.invocation) { invocations = [] } + if scopes.contains(.given) { methodReturnValues = [] } + if scopes.contains(.perform) { methodPerformValues = [] } + } + + + + + + open func publisher() -> AnyPublisher { + addInvocation(.m_publisher) + let perform = methodPerformValue(.m_publisher) as? () -> Void + perform?() + var __value: AnyPublisher + do { + __value = try methodReturnValue(.m_publisher).casted() + } catch { + onFatalFailure("Stub return value not specified for publisher(). Use given") + Failure("Stub return value not specified for publisher(). Use given") + } + return __value + } + + open func addToDownloadQueue(blocks: [CourseBlock]) throws { + addInvocation(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + do { + _ = try methodReturnValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { + addInvocation(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) + let perform = methodPerformValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) as? (String) -> Void + perform?(`courseId`) + var __value: [DownloadData] + do { + __value = try methodReturnValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))).casted() + } catch { + onFatalFailure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + Failure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + } + return __value + } + + open func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws { + addInvocation(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) as? (String, [CourseBlock]) -> Void + perform?(`courseId`, `blocks`) + do { + _ = try methodReturnValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func resumeDownloading() throws { + addInvocation(.m_resumeDownloading) + let perform = methodPerformValue(.m_resumeDownloading) as? () -> Void + perform?() + do { + _ = try methodReturnValue(.m_resumeDownloading).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func pauseDownloading() { + addInvocation(.m_pauseDownloading) + let perform = methodPerformValue(.m_pauseDownloading) as? () -> Void + perform?() + } + + open func deleteFile(blocks: [CourseBlock]) { + addInvocation(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + } + + open func fileUrl(for blockId: String) -> URL? { + addInvocation(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) + let perform = methodPerformValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) as? (String) -> Void + perform?(`blockId`) + var __value: URL? = nil + do { + __value = try methodReturnValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))).casted() + } catch { + // do nothing + } + return __value + } + + + fileprivate enum MethodType { + case m_publisher + case m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>) + case m_getDownloadsForCourse__courseId(Parameter) + case m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter, Parameter<[CourseBlock]>) + case m_resumeDownloading + case m_pauseDownloading + case m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>) + case m_fileUrl__for_blockId(Parameter) + + static func compareParameters(lhs: MethodType, rhs: MethodType, matcher: Matcher) -> Matcher.ComparisonResult { + switch (lhs, rhs) { + case (.m_publisher, .m_publisher): return .match + + case (.m_addToDownloadQueue__blocks_blocks(let lhsBlocks), .m_addToDownloadQueue__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_getDownloadsForCourse__courseId(let lhsCourseid), .m_getDownloadsForCourse__courseId(let rhsCourseid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "_ courseId")) + return Matcher.ComparisonResult(results) + + case (.m_cancelDownloading__courseId_courseIdblocks_blocks(let lhsCourseid, let lhsBlocks), .m_cancelDownloading__courseId_courseIdblocks_blocks(let rhsCourseid, let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "courseId")) + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_resumeDownloading, .m_resumeDownloading): return .match + + case (.m_pauseDownloading, .m_pauseDownloading): return .match + + case (.m_deleteFile__blocks_blocks(let lhsBlocks), .m_deleteFile__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_fileUrl__for_blockId(let lhsBlockid), .m_fileUrl__for_blockId(let rhsBlockid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlockid, rhs: rhsBlockid, with: matcher), lhsBlockid, rhsBlockid, "for blockId")) + return Matcher.ComparisonResult(results) + default: return .none + } + } + + func intValue() -> Int { + switch self { + case .m_publisher: return 0 + case let .m_addToDownloadQueue__blocks_blocks(p0): return p0.intValue + case let .m_getDownloadsForCourse__courseId(p0): return p0.intValue + case let .m_cancelDownloading__courseId_courseIdblocks_blocks(p0, p1): return p0.intValue + p1.intValue + case .m_resumeDownloading: return 0 + case .m_pauseDownloading: return 0 + case let .m_deleteFile__blocks_blocks(p0): return p0.intValue + case let .m_fileUrl__for_blockId(p0): return p0.intValue + } + } + func assertionName() -> String { + switch self { + case .m_publisher: return ".publisher()" + case .m_addToDownloadQueue__blocks_blocks: return ".addToDownloadQueue(blocks:)" + case .m_getDownloadsForCourse__courseId: return ".getDownloadsForCourse(_:)" + case .m_cancelDownloading__courseId_courseIdblocks_blocks: return ".cancelDownloading(courseId:blocks:)" + case .m_resumeDownloading: return ".resumeDownloading()" + case .m_pauseDownloading: return ".pauseDownloading()" + case .m_deleteFile__blocks_blocks: return ".deleteFile(blocks:)" + case .m_fileUrl__for_blockId: return ".fileUrl(for:)" + } + } + } + + open class Given: StubbedMethod { + fileprivate var method: MethodType + + private init(method: MethodType, products: [StubProduct]) { + self.method = method + super.init(products) + } + + + public static func publisher(willReturn: AnyPublisher...) -> MethodStub { + return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func getDownloadsForCourse(_ courseId: Parameter, willReturn: [DownloadData]...) -> MethodStub { + return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func fileUrl(for blockId: Parameter, willReturn: URL?...) -> MethodStub { + return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func publisher(willProduce: (Stubber>) -> Void) -> MethodStub { + let willReturn: [AnyPublisher] = [] + let given: Given = { return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (AnyPublisher).self) + willProduce(stubber) + return given + } + public static func getDownloadsForCourse(_ courseId: Parameter, willProduce: (Stubber<[DownloadData]>) -> Void) -> MethodStub { + let willReturn: [[DownloadData]] = [] + let given: Given = { return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: ([DownloadData]).self) + willProduce(stubber) + return given + } + public static func fileUrl(for blockId: Parameter, willProduce: (Stubber) -> Void) -> MethodStub { + let willReturn: [URL?] = [] + let given: Given = { return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (URL?).self) + willProduce(stubber) + return given + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func resumeDownloading(willThrow: Error...) -> MethodStub { + return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) + } + public static func resumeDownloading(willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + } + + public struct Verify { + fileprivate var method: MethodType + + public static func publisher() -> Verify { return Verify(method: .m_publisher)} + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_addToDownloadQueue__blocks_blocks(`blocks`))} + public static func getDownloadsForCourse(_ courseId: Parameter) -> Verify { return Verify(method: .m_getDownloadsForCourse__courseId(`courseId`))} + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`))} + public static func resumeDownloading() -> Verify { return Verify(method: .m_resumeDownloading)} + public static func pauseDownloading() -> Verify { return Verify(method: .m_pauseDownloading)} + public static func deleteFile(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_deleteFile__blocks_blocks(`blocks`))} + public static func fileUrl(for blockId: Parameter) -> Verify { return Verify(method: .m_fileUrl__for_blockId(`blockId`))} + } + + public struct Perform { + fileprivate var method: MethodType + var performs: Any + + public static func publisher(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_publisher, performs: perform) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), performs: perform) + } + public static func getDownloadsForCourse(_ courseId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_getDownloadsForCourse__courseId(`courseId`), performs: perform) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, perform: @escaping (String, [CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), performs: perform) + } + public static func resumeDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_resumeDownloading, performs: perform) + } + public static func pauseDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_pauseDownloading, performs: perform) + } + public static func deleteFile(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_deleteFile__blocks_blocks(`blocks`), performs: perform) + } + public static func fileUrl(for blockId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_fileUrl__for_blockId(`blockId`), performs: perform) + } + } + + public func given(_ method: Given) { + methodReturnValues.append(method) + } + + public func perform(_ method: Perform) { + methodPerformValues.append(method) + methodPerformValues.sort { $0.method.intValue() < $1.method.intValue() } + } + + public func verify(_ method: Verify, count: Count = Count.moreOrEqual(to: 1), file: StaticString = #file, line: UInt = #line) { + let fullMatches = matchingCalls(method, file: file, line: line) + let success = count.matches(fullMatches) + let assertionName = method.method.assertionName() + let feedback: String = { + guard !success else { return "" } + return Utils.closestCallsMessage( + for: self.invocations.map { invocation in + matcher.set(file: file, line: line) + defer { matcher.clearFileAndLine() } + return MethodType.compareParameters(lhs: invocation, rhs: method.method, matcher: matcher) + }, + name: assertionName + ) + }() + MockyAssert(success, "Expected: \(count) invocations of `\(assertionName)`, but was: \(fullMatches).\(feedback)", file: file, line: line) + } + + private func addInvocation(_ call: MethodType) { + self.queue.sync { invocations.append(call) } + } + private func methodReturnValue(_ method: MethodType) throws -> StubProduct { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let candidates = sequencingPolicy.sorted(methodReturnValues, by: { $0.method.intValue() > $1.method.intValue() }) + let matched = candidates.first(where: { $0.isValid && MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch }) + guard let product = matched?.getProduct(policy: self.stubbingPolicy) else { throw MockError.notStubed } + return product + } + private func methodPerformValue(_ method: MethodType) -> Any? { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let matched = methodPerformValues.reversed().first { MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch } + return matched?.performs + } + private func matchingCalls(_ method: MethodType, file: StaticString?, line: UInt?) -> [MethodType] { + matcher.set(file: file ?? self.file, line: line ?? self.line) + defer { matcher.clearFileAndLine() } + return invocations.filter { MethodType.compareParameters(lhs: $0, rhs: method, matcher: matcher).isFullMatch } + } + private func matchingCalls(_ method: Verify, file: StaticString?, line: UInt?) -> Int { + return matchingCalls(method.method, file: file, line: line).count + } + private func givenGetterValue(_ method: MethodType, _ message: String) -> T { + do { + return try methodReturnValue(method).casted() + } catch { + onFatalFailure(message) + Failure(message) + } + } + private func optionalGivenGetterValue(_ method: MethodType, _ message: String) -> T? { + do { + return try methodReturnValue(method).casted() + } catch { + return nil + } + } + private func onFatalFailure(_ message: String) { + guard let file = self.file, let line = self.line else { return } // Let if fail if cannot handle gratefully + SwiftyMockyTestObserver.handleFatalError(message: message, file: file, line: line) + } +} + diff --git a/OpenEdX/DI/ScreenAssembly.swift b/OpenEdX/DI/ScreenAssembly.swift index a4b8fa1b9..4e3d37103 100644 --- a/OpenEdX/DI/ScreenAssembly.swift +++ b/OpenEdX/DI/ScreenAssembly.swift @@ -244,11 +244,10 @@ class ScreenAssembly: Assembly { container.register( CourseUnitViewModel.self - ) { r, blockId, courseId, id, courseName, chapters, chapterIndex, sequentialIndex, verticalIndex in + ) { r, blockId, courseId, courseName, chapters, chapterIndex, sequentialIndex, verticalIndex in CourseUnitViewModel( lessonID: blockId, courseID: courseId, - id: id, courseName: courseName, chapters: chapters, chapterIndex: chapterIndex, diff --git a/OpenEdX/Router.swift b/OpenEdX/Router.swift index 03f48dfee..0e7e332cb 100644 --- a/OpenEdX/Router.swift +++ b/OpenEdX/Router.swift @@ -159,7 +159,6 @@ public class Router: AuthorizationRouter, } public func showCourseVerticalView( - id: String, courseID: String, courseName: String, title: String, @@ -174,7 +173,12 @@ public class Router: AuthorizationRouter, sequentialIndex )! - let view = CourseVerticalView(title: title, courseName: courseName, courseID: courseID, id: id, viewModel: viewModel) + let view = CourseVerticalView( + title: title, + courseName: courseName, + courseID: courseID, + viewModel: viewModel + ) let controller = SwiftUIHostController(view: view) navigationController.pushViewController(controller, animated: true) } @@ -224,7 +228,6 @@ public class Router: AuthorizationRouter, public func showCourseUnit( courseName: String, - id: String, blockId: String, courseID: String, sectionName: String, @@ -237,7 +240,6 @@ public class Router: AuthorizationRouter, CourseUnitViewModel.self, arguments: blockId, courseID, - id, courseName, chapters, chapterIndex, @@ -250,7 +252,6 @@ public class Router: AuthorizationRouter, } public func replaceCourseUnit( - id: String, courseName: String, blockId: String, courseID: String, @@ -272,18 +273,14 @@ public class Router: AuthorizationRouter, title: chapters[chapterIndex].childs[sequentialIndex].displayName, courseName: courseName, courseID: courseID, - id: id, viewModel: vmVertical ) let controllerVertical = SwiftUIHostController(view: viewVertical) - let verticals = chapters[chapterIndex].childs[sequentialIndex].childs - let viewModel = Container.shared.resolve( CourseUnitViewModel.self, arguments: blockId, courseID, - id, courseName, chapters, chapterIndex, diff --git a/Profile/Profile/Domain/ProfileInteractor.swift b/Profile/Profile/Domain/ProfileInteractor.swift index 525cc8f80..a29d04ad2 100644 --- a/Profile/Profile/Domain/ProfileInteractor.swift +++ b/Profile/Profile/Domain/ProfileInteractor.swift @@ -15,7 +15,7 @@ public protocol ProfileInteractorProtocol { func getMyProfileOffline() throws -> UserProfile func logOut() async throws func getSpokenLanguages() -> [PickerFields.Option] - func getCountries() -> [PickerFields.Option] + func getCountries() -> [PickerFields.Option] func uploadProfilePicture(pictureData: Data) async throws func deleteProfilePicture() async throws -> Bool func updateUserProfile(parameters: [String: Any]) async throws -> UserProfile @@ -48,7 +48,7 @@ public class ProfileInteractor: ProfileInteractorProtocol { return repository.getSpokenLanguages() } - public func getCountries() -> [PickerFields.Option] { + public func getCountries() -> [PickerFields.Option] { return repository.getCountries() } diff --git a/Profile/ProfileTests/ProfileMock.generated.swift b/Profile/ProfileTests/ProfileMock.generated.swift index 8d71c7ff2..5c111a812 100644 --- a/Profile/ProfileTests/ProfileMock.generated.swift +++ b/Profile/ProfileTests/ProfileMock.generated.swift @@ -1002,6 +1002,403 @@ open class ConnectivityProtocolMock: ConnectivityProtocol, Mock { } } +// MARK: - DownloadManagerProtocol + +open class DownloadManagerProtocolMock: DownloadManagerProtocol, Mock { + public init(sequencing sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst, stubbing stubbingPolicy: StubbingPolicy = .wrap, file: StaticString = #file, line: UInt = #line) { + SwiftyMockyTestObserver.setup() + self.sequencingPolicy = sequencingPolicy + self.stubbingPolicy = stubbingPolicy + self.file = file + self.line = line + } + + var matcher: Matcher = Matcher.default + var stubbingPolicy: StubbingPolicy = .wrap + var sequencingPolicy: SequencingPolicy = .lastWrittenResolvedFirst + + private var queue = DispatchQueue(label: "com.swiftymocky.invocations", qos: .userInteractive) + private var invocations: [MethodType] = [] + private var methodReturnValues: [Given] = [] + private var methodPerformValues: [Perform] = [] + private var file: StaticString? + private var line: UInt? + + public typealias PropertyStub = Given + public typealias MethodStub = Given + public typealias SubscriptStub = Given + + /// Convenience method - call setupMock() to extend debug information when failure occurs + public func setupMock(file: StaticString = #file, line: UInt = #line) { + self.file = file + self.line = line + } + + /// Clear mock internals. You can specify what to reset (invocations aka verify, givens or performs) or leave it empty to clear all mock internals + public func resetMock(_ scopes: MockScope...) { + let scopes: [MockScope] = scopes.isEmpty ? [.invocation, .given, .perform] : scopes + if scopes.contains(.invocation) { invocations = [] } + if scopes.contains(.given) { methodReturnValues = [] } + if scopes.contains(.perform) { methodPerformValues = [] } + } + + + + + + open func publisher() -> AnyPublisher { + addInvocation(.m_publisher) + let perform = methodPerformValue(.m_publisher) as? () -> Void + perform?() + var __value: AnyPublisher + do { + __value = try methodReturnValue(.m_publisher).casted() + } catch { + onFatalFailure("Stub return value not specified for publisher(). Use given") + Failure("Stub return value not specified for publisher(). Use given") + } + return __value + } + + open func addToDownloadQueue(blocks: [CourseBlock]) throws { + addInvocation(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + do { + _ = try methodReturnValue(.m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func getDownloadsForCourse(_ courseId: String) -> [DownloadData] { + addInvocation(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) + let perform = methodPerformValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))) as? (String) -> Void + perform?(`courseId`) + var __value: [DownloadData] + do { + __value = try methodReturnValue(.m_getDownloadsForCourse__courseId(Parameter.value(`courseId`))).casted() + } catch { + onFatalFailure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + Failure("Stub return value not specified for getDownloadsForCourse(_ courseId: String). Use given") + } + return __value + } + + open func cancelDownloading(courseId: String, blocks: [CourseBlock]) throws { + addInvocation(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))) as? (String, [CourseBlock]) -> Void + perform?(`courseId`, `blocks`) + do { + _ = try methodReturnValue(.m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter.value(`courseId`), Parameter<[CourseBlock]>.value(`blocks`))).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func resumeDownloading() throws { + addInvocation(.m_resumeDownloading) + let perform = methodPerformValue(.m_resumeDownloading) as? () -> Void + perform?() + do { + _ = try methodReturnValue(.m_resumeDownloading).casted() as Void + } catch MockError.notStubed { + // do nothing + } catch { + throw error + } + } + + open func pauseDownloading() { + addInvocation(.m_pauseDownloading) + let perform = methodPerformValue(.m_pauseDownloading) as? () -> Void + perform?() + } + + open func deleteFile(blocks: [CourseBlock]) { + addInvocation(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) + let perform = methodPerformValue(.m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>.value(`blocks`))) as? ([CourseBlock]) -> Void + perform?(`blocks`) + } + + open func fileUrl(for blockId: String) -> URL? { + addInvocation(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) + let perform = methodPerformValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))) as? (String) -> Void + perform?(`blockId`) + var __value: URL? = nil + do { + __value = try methodReturnValue(.m_fileUrl__for_blockId(Parameter.value(`blockId`))).casted() + } catch { + // do nothing + } + return __value + } + + + fileprivate enum MethodType { + case m_publisher + case m_addToDownloadQueue__blocks_blocks(Parameter<[CourseBlock]>) + case m_getDownloadsForCourse__courseId(Parameter) + case m_cancelDownloading__courseId_courseIdblocks_blocks(Parameter, Parameter<[CourseBlock]>) + case m_resumeDownloading + case m_pauseDownloading + case m_deleteFile__blocks_blocks(Parameter<[CourseBlock]>) + case m_fileUrl__for_blockId(Parameter) + + static func compareParameters(lhs: MethodType, rhs: MethodType, matcher: Matcher) -> Matcher.ComparisonResult { + switch (lhs, rhs) { + case (.m_publisher, .m_publisher): return .match + + case (.m_addToDownloadQueue__blocks_blocks(let lhsBlocks), .m_addToDownloadQueue__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_getDownloadsForCourse__courseId(let lhsCourseid), .m_getDownloadsForCourse__courseId(let rhsCourseid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "_ courseId")) + return Matcher.ComparisonResult(results) + + case (.m_cancelDownloading__courseId_courseIdblocks_blocks(let lhsCourseid, let lhsBlocks), .m_cancelDownloading__courseId_courseIdblocks_blocks(let rhsCourseid, let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsCourseid, rhs: rhsCourseid, with: matcher), lhsCourseid, rhsCourseid, "courseId")) + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_resumeDownloading, .m_resumeDownloading): return .match + + case (.m_pauseDownloading, .m_pauseDownloading): return .match + + case (.m_deleteFile__blocks_blocks(let lhsBlocks), .m_deleteFile__blocks_blocks(let rhsBlocks)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlocks, rhs: rhsBlocks, with: matcher), lhsBlocks, rhsBlocks, "blocks")) + return Matcher.ComparisonResult(results) + + case (.m_fileUrl__for_blockId(let lhsBlockid), .m_fileUrl__for_blockId(let rhsBlockid)): + var results: [Matcher.ParameterComparisonResult] = [] + results.append(Matcher.ParameterComparisonResult(Parameter.compare(lhs: lhsBlockid, rhs: rhsBlockid, with: matcher), lhsBlockid, rhsBlockid, "for blockId")) + return Matcher.ComparisonResult(results) + default: return .none + } + } + + func intValue() -> Int { + switch self { + case .m_publisher: return 0 + case let .m_addToDownloadQueue__blocks_blocks(p0): return p0.intValue + case let .m_getDownloadsForCourse__courseId(p0): return p0.intValue + case let .m_cancelDownloading__courseId_courseIdblocks_blocks(p0, p1): return p0.intValue + p1.intValue + case .m_resumeDownloading: return 0 + case .m_pauseDownloading: return 0 + case let .m_deleteFile__blocks_blocks(p0): return p0.intValue + case let .m_fileUrl__for_blockId(p0): return p0.intValue + } + } + func assertionName() -> String { + switch self { + case .m_publisher: return ".publisher()" + case .m_addToDownloadQueue__blocks_blocks: return ".addToDownloadQueue(blocks:)" + case .m_getDownloadsForCourse__courseId: return ".getDownloadsForCourse(_:)" + case .m_cancelDownloading__courseId_courseIdblocks_blocks: return ".cancelDownloading(courseId:blocks:)" + case .m_resumeDownloading: return ".resumeDownloading()" + case .m_pauseDownloading: return ".pauseDownloading()" + case .m_deleteFile__blocks_blocks: return ".deleteFile(blocks:)" + case .m_fileUrl__for_blockId: return ".fileUrl(for:)" + } + } + } + + open class Given: StubbedMethod { + fileprivate var method: MethodType + + private init(method: MethodType, products: [StubProduct]) { + self.method = method + super.init(products) + } + + + public static func publisher(willReturn: AnyPublisher...) -> MethodStub { + return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func getDownloadsForCourse(_ courseId: Parameter, willReturn: [DownloadData]...) -> MethodStub { + return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func fileUrl(for blockId: Parameter, willReturn: URL?...) -> MethodStub { + return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) + } + public static func publisher(willProduce: (Stubber>) -> Void) -> MethodStub { + let willReturn: [AnyPublisher] = [] + let given: Given = { return Given(method: .m_publisher, products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (AnyPublisher).self) + willProduce(stubber) + return given + } + public static func getDownloadsForCourse(_ courseId: Parameter, willProduce: (Stubber<[DownloadData]>) -> Void) -> MethodStub { + let willReturn: [[DownloadData]] = [] + let given: Given = { return Given(method: .m_getDownloadsForCourse__courseId(`courseId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: ([DownloadData]).self) + willProduce(stubber) + return given + } + public static func fileUrl(for blockId: Parameter, willProduce: (Stubber) -> Void) -> MethodStub { + let willReturn: [URL?] = [] + let given: Given = { return Given(method: .m_fileUrl__for_blockId(`blockId`), products: willReturn.map({ StubProduct.return($0 as Any) })) }() + let stubber = given.stub(for: (URL?).self) + willProduce(stubber) + return given + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willThrow: Error...) -> MethodStub { + return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + public static func resumeDownloading(willThrow: Error...) -> MethodStub { + return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) + } + public static func resumeDownloading(willProduce: (StubberThrows) -> Void) -> MethodStub { + let willThrow: [Error] = [] + let given: Given = { return Given(method: .m_resumeDownloading, products: willThrow.map({ StubProduct.throw($0) })) }() + let stubber = given.stubThrows(for: (Void).self) + willProduce(stubber) + return given + } + } + + public struct Verify { + fileprivate var method: MethodType + + public static func publisher() -> Verify { return Verify(method: .m_publisher)} + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_addToDownloadQueue__blocks_blocks(`blocks`))} + public static func getDownloadsForCourse(_ courseId: Parameter) -> Verify { return Verify(method: .m_getDownloadsForCourse__courseId(`courseId`))} + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`))} + public static func resumeDownloading() -> Verify { return Verify(method: .m_resumeDownloading)} + public static func pauseDownloading() -> Verify { return Verify(method: .m_pauseDownloading)} + public static func deleteFile(blocks: Parameter<[CourseBlock]>) -> Verify { return Verify(method: .m_deleteFile__blocks_blocks(`blocks`))} + public static func fileUrl(for blockId: Parameter) -> Verify { return Verify(method: .m_fileUrl__for_blockId(`blockId`))} + } + + public struct Perform { + fileprivate var method: MethodType + var performs: Any + + public static func publisher(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_publisher, performs: perform) + } + public static func addToDownloadQueue(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_addToDownloadQueue__blocks_blocks(`blocks`), performs: perform) + } + public static func getDownloadsForCourse(_ courseId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_getDownloadsForCourse__courseId(`courseId`), performs: perform) + } + public static func cancelDownloading(courseId: Parameter, blocks: Parameter<[CourseBlock]>, perform: @escaping (String, [CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_cancelDownloading__courseId_courseIdblocks_blocks(`courseId`, `blocks`), performs: perform) + } + public static func resumeDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_resumeDownloading, performs: perform) + } + public static func pauseDownloading(perform: @escaping () -> Void) -> Perform { + return Perform(method: .m_pauseDownloading, performs: perform) + } + public static func deleteFile(blocks: Parameter<[CourseBlock]>, perform: @escaping ([CourseBlock]) -> Void) -> Perform { + return Perform(method: .m_deleteFile__blocks_blocks(`blocks`), performs: perform) + } + public static func fileUrl(for blockId: Parameter, perform: @escaping (String) -> Void) -> Perform { + return Perform(method: .m_fileUrl__for_blockId(`blockId`), performs: perform) + } + } + + public func given(_ method: Given) { + methodReturnValues.append(method) + } + + public func perform(_ method: Perform) { + methodPerformValues.append(method) + methodPerformValues.sort { $0.method.intValue() < $1.method.intValue() } + } + + public func verify(_ method: Verify, count: Count = Count.moreOrEqual(to: 1), file: StaticString = #file, line: UInt = #line) { + let fullMatches = matchingCalls(method, file: file, line: line) + let success = count.matches(fullMatches) + let assertionName = method.method.assertionName() + let feedback: String = { + guard !success else { return "" } + return Utils.closestCallsMessage( + for: self.invocations.map { invocation in + matcher.set(file: file, line: line) + defer { matcher.clearFileAndLine() } + return MethodType.compareParameters(lhs: invocation, rhs: method.method, matcher: matcher) + }, + name: assertionName + ) + }() + MockyAssert(success, "Expected: \(count) invocations of `\(assertionName)`, but was: \(fullMatches).\(feedback)", file: file, line: line) + } + + private func addInvocation(_ call: MethodType) { + self.queue.sync { invocations.append(call) } + } + private func methodReturnValue(_ method: MethodType) throws -> StubProduct { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let candidates = sequencingPolicy.sorted(methodReturnValues, by: { $0.method.intValue() > $1.method.intValue() }) + let matched = candidates.first(where: { $0.isValid && MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch }) + guard let product = matched?.getProduct(policy: self.stubbingPolicy) else { throw MockError.notStubed } + return product + } + private func methodPerformValue(_ method: MethodType) -> Any? { + matcher.set(file: self.file, line: self.line) + defer { matcher.clearFileAndLine() } + let matched = methodPerformValues.reversed().first { MethodType.compareParameters(lhs: $0.method, rhs: method, matcher: matcher).isFullMatch } + return matched?.performs + } + private func matchingCalls(_ method: MethodType, file: StaticString?, line: UInt?) -> [MethodType] { + matcher.set(file: file ?? self.file, line: line ?? self.line) + defer { matcher.clearFileAndLine() } + return invocations.filter { MethodType.compareParameters(lhs: $0, rhs: method, matcher: matcher).isFullMatch } + } + private func matchingCalls(_ method: Verify, file: StaticString?, line: UInt?) -> Int { + return matchingCalls(method.method, file: file, line: line).count + } + private func givenGetterValue(_ method: MethodType, _ message: String) -> T { + do { + return try methodReturnValue(method).casted() + } catch { + onFatalFailure(message) + Failure(message) + } + } + private func optionalGivenGetterValue(_ method: MethodType, _ message: String) -> T? { + do { + return try methodReturnValue(method).casted() + } catch { + return nil + } + } + private func onFatalFailure(_ message: String) { + guard let file = self.file, let line = self.line else { return } // Let if fail if cannot handle gratefully + SwiftyMockyTestObserver.handleFatalError(message: message, file: file, line: line) + } +} + // MARK: - ProfileAnalytics open class ProfileAnalyticsMock: ProfileAnalytics, Mock { From 79f4f38690c49912cd4ed606daee559cc57558b4 Mon Sep 17 00:00:00 2001 From: Volodymyr Chekyrta <127732735+volodymyr-chekyrta@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:24:25 +0300 Subject: [PATCH 2/2] Added base documentation for the project. (#52) --- Documentation/Documentation.md | 235 ++++++++++++++++++ Documentation/Resources/CALayers.png | Bin 0 -> 34596 bytes Documentation/Resources/CleanArchitecture.jpg | Bin 0 -> 107444 bytes .../Resources/Create_module_step1.png | Bin 0 -> 428352 bytes .../Resources/Create_module_step2.png | Bin 0 -> 168922 bytes .../Resources/Create_module_step3.png | Bin 0 -> 121674 bytes .../Resources/Create_module_step4.png | Bin 0 -> 331910 bytes .../Resources/Create_module_step5.png | Bin 0 -> 66083 bytes .../Resources/Create_module_step6.png | Bin 0 -> 170772 bytes .../Resources/Create_module_step7.png | Bin 0 -> 199046 bytes .../Resources/Create_module_step7_2.png | Bin 0 -> 141656 bytes .../Resources/Create_module_step7_3.png | Bin 0 -> 52862 bytes .../Resources/Create_module_step8.png | Bin 0 -> 621721 bytes Documentation/Resources/Modules.jpg | Bin 0 -> 57090 bytes README.md | 2 + 15 files changed, 237 insertions(+) create mode 100644 Documentation/Documentation.md create mode 100644 Documentation/Resources/CALayers.png create mode 100644 Documentation/Resources/CleanArchitecture.jpg create mode 100644 Documentation/Resources/Create_module_step1.png create mode 100644 Documentation/Resources/Create_module_step2.png create mode 100644 Documentation/Resources/Create_module_step3.png create mode 100644 Documentation/Resources/Create_module_step4.png create mode 100644 Documentation/Resources/Create_module_step5.png create mode 100644 Documentation/Resources/Create_module_step6.png create mode 100644 Documentation/Resources/Create_module_step7.png create mode 100644 Documentation/Resources/Create_module_step7_2.png create mode 100644 Documentation/Resources/Create_module_step7_3.png create mode 100644 Documentation/Resources/Create_module_step8.png create mode 100644 Documentation/Resources/Modules.jpg diff --git a/Documentation/Documentation.md b/Documentation/Documentation.md new file mode 100644 index 000000000..81c24d4c5 --- /dev/null +++ b/Documentation/Documentation.md @@ -0,0 +1,235 @@ +# Documentation + +Content: +* [Architecture](#architecture) + + [Philosophy](#philosophy) + + [Concept](#concept) + + [What is Clean Architecture?](#what-is-clean-architecture) + + [Layers](#layers) + - [Presentation](#presentation) + - [Domain](#domain) + - [Data](#data) + + [Example](#example) + + [FAQ](#faq) + - [How does Clean Architecture improve software development?](#how-does-clean-architecture-improve-software-development) + - [Can Clean Architecture be used with any programming language?](#can-clean-architecture-be-used-with-any-programming-language) + - [Is Clean Architecture applicable only for large-scale applications?](#is-clean-architecture-applicable-only-for-large-scale-applications) + - [How is data validation handled in Clean Architecture?](#how-is-data-validation-handled-in-clean-architecture) + - [How are errors handled in Clean Architecture?](#how-are-errors-handled-in-clean-architecture) + - [What are Interactors in Clean Architecture?](#what-are-interactors-in-clean-architecture) + - [How do you deal with performance in Clean Architecture?](#how-do-you-deal-with-performance-in-clean-architecture) + - [Is Clean Architecture the same as Hexagonal Architecture?](#is-clean-architecture-the-same-as-hexagonal-architecture) + + [Useful links](#useful-links) +* [Project structure and Modularity](#project-structure-and-modularity) + - [Main rule](#main-rule) + - [Structure](#structure) + - [Responsibility](#responsibility) + - [Benefits](#benefits) + - [How to create a module for your new feature?](#how-to-create-a-module-for-your-new-feature) +* [Tech Stack](#tech-stack) + +# Architecture + +## Philosophy +Remember ☝️ + +Architecture is a crucial part of developing software, but it's not a dogma. + +Architecture is a set of recommendations to save you from trivial mistakes and make life easier, but if for your purpose you need to break it - you can do it. + +## Concept +This project follows the architectural concept of The Clean Architecture: + +[](Resources/CleanArchitecture.jpg) + +## What is Clean Architecture? +It is an architectural approach that emphasizes the separation of concerns, the use of dependency inversion, and the creation of testable and maintainable code. +It promotes flexibility by separating the application into different layers of abstraction. +This allows for easier maintenance and testing of individual components, as well as the ability to swap out underlying technologies without affecting the overall architecture. + +Architecture was popularized by Robert C. Martin ("Uncle Bob"). + +## Layers +Usually, implementation consists of the following three layers/packages/folders: Presentation, Domain, and Data. + +[](Resources/CALayers.png) + +### Presentation +Presentation is all about Displaying data, User input handling, Data validation, and Navigation. +If the Presentation Layer needs data or business logic, it calls Domain Layer. + +### Domain +The Domain layer, also known as the Business layer, is a key component that focuses on the core business logic, rules, and entities specific to the problem domain the application is designed to address. +The Domain layer is **independent of any technology or infrastructure concerns**, such as databases, user interfaces, or external services. +This separation allows the business logic to be more easily understood, maintained, and tested, without being affected by changes in other layers or components of the application. + +### Data +The Data layer, or the Persistence layer, is a component of an application's architecture responsible for managing data storage, retrieval, and manipulation. +This layer serves as an abstraction between the application's core logic and the underlying data storage technology, such as databases, file systems, or external APIs. + +## Example +Examples can be found in most project modules, but let's take a look at the `Course` module. +For instance, here we can find the next structure: +`CourseOutlineView` and `CourseContainerViewModel` as a representation of the Presentation Layer. +`CourseInteractor` as a representation of the Domain Layer. +And `CourseRepository` as a representation of the Data Layer. + +The best way to determine **what a module does** is to open its Interactor. +Here you can find all the business cases covered by the module. + +But if you want to know **how it does it**, you must delve into its Presentation and Data layers. + +## FAQ + +### How does Clean Architecture improve software development? +Clean Architecture separates the concerns of software components, reduces coupling, and improves the independence of software systems. +This makes the system more flexible, maintainable, and testable. It also ensures that the software can survive changes in technology, user interface, and even some business rules. + +### Can Clean Architecture be used with any programming language? +Yes, Clean Architecture is not tied to any specific programming language. +It's a design philosophy that can be applied to any language as long as it supports the principles of object-oriented design. + +### Is Clean Architecture applicable only for large-scale applications? +No, Clean Architecture is not exclusively for large-scale applications. +It can be implemented in small projects as well, providing similar benefits of maintainability, scalability, and testability. +However, for very simple or small-scale applications, implementing Clean Architecture might be overkill and lead to unnecessary complexity. + +### How is data validation handled in Clean Architecture? +Data validation can be considered at various levels in Clean Architecture. Simple, technical validations like checking for null or validating data formats can be done in the outer layers. Business rule validations, on the other hand, should be handled by Entities or Use Cases in the inner layers. This helps to ensure that invalid data never reaches the core business logic. + +### How are errors handled in Clean Architecture? +Error handling in Clean Architecture typically depends on the type of error. +Domain-specific errors (those that relate to the core business rules) should be handled within the Entities or Use Cases. +Technical errors (like a database connection failing) should be handled at the outer layers, with the necessary information relayed back to the inner layers through predefined interfaces. + +### What are Interactors in Clean Architecture? +Interactors, also known as Use Cases, represent specific applications of the business rules. +They orchestrate the flow of data between Entities and the outer layers of the system. +Interactors contain the logic to fulfill each use case of the system and maintain a decoupled relationship with the Entities and outer layers via interfaces. + +### How do you deal with performance in Clean Architecture? +While Clean Architecture is not specifically designed to optimize performance, it does not inherently cause performance issues either. +If performance becomes a concern, then performance optimization strategies can be applied in the relevant layers or components. +However, it is recommended to keep these optimizations isolated from the business rules to preserve the separation of concerns. + +### Is Clean Architecture the same as Hexagonal Architecture? +While there are similarities between Clean Architecture and Hexagonal Architecture (also known as Ports and Adapters) in terms of their goal of separation of concerns and testability, they are not the same. +Both architectures advocate for isolating business logic from external concerns, but they use different metaphors and structures. +Clean Architecture tends to focus more on layers, while Hexagonal Architecture emphasizes the interaction points (ports) and their implementations (adapters). + +## Useful links +If you want to delve deeper into the topic of CA, you can find useful links below. + +Article: [Clean Architecture for mobile: To be, or not to be](https://medium.com/globant/clean-architecture-for-mobile-to-be-or-not-to-be-2ffc8d46e402) + +Video: [Robert C Martin - Clean Architecture and Design](https://www.youtube.com/watch?v=Nsjsiz2A9mg) + +Book: [Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)](https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164) + +# Project structure and Modularity +Modular architecture in applications pertains to the practice of decomposing an app's elements into smaller, reusable, and interchangeable modules. +Each Feature in the application is represented by a specific module, so you will not have problems finding the right class or functionality. + +## Main rule +Lower modules don't know anything about the higher modules. +It helps avoid conflicts with circular dependencies. + +If you need to pass some logic from one independent module to another, it is not a good idea to link modules to each other, this will eventually lead to circular dependencies and the broken project. +The better way is an abstraction in the core, implementation in the module, and dependency injection. + +## Structure +[](Resources/Modules.jpg) + +## Responsibility +Each module is centered around a specific set of features or functionality. +1. App module - app lifecycle management, routing, dependency control. +2. Auth Module - anything related to the user authorization process. +3. Discovery Module - anything related to the course catalog and search. +4. Dashboard Module - anything related to the course dashboard. +5. Profile Module - anything related to a user profile and settings. +6. Course Module - anything related to course structure, certificates, and assessments. +7. Discussion Module - anything related to course discussions. +8. Core Module - a set of utilities and abstractions required by each module. + +## Benefits +Modular approach has several benefits such as: + +##### Improved code organization +By separating components into modules, developers can better understand and manage the structure of the codebase. +This organization facilitates code navigation and makes it easier to locate specific functionalities. + +##### Scalability +Since modules are self-contained, it's easier to add or remove features as the application grows. +This flexibility allows developers to build scalable apps that can evolve with changing requirements. + +##### Reusability +Modular architecture promotes the creation of reusable components, which can be easily shared across multiple projects or within different parts of the same project. +This reusability can lead to increased productivity and reduced development time. + +##### Faster build time +Modular architecture allows incremental builds, where only the modified modules are recompiled. +This approach can significantly reduce build times and improve the development workflow. + +## How to create a module for your new feature? +1. Go to File -> New -> Project... + +[](Resources/Create_module_step1.png) + +2. Select `Framework` from Templates and click the Next button. + +[](Resources/Create_module_step2.png) + +3. Change your module name, choose Team and click the Next button. + +[](Resources/Create_module_step3.png) + +4. Select your project folder and don't forget to add the new module to the OpenEdX project group. + +[](Resources/Create_module_step4.png) + +5. Add your new module to the Podfile. + +[](Resources/Create_module_step5.png) + +6. Go to the project settings of the new module and add `Configurations` as shown in the screenshot below. + +[](Resources/Create_module_step6.png) + +7. Go to your new module target and click `+` sign to add the `Core` module. + +[](Resources/Create_module_step7.png) + +Choose `Core.framework` from the list. + +[](Resources/Create_module_step7_2.png) + +Change Embed flag to `Do Not Embed`. +The Core module will be embedded via the App module. + +[](Resources/Create_module_step7_3.png) + +8. In the same way, add your new module to the OpenEdX target. + +[](Resources/Create_module_step8.png) + +9. Navigate to the project folder and run `pod install`. + +10. Optional step. Add `.gitignore`, `SwiftGen`, and a Test target to your module. + +# Tech Stack +The project tries to use only the required number of libraries and frameworks and avoid unnecessary dependencies. + +The following technologies are used in the project: +- Swift, the main programming language. +- Swift Concurrency, the main toolkit for managing async jobs. +- SwiftUI, the main toolkit for building UI. +- SwiftUIIntrospect, SwiftUI backward UIKit access. +- Alamofire, HTTP networking library. +- Kingfisher, images loading library. +- Swinject, dependency injection framework. +- CoreData, data persistence. +- Firebase, infrastructure. +- XCTest, unit testing framework. +- SwiftyMocky, framework for automatic mock generation. +- SwiftLint, a tool to enforce Swift style and conventions. +- SwiftGen, the Swift code generator for assets. diff --git a/Documentation/Resources/CALayers.png b/Documentation/Resources/CALayers.png new file mode 100644 index 0000000000000000000000000000000000000000..c8da60ada967b9b8c48f12633e1a6098a3cb7a3d GIT binary patch literal 34596 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 literal 0 HcmV?d00001 diff --git a/Documentation/Resources/CleanArchitecture.jpg b/Documentation/Resources/CleanArchitecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3cd44fb58d87e5fd2fe1f0a75533f132bb163c61 GIT binary patch literal 107444 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

rCqv;@~gH@sYFHHT-Cg9JB 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

%@!pDS~Yf#TW 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 z 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 z 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

Jd>4vJ9f=_WJ7fYOLwBFU?c-2oo+92DWTIkA3 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

bK< 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 z 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

s^=8u_GZHH$^vY6!P_9N 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

G~bP1B=vTB`_~go@uSRz-_CUzED-28>{P)egL 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