mirror of
https://github.com/pointfreeco/swift-composable-architecture.git
synced 2025-12-20 09:11:33 +01:00
* docs
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* Fix invalid states count for 3 optionals and typos (#2094)
* wip
* wip
* more dismisseffect docs
* fixed some references
* navigation doc corrections
* more nav docs
* fix cancellation tests in release mode
* wrap some tests in #if DEBUG since they are testing expected failures
* update UUIDs in tests to use shorter initializer
* fixed a todo
* wip
* fix merge errors
* wip
* fix
* wip
* wip
* fixing a bunch of todos
* get rid of rawvalue in StackElementID
* more todos
* NavLinkStore docs
* fix swift 5.6 stuff
* fix some standups tests
* fix
* clean up
* docs fix
* fixes
* wip
* 5.6 fix
* wip
* wip
* dont parallelize tests
* updated demo readmes
* wip
* Use ObservedObject instead of StateObject for alert/dialog modifiers.
* integration tests for bad dismissal behavior
* check for runtime warnings in every integration test
* wip
* wip
* wip
* fix
* wip
* wip
* wip
* wip
* wip
* wip
* Drop a bunch of Hashables.
* some nav bug fixes
* wip
* wip
* wip
* fix
* fix
* wip
* wip
* Simplify recording test.
* add concurrent async test
* fix
* wip
* Refact how detail dismisses itself.
* fix
* 5.6 fix
* wip
* wip
* wip
* wip
* Add TestStore.assert.
* Revert "Add TestStore.assert."
This reverts commit a892cccc66.
* add Ukrainian Readme.md (#2121)
* Add TestStore.assert. (#2123)
* Add TestStore.assert.
* wip
* Update Sources/ComposableArchitecture/TestStore.swift
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
* Update Sources/ComposableArchitecture/Documentation.docc/Extensions/TestStore.md
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
* fix tests
---------
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
* Run swift-format
* push for store.finish and presentation
* wip
* move docs around
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* Add case subscripts
* wip
* wip
* wip
* 5.7-only
* wip
* wip
* wip
* wip
* fix
* revert store.finish task cancellation
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* add test for presentation scope
* wip
* wip
* wip
* wip
* wip
* cleanup
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* Rename ReducerProtocol.swift to Reducer.swift (#2206)
* Hard-deprecate old SwitchStore initializers/overloads
* wip
* wip
* Resolve CaseStudies crash (#2258)
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* Bump timeout for CI
* wip
* Remove old deprecations
* Simplify test store
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* images for tutorials
* wip
* wip
* Remove deprecated alert APIs
* Bump dependencies
* wip
---------
Co-authored-by: Brandon Williams <mbrandonw@hey.com>
Co-authored-by: 유재호 <y73447jh@gmail.com>
Co-authored-by: Dmytro <barabashdmyto@gmail.com>
Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>
Co-authored-by: mbrandonw <mbrandonw@users.noreply.github.com>
105 lines
2.7 KiB
Swift
105 lines
2.7 KiB
Swift
import ComposableArchitecture
|
|
import XCTest
|
|
|
|
@testable import SwiftUICaseStudies
|
|
|
|
@MainActor
|
|
final class SharedStateTests: XCTestCase {
|
|
func testTabRestoredOnReset() async {
|
|
let store = TestStore(initialState: SharedState.State()) {
|
|
SharedState()
|
|
}
|
|
|
|
await store.send(.selectTab(.profile)) {
|
|
$0.currentTab = .profile
|
|
$0.profile = SharedState.Profile.State(
|
|
currentTab: .profile, count: 0, maxCount: 0, minCount: 0, numberOfCounts: 0
|
|
)
|
|
}
|
|
await store.send(.profile(.resetCounterButtonTapped)) {
|
|
$0.currentTab = .counter
|
|
$0.profile = SharedState.Profile.State(
|
|
currentTab: .counter, count: 0, maxCount: 0, minCount: 0, numberOfCounts: 0
|
|
)
|
|
}
|
|
}
|
|
|
|
func testTabSelection() async {
|
|
let store = TestStore(initialState: SharedState.State()) {
|
|
SharedState()
|
|
}
|
|
|
|
await store.send(.selectTab(.profile)) {
|
|
$0.currentTab = .profile
|
|
$0.profile = SharedState.Profile.State(
|
|
currentTab: .profile, count: 0, maxCount: 0, minCount: 0, numberOfCounts: 0
|
|
)
|
|
}
|
|
await store.send(.selectTab(.counter)) {
|
|
$0.currentTab = .counter
|
|
$0.profile = SharedState.Profile.State(
|
|
currentTab: .counter, count: 0, maxCount: 0, minCount: 0, numberOfCounts: 0
|
|
)
|
|
}
|
|
}
|
|
|
|
func testSharedCounts() async {
|
|
let store = TestStore(initialState: SharedState.State()) {
|
|
SharedState()
|
|
}
|
|
|
|
await store.send(.counter(.incrementButtonTapped)) {
|
|
$0.counter.count = 1
|
|
$0.counter.maxCount = 1
|
|
$0.counter.numberOfCounts = 1
|
|
}
|
|
await store.send(.counter(.decrementButtonTapped)) {
|
|
$0.counter.count = 0
|
|
$0.counter.numberOfCounts = 2
|
|
}
|
|
await store.send(.counter(.decrementButtonTapped)) {
|
|
$0.counter.count = -1
|
|
$0.counter.minCount = -1
|
|
$0.counter.numberOfCounts = 3
|
|
}
|
|
}
|
|
|
|
func testIsPrimeWhenPrime() async {
|
|
let store = TestStore(
|
|
initialState: SharedState.Counter.State(
|
|
alert: nil, count: 3, maxCount: 0, minCount: 0, numberOfCounts: 0
|
|
)
|
|
) {
|
|
SharedState.Counter()
|
|
}
|
|
|
|
await store.send(.isPrimeButtonTapped) {
|
|
$0.alert = AlertState {
|
|
TextState("👍 The number 3 is prime!")
|
|
}
|
|
}
|
|
await store.send(.alert(.dismiss)) {
|
|
$0.alert = nil
|
|
}
|
|
}
|
|
|
|
func testIsPrimeWhenNotPrime() async {
|
|
let store = TestStore(
|
|
initialState: SharedState.Counter.State(
|
|
alert: nil, count: 6, maxCount: 0, minCount: 0, numberOfCounts: 0
|
|
)
|
|
) {
|
|
SharedState.Counter()
|
|
}
|
|
|
|
await store.send(.isPrimeButtonTapped) {
|
|
$0.alert = AlertState {
|
|
TextState("👎 The number 6 is not prime :(")
|
|
}
|
|
}
|
|
await store.send(.alert(.dismiss)) {
|
|
$0.alert = nil
|
|
}
|
|
}
|
|
}
|