1
+ import { saveToLocalStorage , storeBuilder } from "../store/store" ;
2
+ import {
3
+ removeSelectedAggregator ,
4
+ selectAggregator ,
5
+ settingsSlice ,
6
+ setUpdateInterval ,
7
+ toggleAutoUpdate
8
+ } from "../store/settingsSlice" ;
9
+ import default_available_aggregators from "../aggregators-list" ;
10
+ import { initStore , resetLocation , setLocationToAggregator } from "./helpers" ;
11
+
12
+ describe ( 'Store Initialization' , ( ) => {
13
+ beforeEach ( ( ) => {
14
+ resetLocation ( ) ;
15
+ } ) ;
16
+
17
+ it ( 'init with settings initialState without local storage' , ( ) => {
18
+ const store = initStore ( ) ;
19
+
20
+ expect ( store . getState ( ) . settings ) . toEqual ( settingsSlice . getInitialState ( ) ) ;
21
+ } ) ;
22
+
23
+ it ( 'init with local storage saved state' , ( ) => {
24
+ let aggregators = [ ...default_available_aggregators , "https://aggregator.test" ] ;
25
+ let expected = {
26
+ settings : {
27
+ ...settingsSlice . getInitialState ( ) ,
28
+ selectedAggregator : aggregators . at ( aggregators . length - 1 ) ,
29
+ availableAggregators : aggregators ,
30
+ updateInterval : 12345 ,
31
+ }
32
+ } ;
33
+ saveToLocalStorage ( expected ) ;
34
+ const store = storeBuilder ( ) ;
35
+
36
+ expect ( store . getState ( ) ) . toEqual ( expected ) ;
37
+ } ) ;
38
+
39
+ it ( 'init with local storage and default aggregator in url' , ( ) => {
40
+ const aggregatorInUrl = default_available_aggregators . at ( 1 ) ;
41
+ setLocationToAggregator ( aggregatorInUrl ) ;
42
+ let aggregators = [ ...default_available_aggregators , "https://aggregator.test" ] ;
43
+ let expected = {
44
+ settings : {
45
+ ...settingsSlice . getInitialState ( ) ,
46
+ selectedAggregator : aggregators . at ( aggregators . length - 1 ) ,
47
+ availableAggregators : aggregators ,
48
+ updateInterval : 12345 ,
49
+ }
50
+ } ;
51
+ saveToLocalStorage ( expected ) ;
52
+ expected . settings . selectedAggregator = aggregatorInUrl ;
53
+ const store = storeBuilder ( ) ;
54
+
55
+ expect ( store . getState ( ) ) . toEqual ( expected ) ;
56
+ } ) ;
57
+
58
+ it ( 'Can toggle autoUpdate' , ( ) => {
59
+ const store = initStore ( ) ;
60
+
61
+ store . dispatch ( toggleAutoUpdate ( ) ) ;
62
+ expect ( store . getState ( ) . settings . autoUpdate ) . toEqual ( false ) ;
63
+
64
+ store . dispatch ( toggleAutoUpdate ( ) ) ;
65
+ expect ( store . getState ( ) . settings . autoUpdate ) . toEqual ( true ) ;
66
+ } ) ;
67
+
68
+ it ( 'Can change updateInterval' , ( ) => {
69
+ const store = initStore ( ) ;
70
+ const expected = 124325 ;
71
+
72
+ store . dispatch ( setUpdateInterval ( expected ) ) ;
73
+ expect ( store . getState ( ) . settings . updateInterval ) . toEqual ( expected ) ;
74
+ } ) ;
75
+
76
+ it ( 'Can change selectedAggregator' , ( ) => {
77
+ const store = initStore ( ) ;
78
+ const expected = default_available_aggregators [ 2 ] ;
79
+
80
+ store . dispatch ( selectAggregator ( expected ) ) ;
81
+ expect ( store . getState ( ) . settings . selectedAggregator ) . toEqual ( expected ) ;
82
+ } ) ;
83
+
84
+ it ( 'Add a custom aggregator when selectAggregator is called with an unknown aggregator' , ( ) => {
85
+ const store = initStore ( ) ;
86
+ const expected = "http://aggregator.test" ;
87
+
88
+ store . dispatch ( selectAggregator ( expected ) ) ;
89
+ expect ( store . getState ( ) . settings . selectedAggregator ) . toEqual ( expected ) ;
90
+ expect ( store . getState ( ) . settings . availableAggregators ) . toContain ( expected ) ;
91
+ } ) ;
92
+
93
+ it ( 'Can\'t remove a default aggregator' , ( ) => {
94
+ const store = initStore ( ) ;
95
+
96
+ store . dispatch ( removeSelectedAggregator ( ) ) ;
97
+ expect ( store . getState ( ) . settings . availableAggregators ) . toContain ( default_available_aggregators [ 0 ] ) ;
98
+ } ) ;
99
+
100
+ it ( 'Can remove a custom aggregator' , ( ) => {
101
+ const customAggregator = "http://aggregator.test" ;
102
+ const store = initStore ( {
103
+ settings : {
104
+ ...settingsSlice . getInitialState ( ) ,
105
+ selectedAggregator : customAggregator ,
106
+ availableAggregators : [ ...default_available_aggregators , customAggregator ] ,
107
+ }
108
+ } ) ;
109
+
110
+ store . dispatch ( removeSelectedAggregator ( ) ) ;
111
+ expect ( store . getState ( ) . settings . availableAggregators ) . not . toContain ( customAggregator ) ;
112
+ } ) ;
113
+ } ) ;
0 commit comments