From 95e14799e7a3de8906cd3e13cdd99b4e0082ca29 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Tue, 6 Sep 2022 12:49:56 +0200 Subject: [PATCH] Add UserSearchFeature library --- .../xcschemes/UserSearchFeature.xcscheme | 78 +++++++++++++++++++ Examples/xx-messenger/Package.swift | 15 ++++ .../xcschemes/XXMessenger.xcscheme | 10 +++ .../UserSearchFeature/UserSearchFeature.swift | 20 +++++ .../UserSearchFeature/UserSearchView.swift | 32 ++++++++ .../UserSearchFeatureTests.swift | 8 ++ 6 files changed, 163 insertions(+) create mode 100644 Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/UserSearchFeature.xcscheme create mode 100644 Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift create mode 100644 Examples/xx-messenger/Sources/UserSearchFeature/UserSearchView.swift create mode 100644 Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift diff --git a/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/UserSearchFeature.xcscheme b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/UserSearchFeature.xcscheme new file mode 100644 index 00000000..2f807166 --- /dev/null +++ b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/UserSearchFeature.xcscheme @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1340" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "UserSearchFeature" + BuildableName = "UserSearchFeature" + BlueprintName = "UserSearchFeature" + 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 = "UserSearchFeatureTests" + BuildableName = "UserSearchFeatureTests" + BlueprintName = "UserSearchFeatureTests" + 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 = "UserSearchFeature" + BuildableName = "UserSearchFeature" + BlueprintName = "UserSearchFeature" + 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 8f1e26f7..1db1bdf6 100644 --- a/Examples/xx-messenger/Package.swift +++ b/Examples/xx-messenger/Package.swift @@ -23,6 +23,7 @@ let package = Package( .library(name: "HomeFeature", targets: ["HomeFeature"]), .library(name: "RegisterFeature", targets: ["RegisterFeature"]), .library(name: "RestoreFeature", targets: ["RestoreFeature"]), + .library(name: "UserSearchFeature", targets: ["UserSearchFeature"]), .library(name: "WelcomeFeature", targets: ["WelcomeFeature"]), ], dependencies: [ @@ -134,6 +135,20 @@ let package = Package( ], swiftSettings: swiftSettings ), + .target( + name: "UserSearchFeature", + dependencies: [ + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + ], + swiftSettings: swiftSettings + ), + .testTarget( + name: "UserSearchFeatureTests", + dependencies: [ + .target(name: "UserSearchFeature"), + ], + swiftSettings: swiftSettings + ), .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 669debfc..041cf3f7 100644 --- a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme +++ b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme @@ -79,6 +79,16 @@ ReferencedContainer = "container:.."> </BuildableReference> </TestableReference> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "UserSearchFeatureTests" + BuildableName = "UserSearchFeatureTests" + BlueprintName = "UserSearchFeatureTests" + ReferencedContainer = "container:.."> + </BuildableReference> + </TestableReference> <TestableReference skipped = "NO"> <BuildableReference diff --git a/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift new file mode 100644 index 00000000..43b82dfd --- /dev/null +++ b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift @@ -0,0 +1,20 @@ +import ComposableArchitecture +import XCTestDynamicOverlay + +public struct UserSearchState: Equatable { + public init() {} +} + +public enum UserSearchAction: Equatable {} + +public struct UserSearchEnvironment { + public init() {} +} + +#if DEBUG +extension UserSearchEnvironment { + public static let unimplemented = UserSearchEnvironment() +} +#endif + +public let userSearchReducer = Reducer<UserSearchState, UserSearchAction, UserSearchEnvironment>.empty diff --git a/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchView.swift b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchView.swift new file mode 100644 index 00000000..27f94bfa --- /dev/null +++ b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchView.swift @@ -0,0 +1,32 @@ +import ComposableArchitecture +import SwiftUI + +public struct UserSearchView: View { + public init(store: Store<UserSearchState, UserSearchAction>) { + self.store = store + } + + let store: Store<UserSearchState, UserSearchAction> + + struct ViewState: Equatable { + init(state: UserSearchState) {} + } + + public var body: some View { + WithViewStore(store.scope(state: ViewState.init)) { viewStore in + Text("UserSearchView") + } + } +} + +#if DEBUG +public struct UserSearchView_Previews: PreviewProvider { + public static var previews: some View { + UserSearchView(store: Store( + initialState: UserSearchState(), + reducer: .empty, + environment: () + )) + } +} +#endif diff --git a/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift b/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift new file mode 100644 index 00000000..11dfb317 --- /dev/null +++ b/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift @@ -0,0 +1,8 @@ +import XCTest +@testable import UserSearchFeature + +final class UserSearchFeatureTests: XCTestCase { + func testExample() { + XCTAssert(true) + } +} -- GitLab