Skip to content

Commit 20089ee

Browse files
authored
Improve integration test readability (pointfreeco#2515)
* Improve integration test readability * Fix * Update to use switch store * wip
1 parent c08d59e commit 20089ee

File tree

7 files changed

+192
-141
lines changed

7 files changed

+192
-141
lines changed

Examples/Integration/Integration/EnumTestCase.swift

+24-20
Original file line numberDiff line numberDiff line change
@@ -51,26 +51,30 @@ struct EnumView: View {
5151
}
5252
}
5353
}
54-
IfLetStore(
55-
self.store.scope(state: \.$destination, action: { .destination($0) }),
56-
state: /Feature.Destination.State.feature1,
57-
action: { .feature1($0) }
58-
) { store in
59-
Section {
60-
BasicsView(store: store)
61-
} header: {
62-
Text("Feature 1")
63-
}
64-
}
65-
IfLetStore(
66-
self.store.scope(state: \.$destination, action: { .destination($0) }),
67-
state: /Feature.Destination.State.feature2,
68-
action: { .feature2($0) }
69-
) { store in
70-
Section {
71-
BasicsView(store: store)
72-
} header: {
73-
Text("Feature 2")
54+
IfLetStore(self.store.scope(state: \.$destination, action: { .destination($0) })) { store in
55+
SwitchStore(store) {
56+
switch $0 {
57+
case .feature1:
58+
CaseLet(
59+
/Feature.Destination.State.feature1, action: Feature.Destination.Action.feature1
60+
) { store in
61+
Section {
62+
BasicsView(store: store)
63+
} header: {
64+
Text("Feature 1")
65+
}
66+
}
67+
case .feature2:
68+
CaseLet(
69+
/Feature.Destination.State.feature2, action: Feature.Destination.Action.feature2
70+
) { store in
71+
Section {
72+
BasicsView(store: store)
73+
} header: {
74+
Text("Feature 2")
75+
}
76+
}
77+
}
7478
}
7579
}
7680
}

Examples/Integration/Integration/PresentationTestCase.swift

+3
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ struct PresentationView: View {
158158
return .none
159159
}
160160
}
161+
.ifLet(\.$destination, action: /Action.destination) {
162+
Destination()
163+
}
161164
.ifLet(\.$sheet, action: /Action.sheet) {
162165
BasicsView.Feature()
163166
}

Examples/Integration/IntegrationUITests/EnumTests.swift

