@@ -10,49 +10,58 @@ import XCTest
1010@testable import ElementX
1111
1212final class RoomListFiltersStateTests : XCTestCase {
13+ var appSettings : AppSettings !
14+
1315 var state : RoomListFiltersState !
16+ var allCasesWithoutLowPriority = RoomListFilter . allCases. filter { $0 != . lowPriority }
1417
1518 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 ( )
1726 }
1827
1928 func testInitialState( ) {
2029 XCTAssertFalse ( state. isFiltering)
2130 XCTAssertEqual ( state. activeFilters, [ ] )
22- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
31+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
2332 }
2433
2534 func testSetAndUnsetFilters( ) {
2635 state. activateFilter ( . unreads)
2736 XCTAssertTrue ( state. isFiltering)
2837 XCTAssertEqual ( state. activeFilters, [ . unreads] )
29- XCTAssertEqual ( state. availableFilters, [ . people, . rooms, . favourites, . lowPriority ] )
38+ XCTAssertEqual ( state. availableFilters, [ . people, . rooms, . favourites] )
3039 state. deactivateFilter ( . unreads)
3140 XCTAssertFalse ( state. isFiltering)
3241 XCTAssertEqual ( state. activeFilters, [ ] )
33- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
42+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
3443 }
3544
3645 func testMutuallyExclusiveFilters( ) {
3746 state. activateFilter ( . people)
3847 XCTAssertTrue ( state. isFiltering)
3948 XCTAssertEqual ( state. activeFilters, [ . people] )
40- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
49+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
4150
4251 state. deactivateFilter ( . people)
4352 XCTAssertFalse ( state. isFiltering)
4453 XCTAssertEqual ( state. activeFilters, [ ] )
45- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
54+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
4655
4756 state. activateFilter ( . rooms)
4857 XCTAssertTrue ( state. isFiltering)
4958 XCTAssertEqual ( state. activeFilters, [ . rooms] )
50- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
59+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
5160
5261 state. activateFilter ( . unreads)
5362 XCTAssertTrue ( state. isFiltering)
5463 XCTAssertEqual ( state. activeFilters, [ . rooms, . unreads] )
55- XCTAssertEqual ( state. availableFilters, [ . favourites, . lowPriority ] )
64+ XCTAssertEqual ( state. availableFilters, [ . favourites] )
5665 }
5766
5867 func testClearFilters( ) {
@@ -71,7 +80,7 @@ final class RoomListFiltersStateTests: XCTestCase {
7180 state. clearFilters ( )
7281 XCTAssertFalse ( state. isFiltering)
7382 XCTAssertEqual ( state. activeFilters, [ ] )
74- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
83+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
7584 }
7685
7786 func testOrder( ) {
@@ -81,52 +90,39 @@ final class RoomListFiltersStateTests: XCTestCase {
8190
8291 state. deactivateFilter ( . favourites)
8392 XCTAssertEqual ( state. activeFilters, [ ] )
84- XCTAssertEqual ( state. availableFilters, RoomListFilter . allCases )
93+ XCTAssertEqual ( state. availableFilters, allCasesWithoutLowPriority )
8594
8695 state. activateFilter ( . rooms)
8796 XCTAssertEqual ( state. activeFilters, [ . rooms] )
88- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
97+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
8998
9099 state. activateFilter ( . unreads)
91100 XCTAssertEqual ( state. activeFilters, [ . rooms, . unreads] )
92- XCTAssertEqual ( state. availableFilters, [ . favourites, . lowPriority ] )
101+ XCTAssertEqual ( state. availableFilters, [ . favourites] )
93102
94103 state. deactivateFilter ( . unreads)
95104 XCTAssertEqual ( state. activeFilters, [ . rooms] )
96- XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites, . lowPriority ] )
105+ XCTAssertEqual ( state. availableFilters, [ . unreads, . favourites] )
97106 }
98107
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+
101117 state. activateFilter ( . lowPriority)
102- XCTAssertTrue ( state. isFiltering)
103118 XCTAssertEqual ( state. activeFilters, [ . lowPriority] )
104119 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] )
119120 }
120121
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)
131127 }
132128}
0 commit comments