diff --git a/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/VerifyContactFeature.xcscheme b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/VerifyContactFeature.xcscheme new file mode 100644 index 0000000000000000000000000000000000000000..54cf617e7cd04c69782ad98a9873054c02982ec1 --- /dev/null +++ b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/VerifyContactFeature.xcscheme @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1400" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "VerifyContactFeature" + BuildableName = "VerifyContactFeature" + BlueprintName = "VerifyContactFeature" + ReferencedContainer = "container:"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> + <Testables> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "VerifyContactFeatureTests" + BuildableName = "VerifyContactFeatureTests" + BlueprintName = "VerifyContactFeatureTests" + ReferencedContainer = "container:"> + </BuildableReference> + </TestableReference> + </Testables> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "VerifyContactFeature" + BuildableName = "VerifyContactFeature" + BlueprintName = "VerifyContactFeature" + ReferencedContainer = "container:"> + </BuildableReference> + </MacroExpansion> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/Examples/xx-messenger/Package.swift b/Examples/xx-messenger/Package.swift index 57081f3ef7c5ae6abcf0cb130aa994d8a6460abc..8c7a1c90beeef33b8af3e6fe67b82fc92935ccca 100644 --- a/Examples/xx-messenger/Package.swift +++ b/Examples/xx-messenger/Package.swift @@ -27,6 +27,7 @@ let package = Package( .library(name: "RestoreFeature", targets: ["RestoreFeature"]), .library(name: "SendRequestFeature", targets: ["SendRequestFeature"]), .library(name: "UserSearchFeature", targets: ["UserSearchFeature"]), + .library(name: "VerifyContactFeature", targets: ["VerifyContactFeature"]), .library(name: "WelcomeFeature", targets: ["WelcomeFeature"]), ], dependencies: [ @@ -223,6 +224,18 @@ let package = Package( ], swiftSettings: swiftSettings ), + .target( + name: "VerifyContactFeature", + dependencies: [ + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + ] + ), + .testTarget( + name: "VerifyContactFeatureTests", + dependencies: [ + .target(name: "VerifyContactFeature"), + ] + ), .target( name: "WelcomeFeature", dependencies: [ diff --git a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme index 9d31f6f70a3f7dd3e87b943466febea60557f6af..71af5875f2d25543ac07848467cbd1417bde92cc 100644 --- a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme +++ b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme @@ -119,6 +119,16 @@ ReferencedContainer = "container:.."> </BuildableReference> </TestableReference> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "VerifyContactFeatureTests" + BuildableName = "VerifyContactFeatureTests" + BlueprintName = "VerifyContactFeatureTests" + ReferencedContainer = "container:.."> + </BuildableReference> + </TestableReference> <TestableReference skipped = "NO"> <BuildableReference diff --git a/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactFeature.swift b/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactFeature.swift new file mode 100644 index 0000000000000000000000000000000000000000..c657dd72d846af36a14979b8f3e89940889bd155 --- /dev/null +++ b/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactFeature.swift @@ -0,0 +1,28 @@ +import ComposableArchitecture +import XCTestDynamicOverlay + +public struct VerifyContactState: Equatable { + public init() {} +} + +public enum VerifyContactAction: Equatable { + case start +} + +public struct VerifyContactEnvironment { + public init() {} +} + +#if DEBUG +extension VerifyContactEnvironment { + public static let unimplemented = VerifyContactEnvironment() +} +#endif + +public let verifyContactReducer = Reducer<VerifyContactState, VerifyContactAction, VerifyContactEnvironment> +{ state, action, env in + switch action { + case .start: + return .none + } +} diff --git a/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactView.swift b/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactView.swift new file mode 100644 index 0000000000000000000000000000000000000000..ff2d76b2907c154df30f8008b6495057e60b5c3b --- /dev/null +++ b/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactView.swift @@ -0,0 +1,36 @@ +import ComposableArchitecture +import SwiftUI + +public struct VerifyContactView: View { + public init(store: Store<VerifyContactState, VerifyContactAction>) { + self.store = store + } + + let store: Store<VerifyContactState, VerifyContactAction> + + struct ViewState: Equatable { + init(state: VerifyContactState) {} + } + + public var body: some View { + WithViewStore(store, observe: ViewState.init) { viewStore in + Form { + + } + .navigationTitle("Verify Contact") + .task { viewStore.send(.start) } + } + } +} + +#if DEBUG +public struct VerifyContactView_Previews: PreviewProvider { + public static var previews: some View { + VerifyContactView(store: Store( + initialState: VerifyContactState(), + reducer: .empty, + environment: () + )) + } +} +#endif diff --git a/Examples/xx-messenger/Tests/VerifyContactFeatureTests/VerifyContactFeatureTests.swift b/Examples/xx-messenger/Tests/VerifyContactFeatureTests/VerifyContactFeatureTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..b0f41108a6536a602aea93b83bad20e9de1a5fe0 --- /dev/null +++ b/Examples/xx-messenger/Tests/VerifyContactFeatureTests/VerifyContactFeatureTests.swift @@ -0,0 +1,15 @@ +import ComposableArchitecture +import XCTest +@testable import VerifyContactFeature + +final class VerifyContactFeatureTests: XCTestCase { + func testStart() { + let store = TestStore( + initialState: VerifyContactState(), + reducer: verifyContactReducer, + environment: .unimplemented + ) + + store.send(.start) + } +}