+71-42
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ final class EnumTests: BaseIntegrationTests {
1818
"""
1919
BasicsView.body
2020
EnumView.body
21-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.init
22-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
23-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
24-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
25-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
21+
PresentationStoreOf<EnumView.Feature.Destination>.scope
2622
StoreOf<BasicsView.Feature>.init
2723
StoreOf<BasicsView.Feature>.init
28-
StoreOf<EnumView.Feature>.scope
24+
StoreOf<BasicsView.Feature?>.init
25+
StoreOf<BasicsView.Feature?>.init
26+
StoreOf<BasicsView.Feature?>.init
27+
StoreOf<BasicsView.Feature?>.init
28+
StoreOf<EnumView.Feature.Destination>.init
29+
StoreOf<EnumView.Feature.Destination>.init
30+
StoreOf<EnumView.Feature.Destination?>.init
31+
StoreOf<EnumView.Feature.Destination?>.scope
32+
StoreOf<EnumView.Feature.Destination?>.scope
2933
StoreOf<EnumView.Feature>.scope
3034
StoreOf<EnumView.Feature>.scope
3135
"""
@@ -35,13 +39,17 @@ final class EnumTests: BaseIntegrationTests {
3539
self.assertLogs {
3640
"""
3741
BasicsView.body
38-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
39-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
40-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
41-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
42-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
42+
PresentationStoreOf<EnumView.Feature.Destination>.scope
4343
StoreOf<BasicsView.Feature>.scope
44-
StoreOf<EnumView.Feature>.scope
44+
StoreOf<BasicsView.Feature?>.scope
45+
StoreOf<BasicsView.Feature?>.scope
46+
StoreOf<BasicsView.Feature?>.scope
47+
StoreOf<EnumView.Feature.Destination>.scope
48+
StoreOf<EnumView.Feature.Destination>.scope
49+
StoreOf<EnumView.Feature.Destination?>.scope
50+
StoreOf<EnumView.Feature.Destination?>.scope
51+
StoreOf<EnumView.Feature.Destination?>.scope
52+
StoreOf<EnumView.Feature.Destination?>.scope
4553
StoreOf<EnumView.Feature>.scope
4654
StoreOf<EnumView.Feature>.scope
4755
"""
@@ -57,14 +65,18 @@ final class EnumTests: BaseIntegrationTests {
5765
self.assertLogs {
5866
"""
5967
EnumView.body
60-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
61-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
62-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
63-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
64-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
65-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
68+
PresentationStoreOf<EnumView.Feature.Destination>.scope
6669
StoreOf<BasicsView.Feature>.scope
67-
StoreOf<EnumView.Feature>.scope
70+
StoreOf<BasicsView.Feature?>.scope
71+
StoreOf<BasicsView.Feature?>.scope
72+
StoreOf<BasicsView.Feature?>.scope
73+
StoreOf<BasicsView.Feature?>.scope
74+
StoreOf<EnumView.Feature.Destination>.scope
75+
StoreOf<EnumView.Feature.Destination>.scope
76+
StoreOf<EnumView.Feature.Destination?>.scope
77+
StoreOf<EnumView.Feature.Destination?>.scope
78+
StoreOf<EnumView.Feature.Destination?>.scope
79+
StoreOf<EnumView.Feature.Destination?>.scope
6880
StoreOf<EnumView.Feature>.scope
6981
StoreOf<EnumView.Feature>.scope
7082
"""
@@ -81,19 +93,28 @@ final class EnumTests: BaseIntegrationTests {
8193
"""
8294
BasicsView.body
8395
EnumView.body
84-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.init
85-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
86-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
87-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
88-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
89-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
90-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
91-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
92-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
96+
PresentationStoreOf<EnumView.Feature.Destination>.scope
9397
StoreOf<BasicsView.Feature>.init
9498
StoreOf<BasicsView.Feature>.init
9599
StoreOf<BasicsView.Feature>.scope
96-
StoreOf<EnumView.Feature>.scope
100+
StoreOf<BasicsView.Feature?>.deinit
101+
StoreOf<BasicsView.Feature?>.init
102+
StoreOf<BasicsView.Feature?>.init
103+
StoreOf<BasicsView.Feature?>.init
104+
StoreOf<BasicsView.Feature?>.init
105+
StoreOf<BasicsView.Feature?>.init
106+
StoreOf<BasicsView.Feature?>.init
107+
StoreOf<BasicsView.Feature?>.init
108+
StoreOf<BasicsView.Feature?>.scope
109+
StoreOf<BasicsView.Feature?>.scope
110+
StoreOf<BasicsView.Feature?>.scope
111+
StoreOf<BasicsView.Feature?>.scope
112+
StoreOf<EnumView.Feature.Destination>.scope
113+
StoreOf<EnumView.Feature.Destination>.scope
114+
StoreOf<EnumView.Feature.Destination?>.scope
115+
StoreOf<EnumView.Feature.Destination?>.scope
116+
StoreOf<EnumView.Feature.Destination?>.scope
117+
StoreOf<EnumView.Feature.Destination?>.scope
97118
StoreOf<EnumView.Feature>.scope
98119
StoreOf<EnumView.Feature>.scope
99120
"""
@@ -109,21 +130,29 @@ final class EnumTests: BaseIntegrationTests {
109130
self.assertLogs {
110131
"""
111132
EnumView.body
112-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
113-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
114-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
115-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
116-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
117-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
118-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
119-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
120-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
121-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
122-
Store<PresentationState<EnumView.Feature.Destination.State>, PresentationAction<EnumView.Feature.Destination.Action>>.scope
133+
PresentationStoreOf<EnumView.Feature.Destination>.scope
134+
PresentationStoreOf<EnumView.Feature.Destination>.scope
123135
StoreOf<BasicsView.Feature>.scope
124136
StoreOf<BasicsView.Feature>.scope
125-
StoreOf<EnumView.Feature>.scope
126-
StoreOf<EnumView.Feature>.scope
137+
StoreOf<BasicsView.Feature?>.scope
138+
StoreOf<BasicsView.Feature?>.scope
139+
StoreOf<BasicsView.Feature?>.scope
140+
StoreOf<BasicsView.Feature?>.scope
141+
StoreOf<BasicsView.Feature?>.scope
142+
StoreOf<BasicsView.Feature?>.scope
143+
StoreOf<BasicsView.Feature?>.scope
144+
StoreOf<EnumView.Feature.Destination>.scope
145+
StoreOf<EnumView.Feature.Destination>.scope
146+
StoreOf<EnumView.Feature.Destination>.scope
147+
StoreOf<EnumView.Feature.Destination>.scope
148+
StoreOf<EnumView.Feature.Destination?>.scope
149+
StoreOf<EnumView.Feature.Destination?>.scope
150+
StoreOf<EnumView.Feature.Destination?>.scope
151+
StoreOf<EnumView.Feature.Destination?>.scope
152+
StoreOf<EnumView.Feature.Destination?>.scope
153+
StoreOf<EnumView.Feature.Destination?>.scope
154+
StoreOf<EnumView.Feature.Destination?>.scope
155+
StoreOf<EnumView.Feature.Destination?>.scope
127156
StoreOf<EnumView.Feature>.scope
128157
StoreOf<EnumView.Feature>.scope
129158
StoreOf<EnumView.Feature>.scope

Examples/Integration/IntegrationUITests/NavigationTests.swift

+11-11
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ final class NavigationTests: BaseIntegrationTests {
1616
self.assertLogs {
1717
"""
1818
BasicsView.body
19-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.init
19+
StackStoreOf<BasicsView.Feature>.init
2020
StoreOf<BasicsView.Feature>.init
2121
StoreOf<BasicsView.Feature>.init
2222
"""
@@ -25,7 +25,7 @@ final class NavigationTests: BaseIntegrationTests {
2525
self.assertLogs {
2626
"""
2727
BasicsView.body
28-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
28+
StackStoreOf<BasicsView.Feature>.scope
2929
StoreOf<BasicsView.Feature>.scope
3030
StoreOf<NavigationTestCaseView.Feature>.scope
3131
"""
@@ -43,15 +43,15 @@ final class NavigationTests: BaseIntegrationTests {
4343
self.assertLogs {
4444
"""
4545
BasicsView.body
46-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
47-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
48-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
49-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
50-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
51-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
52-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
53-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
54-
Store<StackState<BasicsView.Feature.State>, StackAction<BasicsView.Feature.State, BasicsView.Feature.Action>>.scope
46+
StackStoreOf<BasicsView.Feature>.scope
47+
StackStoreOf<BasicsView.Feature>.scope
48+
StackStoreOf<BasicsView.Feature>.scope
49+
StackStoreOf<BasicsView.Feature>.scope
50+
StackStoreOf<BasicsView.Feature>.scope
51+
StackStoreOf<BasicsView.Feature>.scope
52+
StackStoreOf<BasicsView.Feature>.scope
53+
StackStoreOf<BasicsView.Feature>.scope
54+
StackStoreOf<BasicsView.Feature>.scope
5555
StoreOf<BasicsView.Feature>.scope
5656
StoreOf<BasicsView.Feature>.scope
5757
StoreOf<BasicsView.Feature>.scope

Examples/Integration/IntegrationUITests/OptionalTests.swift

+12-12
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ final class OptionalTests: BaseIntegrationTests {
1717
"""
1818
BasicsView.body
1919
OptionalView.body
20-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.init
21-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
22-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
23-
Store<PresentationState<BasicsView.Feature.State>, PresentationAction<BasicsView.Feature.Action>>.scope
20+
PresentationStoreOf<BasicsView.Feature>.scope
2421
StoreOf<BasicsView.Feature>.init
2522
StoreOf<BasicsView.Feature>.init
23+
StoreOf<BasicsView.Feature?>.init
24+
StoreOf<BasicsView.Feature?>.scope
25+
StoreOf<BasicsView.Feature?>.scope
2626
StoreOf<OptionalView.Feature>.scope
2727
StoreOf<OptionalView.Feature>.scope
2828
"""
@@ -32,11 +32,11 @@ final class OptionalTests: BaseIntegrationTests {
3232
"""
3333
BasicsView.body
3434
OptionalView.body
35-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
36-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
37-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
38-
Store<PresentationState<BasicsView.Feature.State>, PresentationAction<BasicsView.Feature.Action>>.scope
35+
PresentationStoreOf<BasicsView.Feature>.scope
3936
StoreOf<BasicsView.Feature>.scope
37+
StoreOf<BasicsView.Feature?>.scope
38+
StoreOf<BasicsView.Feature?>.scope
39+
StoreOf<BasicsView.Feature?>.scope
4040
StoreOf<OptionalView.Feature>.scope
4141
StoreOf<OptionalView.Feature>.scope
4242
"""
@@ -60,11 +60,11 @@ final class OptionalTests: BaseIntegrationTests {
6060
"""
6161
BasicsView.body
6262
OptionalView.body
63-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
64-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
65-
Store<BasicsView.Feature.State?, BasicsView.Feature.Action>.scope
66-
Store<PresentationState<BasicsView.Feature.State>, PresentationAction<BasicsView.Feature.Action>>.scope
63+
PresentationStoreOf<BasicsView.Feature>.scope
6764
StoreOf<BasicsView.Feature>.scope
65+
StoreOf<BasicsView.Feature?>.scope
66+
StoreOf<BasicsView.Feature?>.scope
67+
StoreOf<BasicsView.Feature?>.scope
6868
StoreOf<OptionalView.Feature>.scope
6969
StoreOf<OptionalView.Feature>.scope
7070
"""

0 commit comments

Comments
 (0)