@@ -10,49 +10,58 @@ import XCTest
10
10
@testable import ElementX
11
11
12
12
final class RoomListFiltersStateTests : XCTestCase {
13
+ var appSettings : AppSettings !
14
+
13
15
var state : RoomListFiltersState !
16
+ var allCasesWithoutLowPriority = RoomListFilter . allCases. filter { $0 != . lowPriority }
14
17
15
18
override func setUp( ) {
16
- state = RoomListFiltersState ( )
19
+ AppSettings . resetAllSettings ( )
20
+ appSettings = AppSettings ( )
21
+ state = RoomListFiltersState ( appSettings: appSettings)
22
+ }
23
+
24
+ override func tearDown( ) {
25
+ AppSettings . resetAllSettings ( )
17
26
}
18
27
19
28
func testInitialState( ) {
20
29
XCTAssertFalse ( state. isFiltering)
21
30
XCTAssertEqual ( state. activeFilters, [ ] )
22
- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
31
+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
23
32
}
24
33
25
34
func testSetAndUnsetFilters( ) {
26
35
state. activateFilter ( . unreads)
27
36
XCTAssertTrue ( state. isFiltering)
28
37
XCTAssertEqual ( state. activeFilters, [ . unreads] )
29
- XCTAssertEqual ( state. availableFilters, [ . people, . rooms, . favourites, . lowPriority ] )
38
+ XCTAssertEqual ( state. availableFilters, [ . people, . rooms, . favourites] )
30
39
state. deactivateFilter ( . unreads)
31
40
XCTAssertFalse ( state. isFiltering)
32
41
XCTAssertEqual ( state. activeFilters, [ ] )
33
- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
42
+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
34
43
}
35
44
36
45
func testMutuallyExclusiveFilters( ) {
37
46
state. activateFilter ( . people)
38
47
XCTAssertTrue ( state. isFiltering)
39
48
XCTAssertEqual ( state. activeFilters, [ . people] )
40
- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
49
+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
41
50
42
51
state. deactivateFilter ( . people)
43
52
XCTAssertFalse ( state. isFiltering)
44
53
XCTAssertEqual ( state. activeFilters, [ ] )
45
- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
54
+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
46
55
47
56
state. activateFilter ( . rooms)
48
57
XCTAssertTrue ( state. isFiltering)
49
58
XCTAssertEqual ( state. activeFilters, [ . rooms] )
50
- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
59
+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
51
60
52
61
state. activateFilter ( . unreads)
53
62
XCTAssertTrue ( state. isFiltering)
54
63
XCTAssertEqual ( state. activeFilters, [ . rooms, . unreads] )
55
- XCTAssertEqual ( state. availableFilters, [ . favourites, . lowPriority ] )
64
+ XCTAssertEqual ( state. availableFilters, [ . favourites] )
56
65
}
57
66
58
67
func testClearFilters( ) {
@@ -71,7 +80,7 @@ final class RoomListFiltersStateTests: XCTestCase {
71
80
state. clearFilters ( )
72
81
XCTAssertFalse ( state. isFiltering)
73
82
XCTAssertEqual ( state. activeFilters, [ ] )
74
- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
83
+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
75
84
}
76
85
77
86
func testOrder( ) {
@@ -81,52 +90,39 @@ final class RoomListFiltersStateTests: XCTestCase {
81
90
82
91
state. deactivateFilter ( . favourites)
83
92
XCTAssertEqual ( state. activeFilters, [ ] )
84
- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
93
+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
85
94
86
95
state. activateFilter ( . rooms)
87
96
XCTAssertEqual ( state. activeFilters, [ . rooms] )
88
- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
97
+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
89
98
90
99
state. activateFilter ( . unreads)
91
100
XCTAssertEqual ( state. activeFilters, [ . rooms, . unreads] )
92
- XCTAssertEqual ( state. availableFilters, [ . favourites, . lowPriority ] )
101
+ XCTAssertEqual ( state. availableFilters, [ . favourites] )
93
102
94
103
state. deactivateFilter ( . unreads)
95
104
XCTAssertEqual ( state. activeFilters, [ . rooms] )
96
- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
105
+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
97
106
}
98
107
99
- func testLowPriorityFilterIncompatibility( ) {
100
- // Test that low priority cannot be combined with favourites
108
+ // MARK: Low Priority feature flag
109
+
110
+ // Don't forget to add .lowPriority into the mix above when enabling the feature.
111
+ func testWithLowPriorityFeature( ) {
112
+ enableLowPriorityFeature ( )
113
+ XCTAssertFalse ( state. isFiltering)
114
+ XCTAssertEqual ( state. activeFilters, [ ] )
115
+ XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases)
116
+
101
117
state. activateFilter ( . lowPriority)
102
- XCTAssertTrue ( state. isFiltering)
103
118
XCTAssertEqual ( state. activeFilters, [ . lowPriority] )
104
119
XCTAssertEqual ( state. availableFilters, [ . unreads, . people, . rooms] )
105
-
106
- // Test that low priority cannot be combined with invites
107
- state. deactivateFilter ( . lowPriority)
108
- state. activateFilter ( . invites)
109
- XCTAssertTrue ( state. isFiltering)
110
- XCTAssertEqual ( state. activeFilters, [ . invites] )
111
- XCTAssertEqual ( state. availableFilters, [ ] )
112
-
113
- // Test that favourites cannot be combined with low priority
114
- state. deactivateFilter ( . invites)
115
- state. activateFilter ( . favourites)
116
- XCTAssertTrue ( state. isFiltering)
117
- XCTAssertEqual ( state. activeFilters, [ . favourites] )
118
- XCTAssertEqual ( state. availableFilters, [ . unreads, . people, . rooms] )
119
120
}
120
121
121
- func testLowPriorityFilterCompatibility( ) {
122
- // Test that low priority can be combined with other compatible filters
123
- state. activateFilter ( . lowPriority)
124
- state. activateFilter ( . unreads)
125
- XCTAssertEqual ( state. activeFilters, [ . lowPriority, . unreads] )
126
- XCTAssertEqual ( state. availableFilters, [ . people, . rooms] )
127
-
128
- state. activateFilter ( . people)
129
- XCTAssertEqual ( state. activeFilters, [ . lowPriority, . unreads, . people] )
130
- XCTAssertEqual ( state. availableFilters, [ ] )
122
+ // MARK: - Helpers
123
+
124
+ private func enableLowPriorityFeature( ) {
125
+ appSettings. lowPriorityFilterEnabled = true
126
+ state = RoomListFiltersState ( appSettings: appSettings)
131
127
}
132
128
}
0 commit comments