diff --git a/Projects/Features/MyInfoFeature/Interface/Interface.swift b/Projects/Features/MyInfoFeature/Interface/Interface.swift index 407dc0343..49cbef165 100644 --- a/Projects/Features/MyInfoFeature/Interface/Interface.swift +++ b/Projects/Features/MyInfoFeature/Interface/Interface.swift @@ -7,3 +7,11 @@ public protocol MyInfoFactory { public protocol SettingFactory { func makeView() -> UIViewController } + +public protocol AppPushSettingFactory { + func makeView() -> UIViewController +} + +public protocol OpenSourceLicenseFactory { + func makeView() -> UIViewController +} diff --git a/Projects/Features/MyInfoFeature/Project.swift b/Projects/Features/MyInfoFeature/Project.swift index 96c12eb61..83c67f1b3 100644 --- a/Projects/Features/MyInfoFeature/Project.swift +++ b/Projects/Features/MyInfoFeature/Project.swift @@ -23,6 +23,7 @@ let project = Project.module( ) ), .testing(module: .feature(.MyInfoFeature), dependencies: [ + .feature(target: .MyInfoFeature), .feature(target: .MyInfoFeature, type: .interface), .feature(target: .BaseFeature, type: .testing), .feature(target: .SignInFeature, type: .testing) diff --git a/Projects/Features/MyInfoFeature/Sources/Components/AppPushSettingComponent.swift b/Projects/Features/MyInfoFeature/Sources/Components/AppPushSettingComponent.swift index e77a7359f..718b30fca 100644 --- a/Projects/Features/MyInfoFeature/Sources/Components/AppPushSettingComponent.swift +++ b/Projects/Features/MyInfoFeature/Sources/Components/AppPushSettingComponent.swift @@ -1,11 +1,11 @@ -import BaseFeatureInterface +// import BaseFeatureInterface import MyInfoFeatureInterface import NeedleFoundation import UIKit public protocol AppPushSettingDependency: Dependency {} -public final class AppPushSettingComponent: Component { +public final class AppPushSettingComponent: Component, AppPushSettingFactory { public func makeView() -> UIViewController { return AppPushSettingViewController.viewController( reactor: AppPushSettingReactor() diff --git a/Projects/Features/MyInfoFeature/Sources/Components/OpenSourceLicenseComponent.swift b/Projects/Features/MyInfoFeature/Sources/Components/OpenSourceLicenseComponent.swift index 686f41214..6f4f5242e 100644 --- a/Projects/Features/MyInfoFeature/Sources/Components/OpenSourceLicenseComponent.swift +++ b/Projects/Features/MyInfoFeature/Sources/Components/OpenSourceLicenseComponent.swift @@ -1,18 +1,12 @@ -// -// OpenSourceLicenseComponent.swift -// CommonFeature -// -// Created by KTH on 2023/05/17. -// Copyright © 2023 yongbeomkwak. All rights reserved. -// - import Foundation +import MyInfoFeatureInterface import NeedleFoundation +import UIKit public protocol OpenSourceLicenseDependency: Dependency {} -public final class OpenSourceLicenseComponent: Component { - public func makeView() -> OpenSourceLicenseViewController { +public final class OpenSourceLicenseComponent: Component, OpenSourceLicenseFactory { + public func makeView() -> UIViewController { return OpenSourceLicenseViewController.viewController( viewModel: OpenSourceLicenseViewModel() ) diff --git a/Projects/Features/MyInfoFeature/Sources/Components/SettingComponent.swift b/Projects/Features/MyInfoFeature/Sources/Components/SettingComponent.swift index a5eb10dc2..487c57659 100644 --- a/Projects/Features/MyInfoFeature/Sources/Components/SettingComponent.swift +++ b/Projects/Features/MyInfoFeature/Sources/Components/SettingComponent.swift @@ -27,10 +27,10 @@ public final class SettingComponent: Component, SettingFactor ), textPopUpFactory: dependency.textPopUpFactory, signInFactory: dependency.signInFactory, - appPushSettingComponent: dependency.appPushSettingComponent, - serviceTermsComponent: dependency.serviceTermsComponent, - privacyComponent: dependency.privacyComponent, - openSourceLicenseComponent: dependency.openSourceLicenseComponent + appPushSettingFactory: dependency.appPushSettingComponent, + serviceTermsFactory: dependency.serviceTermsComponent, + privacyFactory: dependency.privacyComponent, + openSourceLicenseFactory: dependency.openSourceLicenseComponent ) } } diff --git a/Projects/Features/MyInfoFeature/Sources/ViewControllers/Setting/SettingViewController.swift b/Projects/Features/MyInfoFeature/Sources/ViewControllers/Setting/SettingViewController.swift index c4e7f76ee..69bc86b20 100644 --- a/Projects/Features/MyInfoFeature/Sources/ViewControllers/Setting/SettingViewController.swift +++ b/Projects/Features/MyInfoFeature/Sources/ViewControllers/Setting/SettingViewController.swift @@ -14,10 +14,10 @@ import Utility final class SettingViewController: BaseReactorViewController { private var textPopUpFactory: TextPopUpFactory! private var signInFactory: SignInFactory! - private var appPushSettingComponent: AppPushSettingComponent! - private var serviceTermsComponent: ServiceTermsComponent! - private var privacyComponent: PrivacyComponent! - private var openSourceLicenseComponent: OpenSourceLicenseComponent! + private var appPushSettingFactory: AppPushSettingFactory! + private var serviceTermsFactory: ServiceTermFactory! + private var privacyFactory: PrivacyFactory! + private var openSourceLicenseFactory: OpenSourceLicenseFactory! let settingView = SettingView() @@ -29,18 +29,18 @@ final class SettingViewController: BaseReactorViewController { reactor: SettingReactor, textPopUpFactory: TextPopUpFactory, signInFactory: SignInFactory, - appPushSettingComponent: AppPushSettingComponent, - serviceTermsComponent: ServiceTermsComponent, - privacyComponent: PrivacyComponent, - openSourceLicenseComponent: OpenSourceLicenseComponent + appPushSettingFactory: AppPushSettingFactory, + serviceTermsFactory: ServiceTermFactory, + privacyFactory: PrivacyFactory, + openSourceLicenseFactory: OpenSourceLicenseFactory ) -> SettingViewController { let viewController = SettingViewController(reactor: reactor) viewController.textPopUpFactory = textPopUpFactory viewController.signInFactory = signInFactory - viewController.appPushSettingComponent = appPushSettingComponent - viewController.serviceTermsComponent = serviceTermsComponent - viewController.privacyComponent = privacyComponent - viewController.openSourceLicenseComponent = openSourceLicenseComponent + viewController.appPushSettingFactory = appPushSettingFactory + viewController.serviceTermsFactory = serviceTermsFactory + viewController.privacyFactory = privacyFactory + viewController.openSourceLicenseFactory = openSourceLicenseFactory return viewController } @@ -52,18 +52,18 @@ final class SettingViewController: BaseReactorViewController { case .dismiss: owner.navigationController?.popViewController(animated: true) case .appPushSetting: - let vc = owner.appPushSettingComponent.makeView() + let vc = owner.appPushSettingFactory.makeView() owner.navigationController?.pushViewController(vc, animated: true) case .serviceTerms: - let vc = owner.serviceTermsComponent.makeView() + let vc = owner.serviceTermsFactory.makeView() vc.modalPresentationStyle = .overFullScreen owner.present(vc, animated: true) case .privacy: - let vc = owner.privacyComponent.makeView() + let vc = owner.privacyFactory.makeView() vc.modalPresentationStyle = .overFullScreen owner.present(vc, animated: true) case .openSource: - let vc = owner.openSourceLicenseComponent.makeView() + let vc = owner.openSourceLicenseFactory.makeView() owner.navigationController?.pushViewController(vc, animated: true) } } diff --git a/Projects/Features/MyInfoFeature/Testing/AppPushSettingComponentStub.swift b/Projects/Features/MyInfoFeature/Testing/AppPushSettingComponentStub.swift new file mode 100644 index 000000000..393d00c7d --- /dev/null +++ b/Projects/Features/MyInfoFeature/Testing/AppPushSettingComponentStub.swift @@ -0,0 +1,11 @@ +@testable import MyInfoFeature +import MyInfoFeatureInterface +import UIKit + +public final class AppPushSettingComponentStub: AppPushSettingFactory { + public func makeView() -> UIViewController { + return AppPushSettingViewController.viewController( + reactor: AppPushSettingReactor() + ) + } +} diff --git a/Projects/Features/MyInfoFeature/Testing/OpenSourceLicenseComponentStub.swift b/Projects/Features/MyInfoFeature/Testing/OpenSourceLicenseComponentStub.swift new file mode 100644 index 000000000..6f9d484b9 --- /dev/null +++ b/Projects/Features/MyInfoFeature/Testing/OpenSourceLicenseComponentStub.swift @@ -0,0 +1,12 @@ +import Foundation +@testable import MyInfoFeature +import MyInfoFeatureInterface +import UIKit + +public final class OpenSourceLicenseComponentStub: OpenSourceLicenseFactory { + public func makeView() -> UIViewController { + return OpenSourceLicenseViewController.viewController( + viewModel: OpenSourceLicenseViewModel() + ) + } +} diff --git a/Projects/Features/MyInfoFeature/Testing/SettingComponentStub.swift b/Projects/Features/MyInfoFeature/Testing/SettingComponentStub.swift new file mode 100644 index 000000000..df4449cbd --- /dev/null +++ b/Projects/Features/MyInfoFeature/Testing/SettingComponentStub.swift @@ -0,0 +1,28 @@ +import AuthDomainInterface +@testable import AuthDomainTesting +import BaseFeatureInterface +@testable import BaseFeatureTesting +@testable import MyInfoFeature +import MyInfoFeatureInterface +import SignInFeatureInterface +@testable import SignInFeatureTesting +import UIKit +import UserDomainInterface +@testable import UserDomainTesting + +public final class SettingComponentStub: SettingFactory { + public func makeView() -> UIViewController { + return SettingViewController.viewController( + reactor: SettingReactor( + withDrawUserInfoUseCase: WithdrawUserInfoUseCaseSpy(), + logoutUseCase: LogoutUseCaseSpy() + ), + textPopUpFactory: TextPopUpComponentStub(), + signInFactory: SignInComponentStub(), + appPushSettingFactory: AppPushSettingComponentStub(), + serviceTermsFactory: ServiceTermComponentStub(), + privacyFactory: PrivacyComponentStub(), + openSourceLicenseFactory: OpenSourceLicenseComponentStub() + ) + } +} diff --git a/Projects/Features/MyInfoFeature/Testing/testing.swift b/Projects/Features/MyInfoFeature/Testing/testing.swift index afdcf4b21..dae5e363f 100644 --- a/Projects/Features/MyInfoFeature/Testing/testing.swift +++ b/Projects/Features/MyInfoFeature/Testing/testing.swift @@ -1 +1 @@ -// for ㅅuist +// for tuist