forked from GoogleChromeLabs/text-app
/
settingsSpec.coffee
148 lines (96 loc) · 3.59 KB
/
settingsSpec.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
describe 'services settings', ->
settings = storage = null
# use all mocks
beforeEach module 'mocks'
beforeEach inject (_settings_, chromeStorage) ->
settings = _settings_
storage = chromeStorage
describe 'on', ->
it 'should call listeners when a property change', ->
themeSpy = jasmine.createSpy 'theme'
keyModeSpy = jasmine.createSpy 'keyMode'
softTabsSpy = jasmine.createSpy 'softTabs'
softWrapSpy = jasmine.createSpy 'softWrap'
settings.on 'theme', themeSpy
settings.on 'keyMode', keyModeSpy
settings.on 'softTabs', softTabsSpy
settings.on 'softWrap', softWrapSpy
value = {}
settings.theme = value
expect(themeSpy).toHaveBeenCalledWith value
settings.keyMode = value
expect(keyModeSpy).toHaveBeenCalledWith value
settings.softTabs = value
expect(softTabsSpy).toHaveBeenCalledWith value
settings.softWrap = value
expect(softWrapSpy).toHaveBeenCalledWith value
describe 'load', ->
it 'should load theme from storage', ->
storage._data.settings = theme: 'ace/theme/monokai'
settings.load()
storage._flush()
expect(settings.theme).toBeDefined()
expect(settings.theme.name).toBe 'Monokai'
it 'should load keyMode from storage', ->
storage._data.settings = keyMode: 'vim'
settings.load()
storage._flush()
expect(settings.keyMode).toBeDefined()
expect(settings.keyMode.name).toBe 'Vim'
it 'should load useSoftTabs from storage', ->
storage._data.settings = softTabs: -1
settings.load()
storage._flush()
expect(settings.softTabs).toBe -1
storage._data.settings = softTabs: 4
settings.load()
storage._flush()
expect(settings.softTabs).toBe 4
it 'should load softWrap', ->
storage._data.settings = softWrap: 0
settings.load()
storage._flush()
expect(settings.softWrap).toBe 0
storage._data.settings = softWrap: -1
settings.load()
storage._flush()
expect(settings.softWrap).toBe -1
it 'should set defaults', ->
settings.load()
storage._flush()
expect(settings.softTabs).toBe 2
expect(settings.keyMode.id).toBe 'ace'
expect(settings.theme.id).toBe 'ace/theme/dawn'
expect(settings.softWrap).toBe 0
it 'should $digest', inject ($rootScope) ->
softTabs = null
$rootScope.$watch -> softTabs = settings.softTabs
storage._data.settings = softTabs: 8
settings.load()
storage._flush()
expect(softTabs).toBe 8
describe 'store', ->
it 'should save theme to storage', inject (THEMES) ->
settings.theme = THEMES[0]
settings.store()
expect(storage._data.settings.theme).toBe 'ace/theme/chrome'
it 'should save keyMode to storage', inject (KEY_MODES) ->
settings.keyMode = KEY_MODES[1]
settings.store()
expect(storage._data.settings.keyMode).toBe 'vim'
it 'should save softTabs to storage', ->
settings.softTabs = 4
settings.store()
expect(storage._data.settings.softTabs).toBe 4
it 'should save softWrap to storage', ->
settings.softWrap = -1
settings.store()
expect(storage._data.settings.softWrap).toBe -1
settings.softWrap = 0
settings.store()
expect(storage._data.settings.softWrap).toBe 0
describe 'findById', ->
it 'should return first item with given id', ->
collection = [{id: 'some'}, {id: 'other'}, {id: 'some'}]
expect(findById collection, 'some').toBe collection[0]
expect(findById collection, 'other').toBe collection[1]