mercury-rails 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/mercury.js +1 -0
- data/app/assets/javascripts/mercury/lightview.js.coffee +26 -12
- data/app/assets/javascripts/mercury/locales/ar.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/da.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/de.locale.js.coffee +4 -6
- data/app/assets/javascripts/mercury/locales/es.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/example.local.js.coffee +3 -1
- data/app/assets/javascripts/mercury/locales/fr.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/it.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/ko.local.js.coffee +4 -6
- data/app/assets/javascripts/mercury/locales/nl.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/pt.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/sv.local.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/swedish_chef.locale.js.coffee +3 -5
- data/app/assets/javascripts/mercury/locales/zh.local.js.coffee +3 -5
- data/app/assets/javascripts/mercury/mercury.js.coffee +1 -1
- data/app/assets/javascripts/mercury/modal.js.coffee +38 -23
- data/app/assets/javascripts/mercury/modals/htmleditor.js.coffee +1 -0
- data/app/assets/javascripts/mercury/modals/insertcharacter.js.coffee +1 -0
- data/app/assets/javascripts/mercury/modals/insertlink.js.coffee +111 -60
- data/app/assets/javascripts/mercury/modals/insertmedia.js.coffee +80 -35
- data/app/assets/javascripts/mercury/modals/insertsnippet.js.coffee +1 -0
- data/app/assets/javascripts/mercury/modals/inserttable.js.coffee +59 -51
- data/app/assets/javascripts/mercury/page_editor.js.coffee +1 -1
- data/app/assets/javascripts/mercury/regions/full.coffee +1 -1
- data/app/assets/javascripts/mercury/regions/image.js.coffee +1 -1
- data/app/assets/javascripts/mercury/regions/markdown.coffee +1 -1
- data/app/assets/javascripts/mercury/regions/simple.js.coffee +1 -1
- data/app/assets/javascripts/mercury/regions/snippets.js.coffee +1 -1
- data/app/assets/javascripts/mercury/table_editor.js.coffee +16 -0
- data/app/assets/javascripts/mercury/toolbar.js.coffee +2 -2
- data/app/assets/stylesheets/mercury.css +0 -5
- data/app/assets/stylesheets/mercury/bootstrap-ish.css +1367 -0
- data/app/assets/stylesheets/mercury/bootstrap-overrides.css +60 -0
- data/app/assets/stylesheets/mercury/lightview.css +2 -52
- data/app/assets/stylesheets/mercury/mercury.css +2 -2
- data/app/assets/stylesheets/mercury/modal.css +13 -31
- data/app/assets/stylesheets/mercury/uploader.css +3 -3
- data/app/views/mercury/modals/htmleditor.html +2 -6
- data/app/views/mercury/modals/link.html +70 -64
- data/app/views/mercury/modals/media.html +80 -71
- data/app/views/mercury/modals/table.html +79 -73
- data/app/views/mercury/snippets/example/options.html.erb +11 -30
- data/features/loading/loading.feature +1 -1
- data/features/regions/full/inserting_links.feature +4 -4
- data/features/regions/full/inserting_media.feature +3 -3
- data/features/step_definitions/mercury_steps.rb +5 -5
- data/features/support/env.rb +1 -1
- data/lib/mercury/version.rb +1 -1
- data/spec/javascripts/mercury/lightview_spec.js.coffee +136 -129
- data/spec/javascripts/mercury/modal_spec.js.coffee +143 -139
- data/spec/javascripts/mercury/modals/insertlink_spec.js.coffee +105 -31
- data/spec/javascripts/mercury/modals/insertmedia_spec.js.coffee +76 -38
- data/spec/javascripts/mercury/modals/inserttable_spec.js.coffee +32 -35
- data/spec/javascripts/mercury/toolbar_spec.js.coffee +8 -0
- data/spec/javascripts/templates/mercury/modals/insertlink.html +58 -21
- data/spec/javascripts/templates/mercury/modals/insertmedia.html +69 -27
- data/spec/javascripts/templates/mercury/modals/inserttable.html +66 -20
- metadata +5 -5
- data/app/assets/stylesheets/mercury/buttons.css +0 -73
- data/app/assets/stylesheets/mercury/form.css +0 -125
@@ -11,8 +11,7 @@ describe "Mercury.modal", ->
|
|
11
11
|
|
12
12
|
afterEach ->
|
13
13
|
Mercury.config.localization.enabled = false
|
14
|
-
Mercury.modal.
|
15
|
-
Mercury.modal.visible = false
|
14
|
+
Mercury.modal.instance = false
|
16
15
|
$(window).unbind('mercury:refresh')
|
17
16
|
$(window).unbind('mercury:resize')
|
18
17
|
$(document).unbind('keydown')
|
@@ -20,104 +19,109 @@ describe "Mercury.modal", ->
|
|
20
19
|
describe "singleton method", ->
|
21
20
|
|
22
21
|
beforeEach ->
|
23
|
-
@showSpy = spyOn(Mercury.
|
22
|
+
@showSpy = spyOn(Mercury.Modal.prototype, 'show').andCallFake(=>)
|
24
23
|
|
25
24
|
it "calls show", ->
|
26
25
|
Mercury.modal('/foo')
|
27
26
|
expect(@showSpy.callCount).toEqual(1)
|
28
27
|
|
29
|
-
it "returns
|
28
|
+
it "returns an instance", ->
|
30
29
|
ret = Mercury.modal('/foo')
|
31
|
-
expect(ret).toEqual(Mercury.modal)
|
30
|
+
expect(ret).toEqual(Mercury.modal.instance)
|
31
|
+
expect(ret).toEqual(new Mercury.Modal('/foo'))
|
32
32
|
|
33
33
|
|
34
34
|
describe "#show", ->
|
35
35
|
|
36
36
|
beforeEach ->
|
37
|
-
@initializeSpy = spyOn(Mercury.
|
38
|
-
@updateSpy = spyOn(Mercury.
|
39
|
-
@appearSpy = spyOn(Mercury.
|
37
|
+
@initializeSpy = spyOn(Mercury.Modal.prototype, 'initializeModal').andCallFake(=>)
|
38
|
+
@updateSpy = spyOn(Mercury.Modal.prototype, 'update').andCallFake(=>)
|
39
|
+
@appearSpy = spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
40
40
|
|
41
41
|
it "triggers the focus:window event", ->
|
42
42
|
spy = spyOn(Mercury, 'trigger').andCallFake(=>)
|
43
|
-
Mercury.
|
43
|
+
new Mercury.Modal().show()
|
44
44
|
expect(spy.callCount).toEqual(1)
|
45
45
|
expect(spy.argsForCall[0]).toEqual(['focus:window'])
|
46
46
|
|
47
47
|
it "calls initialize", ->
|
48
|
-
Mercury.
|
48
|
+
new Mercury.Modal().show()
|
49
49
|
expect(@initializeSpy.callCount).toEqual(1)
|
50
50
|
|
51
51
|
describe "if already visible", ->
|
52
52
|
|
53
53
|
it "calls update", ->
|
54
|
-
|
55
|
-
|
54
|
+
modal = new Mercury.Modal()
|
55
|
+
modal.visible = true
|
56
|
+
modal.show()
|
56
57
|
expect(@updateSpy.callCount).toEqual(1)
|
57
58
|
|
58
59
|
describe "if not visible", ->
|
59
60
|
|
60
61
|
it "calls appear", ->
|
61
|
-
Mercury.
|
62
|
+
modal = new Mercury.Modal()
|
63
|
+
modal.visible = false
|
64
|
+
modal.show()
|
62
65
|
expect(@appearSpy.callCount).toEqual(1)
|
63
66
|
|
64
67
|
|
65
|
-
describe "#
|
68
|
+
describe "#initializeModal", ->
|
66
69
|
|
67
70
|
beforeEach ->
|
68
|
-
@buildSpy = spyOn(Mercury.
|
69
|
-
@bindEventsSpy = spyOn(Mercury.
|
71
|
+
@buildSpy = spyOn(Mercury.Modal.prototype, 'build').andCallFake(=>)
|
72
|
+
@bindEventsSpy = spyOn(Mercury.Modal.prototype, 'bindEvents').andCallFake(=>)
|
73
|
+
@modal = new Mercury.Modal()
|
70
74
|
|
71
75
|
it "calls build", ->
|
72
|
-
|
76
|
+
@modal.initializeModal()
|
73
77
|
expect(@buildSpy.callCount).toEqual(1)
|
74
78
|
|
75
79
|
it "calls bindEvents", ->
|
76
|
-
|
80
|
+
@modal.initializeModal()
|
77
81
|
expect(@bindEventsSpy.callCount).toEqual(1)
|
78
82
|
|
79
83
|
it "does nothing if already initialized", ->
|
80
|
-
|
81
|
-
|
84
|
+
@modal.initialized = true
|
85
|
+
@modal.initializeModal()
|
82
86
|
expect(@buildSpy.callCount).toEqual(0)
|
83
87
|
|
84
88
|
it "sets initialized to true", ->
|
85
|
-
|
86
|
-
expect(
|
89
|
+
@modal.initializeModal()
|
90
|
+
expect(@modal.initialized).toEqual(true)
|
87
91
|
|
88
92
|
|
89
93
|
describe "#build", ->
|
90
94
|
|
91
95
|
beforeEach ->
|
92
|
-
|
96
|
+
@modal = new Mercury.Modal('', {appendTo: $('#test')})
|
93
97
|
|
94
98
|
it "builds an element", ->
|
95
|
-
|
99
|
+
@modal.build()
|
96
100
|
expect($('#test .mercury-modal').length).toEqual(1)
|
97
101
|
|
98
102
|
it "builds an overlay element", ->
|
99
|
-
|
103
|
+
@modal.build()
|
100
104
|
expect($('#test .mercury-modal-overlay').length).toEqual(1)
|
101
105
|
|
102
106
|
it "creates a titleElement", ->
|
103
|
-
|
107
|
+
@modal.build()
|
104
108
|
expect($('#test .mercury-modal-title').length).toEqual(1)
|
105
109
|
expect($('#test .mercury-modal-title').html()).toMatch(/<span><\/span><a>.+<\/a>/)
|
106
|
-
expect(
|
110
|
+
expect(@modal.titleElement).toBeDefined()
|
107
111
|
|
108
112
|
it "creates a contentContainerElement", ->
|
109
|
-
|
113
|
+
@modal.build()
|
110
114
|
expect($('#test .mercury-modal-content-container').length).toEqual(1)
|
111
|
-
expect(
|
115
|
+
expect(@modal.contentContainerElement).toBeDefined()
|
112
116
|
|
113
117
|
it "creates a contentElement", ->
|
114
|
-
|
118
|
+
@modal.build()
|
115
119
|
expect($('#test .mercury-modal-content-container .mercury-modal-content').length).toEqual(1)
|
116
|
-
expect(
|
120
|
+
expect(@modal.contentElement).toBeDefined()
|
117
121
|
|
118
122
|
it "appends to any element", ->
|
119
|
-
|
120
|
-
|
123
|
+
@modal.options = {appendTo: $('#modal_container')}
|
124
|
+
@modal.build()
|
121
125
|
expect($('#modal_container .mercury-modal').length).toEqual(1)
|
122
126
|
expect($('#modal_container .mercury-modal-overlay').length).toEqual(1)
|
123
127
|
|
@@ -125,13 +129,13 @@ describe "Mercury.modal", ->
|
|
125
129
|
describe "observed events", ->
|
126
130
|
|
127
131
|
beforeEach ->
|
128
|
-
spyOn(Mercury.
|
129
|
-
Mercury.modal('/foo', {appendTo: $('#test')})
|
132
|
+
spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
133
|
+
@modal = Mercury.modal('/foo', {appendTo: $('#test')})
|
130
134
|
|
131
135
|
describe "custom event: refresh", ->
|
132
136
|
|
133
137
|
it "calls resize telling it stay visible", ->
|
134
|
-
spy = spyOn(
|
138
|
+
spy = spyOn(@modal, 'resize').andCallFake(=>)
|
135
139
|
Mercury.trigger('refresh')
|
136
140
|
expect(spy.callCount).toEqual(1)
|
137
141
|
expect(spy.argsForCall[0]).toEqual([true])
|
@@ -139,39 +143,39 @@ describe "Mercury.modal", ->
|
|
139
143
|
describe "custom event: resize", ->
|
140
144
|
|
141
145
|
it "calls position", ->
|
142
|
-
spy = spyOn(
|
146
|
+
spy = spyOn(@modal, 'position').andCallFake(=>)
|
143
147
|
Mercury.trigger('resize')
|
144
148
|
expect(spy.callCount).toEqual(1)
|
145
149
|
|
146
150
|
describe "clicking on the overlay (options.allowHideUsingOverlay = true)", ->
|
147
151
|
|
148
152
|
it "calls hide", ->
|
149
|
-
|
150
|
-
spy = spyOn(
|
153
|
+
@modal.options.allowHideUsingOverlay = true
|
154
|
+
spy = spyOn(@modal, 'hide').andCallFake(=>)
|
151
155
|
jasmine.simulate.click($('.mercury-modal-overlay').get(0))
|
152
156
|
expect(spy.callCount).toEqual(1)
|
153
157
|
|
154
158
|
describe "clicking on the overlay (options.allowHideUsingOverlay = false)", ->
|
155
159
|
|
156
160
|
it "doesn't call hide", ->
|
157
|
-
spy = spyOn(
|
161
|
+
spy = spyOn(@modal, 'hide').andCallFake(=>)
|
158
162
|
jasmine.simulate.click($('.mercury-modal-overlay').get(0))
|
159
163
|
expect(spy.callCount).toEqual(0)
|
160
164
|
|
161
165
|
describe "clicking on the close button", ->
|
162
166
|
|
163
167
|
it "calls hide", ->
|
164
|
-
spy = spyOn(
|
168
|
+
spy = spyOn(@modal, 'hide').andCallFake(=>)
|
165
169
|
jasmine.simulate.click($('.mercury-modal-title a').get(0))
|
166
170
|
expect(spy.callCount).toEqual(1)
|
167
171
|
|
168
172
|
describe "pressing esc on document", ->
|
169
173
|
|
170
174
|
beforeEach ->
|
171
|
-
|
172
|
-
|
175
|
+
@modal.visible = true
|
176
|
+
|
173
177
|
it "calls hide", ->
|
174
|
-
spy = spyOn(
|
178
|
+
spy = spyOn(@modal, 'hide').andCallFake(=>)
|
175
179
|
jasmine.simulate.keydown(document, {keyCode: 27})
|
176
180
|
expect(spy.callCount).toEqual(1)
|
177
181
|
|
@@ -179,8 +183,8 @@ describe "Mercury.modal", ->
|
|
179
183
|
|
180
184
|
it "sets a success that will load the contents of the response", ->
|
181
185
|
options = {}
|
182
|
-
spy = spyOn(
|
183
|
-
|
186
|
+
spy = spyOn(@modal, 'loadContent').andCallFake(=>)
|
187
|
+
@modal.element.trigger('ajax:beforeSend', [null, options])
|
184
188
|
expect(options.success).toBeDefined()
|
185
189
|
options.success('new content')
|
186
190
|
expect(spy.callCount).toEqual(1)
|
@@ -190,81 +194,83 @@ describe "Mercury.modal", ->
|
|
190
194
|
describe "#appear", ->
|
191
195
|
|
192
196
|
beforeEach ->
|
193
|
-
Mercury.
|
194
|
-
|
195
|
-
|
196
|
-
@
|
197
|
-
|
197
|
+
@modal = new Mercury.Modal('/blank.html', {appendTo: $('#test')})
|
198
|
+
@modal.visible = true
|
199
|
+
spyOn(@modal, 'update').andCallFake(=>)
|
200
|
+
@loadSpy = spyOn(@modal, 'load').andCallFake(=>)
|
201
|
+
@positionSpy = spyOn(@modal, 'position').andCallFake(=>)
|
202
|
+
@modal.show()
|
198
203
|
|
199
204
|
it "calls position", ->
|
200
|
-
|
205
|
+
@modal.appear()
|
201
206
|
expect(@positionSpy.callCount).toEqual(1)
|
202
207
|
|
203
208
|
it "shows the overlay", ->
|
204
209
|
expect($('.mercury-modal-overlay').css('display')).toEqual('none')
|
205
|
-
|
210
|
+
@modal.appear()
|
206
211
|
expect($('.mercury-modal-overlay').css('display')).toEqual('block')
|
207
212
|
|
208
213
|
it "animates the overlay to full opacity", ->
|
209
214
|
expect($('.mercury-modal-overlay').css('opacity')).toEqual('0')
|
210
|
-
|
215
|
+
@modal.appear()
|
211
216
|
expect($('.mercury-modal-overlay').css('opacity')).toEqual('1')
|
212
217
|
|
213
218
|
it "calls setTitle", ->
|
214
|
-
spy = spyOn(
|
215
|
-
|
219
|
+
spy = spyOn(@modal, 'setTitle').andCallFake(=>)
|
220
|
+
@modal.appear()
|
216
221
|
expect(spy.callCount).toEqual(1)
|
217
222
|
|
218
223
|
it "shows the element", ->
|
219
224
|
expect($('.mercury-modal').css('display')).toEqual('none')
|
220
|
-
|
225
|
+
@modal.appear()
|
221
226
|
expect($('.mercury-modal').css('display')).toEqual('block')
|
222
227
|
|
223
228
|
it "animates the element down", ->
|
224
229
|
expect($('.mercury-modal').css('top')).toEqual('-100px')
|
225
|
-
|
230
|
+
@modal.appear()
|
226
231
|
expect($('.mercury-modal').css('top')).toEqual('0px')
|
227
232
|
|
228
233
|
it "sets visible to true", ->
|
229
|
-
|
230
|
-
|
231
|
-
expect(
|
234
|
+
@modal.visible = false
|
235
|
+
@modal.appear()
|
236
|
+
expect(@modal.visible).toEqual(true)
|
232
237
|
|
233
238
|
it "calls load", ->
|
234
|
-
|
239
|
+
@modal.appear()
|
235
240
|
expect(@loadSpy.callCount).toEqual(1)
|
236
241
|
|
237
242
|
|
238
243
|
describe "#resize", ->
|
239
244
|
|
240
245
|
beforeEach ->
|
241
|
-
|
242
|
-
|
243
|
-
|
246
|
+
@modal = new Mercury.Modal('/blank.html', {appendTo: $('#test')})
|
247
|
+
spyOn(@modal, 'appear').andCallFake(=>)
|
248
|
+
@modal.show()
|
249
|
+
@modal.contentPane = $()
|
244
250
|
|
245
251
|
it "will keep the content element visible if asked to do so", ->
|
246
252
|
$('.mercury-modal-content').css('visibility', 'visible')
|
247
|
-
|
253
|
+
@modal.resize(true)
|
248
254
|
expect($('.mercury-modal-content').css('visibility')).toEqual('visible')
|
249
255
|
|
250
256
|
it "resizes the element and adjusts it's position", ->
|
251
257
|
Mercury.displayRect.width = 1000
|
252
258
|
$('.mercury-modal').css({display: 'block', visibility: 'visible', top: 0})
|
253
|
-
|
259
|
+
@modal.resize()
|
254
260
|
expect($('.mercury-modal').width()).toEqual(400)
|
255
261
|
expect($('.mercury-modal').offset()).toEqual({top: 0, left: 300})
|
256
262
|
expect($('.mercury-modal').height()).toBeGreaterThan(20)
|
257
263
|
|
258
264
|
it "respects minWidth provided in options", ->
|
259
|
-
|
260
|
-
|
265
|
+
@modal.options.minWidth = 500
|
266
|
+
@modal.resize()
|
261
267
|
expect($('.mercury-modal').width()).toEqual(500)
|
262
268
|
|
263
269
|
|
264
270
|
describe "#position", ->
|
265
271
|
|
266
272
|
beforeEach ->
|
267
|
-
spyOn(Mercury.
|
273
|
+
spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
268
274
|
|
269
275
|
# todo: test this
|
270
276
|
it "positions the element", ->
|
@@ -273,10 +279,11 @@ describe "Mercury.modal", ->
|
|
273
279
|
describe "#update", ->
|
274
280
|
|
275
281
|
beforeEach ->
|
276
|
-
@
|
277
|
-
@
|
278
|
-
@
|
279
|
-
|
282
|
+
@modal = new Mercury.Modal()
|
283
|
+
@resetSpy = spyOn(@modal, 'reset').andCallFake(=>)
|
284
|
+
@resizeSpy = spyOn(@modal, 'resize').andCallFake(=>)
|
285
|
+
@loadSpy = spyOn(@modal, 'load').andCallFake(=>)
|
286
|
+
@modal.update()
|
280
287
|
|
281
288
|
it "calls reset", ->
|
282
289
|
expect(@resetSpy.callCount).toEqual(1)
|
@@ -291,23 +298,23 @@ describe "Mercury.modal", ->
|
|
291
298
|
describe "#load", ->
|
292
299
|
|
293
300
|
beforeEach ->
|
294
|
-
spyOn(Mercury.
|
301
|
+
spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
295
302
|
@ajaxSpy = spyOn($, 'ajax')
|
296
|
-
Mercury.modal('/blank.html', {appendTo: $('#test')})
|
303
|
+
@modal = Mercury.modal('/blank.html', {appendTo: $('#test')})
|
297
304
|
|
298
305
|
it "does nothing if there's no url", ->
|
299
|
-
|
306
|
+
@modal.url = null
|
300
307
|
$('.mercury-modal').removeClass('loading')
|
301
|
-
|
308
|
+
@modal.load()
|
302
309
|
expect($('.mercury-modal').hasClass('loading')).toEqual(false)
|
303
310
|
|
304
311
|
it "sets the loading class on the element", ->
|
305
|
-
|
312
|
+
@modal.load()
|
306
313
|
expect($('.mercury-modal').hasClass('loading')).toEqual(true)
|
307
314
|
|
308
315
|
it "calls setTitle", ->
|
309
|
-
spy = spyOn(
|
310
|
-
|
316
|
+
spy = spyOn(@modal, 'setTitle').andCallFake(=>)
|
317
|
+
@modal.load()
|
311
318
|
expect(spy.callCount).toEqual(1)
|
312
319
|
|
313
320
|
describe "on a preloaded view", ->
|
@@ -320,8 +327,8 @@ describe "Mercury.modal", ->
|
|
320
327
|
Mercury.preloadedViews = {}
|
321
328
|
|
322
329
|
it "calls loadContent with the content in the preloaded view", ->
|
323
|
-
spy = spyOn(
|
324
|
-
|
330
|
+
spy = spyOn(@modal, 'loadContent').andCallFake(=>)
|
331
|
+
@modal.load()
|
325
332
|
expect(@setTimeoutSpy.callCount).toEqual(1)
|
326
333
|
expect(spy.callCount).toEqual(1)
|
327
334
|
|
@@ -330,7 +337,7 @@ describe "Mercury.modal", ->
|
|
330
337
|
it "makes an ajax request", ->
|
331
338
|
@ajaxSpy.andCallFake(=>)
|
332
339
|
spyOn(Mercury, 'ajaxHeaders').andCallFake(=> {'X-CSRFToken': 'f00'})
|
333
|
-
|
340
|
+
@modal.load()
|
334
341
|
expect(@ajaxSpy.callCount).toEqual(1)
|
335
342
|
expect(@ajaxSpy.argsForCall[0][1]['headers']).toEqual({'X-CSRFToken': 'f00'})
|
336
343
|
|
@@ -340,8 +347,8 @@ describe "Mercury.modal", ->
|
|
340
347
|
@ajaxSpy.andCallFake((url, options) => options.success('return value'))
|
341
348
|
|
342
349
|
it "calls loadContent and passes the returned data", ->
|
343
|
-
spy = spyOn(
|
344
|
-
|
350
|
+
spy = spyOn(@modal, 'loadContent').andCallFake(=>)
|
351
|
+
@modal.load()
|
345
352
|
expect(spy.callCount).toEqual(1)
|
346
353
|
expect(spy.argsForCall[0]).toEqual(['return value'])
|
347
354
|
|
@@ -352,14 +359,14 @@ describe "Mercury.modal", ->
|
|
352
359
|
|
353
360
|
it "calls hide", ->
|
354
361
|
spyOn(window, 'alert').andCallFake(=>)
|
355
|
-
spy = spyOn(
|
356
|
-
|
362
|
+
spy = spyOn(@modal, 'hide').andCallFake(=>)
|
363
|
+
@modal.load()
|
357
364
|
expect(spy.callCount).toEqual(1)
|
358
365
|
|
359
366
|
it "alerts an error message", ->
|
360
|
-
spyOn(
|
367
|
+
spyOn(@modal, 'hide').andCallFake(=>)
|
361
368
|
spy = spyOn(window, 'alert').andCallFake(=>)
|
362
|
-
|
369
|
+
@modal.load()
|
363
370
|
expect(spy.callCount).toEqual(1)
|
364
371
|
expect(spy.argsForCall[0]).toEqual(['Mercury was unable to load /blank.html for the modal.'])
|
365
372
|
|
@@ -367,98 +374,97 @@ describe "Mercury.modal", ->
|
|
367
374
|
describe "#loadContent", ->
|
368
375
|
|
369
376
|
beforeEach ->
|
370
|
-
spyOn(Mercury.
|
371
|
-
@resizeSpy = spyOn(Mercury.
|
372
|
-
Mercury.modal('/blank.html', {appendTo: $('#test'), title: 'title'})
|
377
|
+
spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
378
|
+
@resizeSpy = spyOn(Mercury.Modal.prototype, 'resize').andCallFake(=>)
|
379
|
+
@modal = Mercury.modal('/blank.html', {appendTo: $('#test'), title: 'title'})
|
373
380
|
|
374
381
|
it "accepts options and sets them to the instance options", ->
|
375
|
-
|
376
|
-
expect(
|
382
|
+
@modal.loadContent('content', {title: 'title'})
|
383
|
+
expect(@modal.options).toEqual({title: 'title'})
|
377
384
|
|
378
385
|
it "calls initialize", ->
|
379
|
-
spy = spyOn(
|
380
|
-
|
386
|
+
spy = spyOn(@modal, 'initializeModal').andCallFake(=>)
|
387
|
+
@modal.loadContent('content')
|
381
388
|
expect(spy.callCount).toEqual(1)
|
382
389
|
|
383
390
|
it "calls setTitle", ->
|
384
|
-
spy = spyOn(
|
385
|
-
|
391
|
+
spy = spyOn(@modal, 'setTitle').andCallFake(=>)
|
392
|
+
@modal.loadContent('content')
|
386
393
|
expect(spy.callCount).toEqual(1)
|
387
394
|
|
388
395
|
it "sets loaded to true", ->
|
389
|
-
|
390
|
-
|
391
|
-
expect(
|
396
|
+
@modal.loaded = false
|
397
|
+
@modal.loadContent('content')
|
398
|
+
expect(@modal.loaded).toEqual(true)
|
392
399
|
|
393
400
|
it "removes the loading class", ->
|
394
401
|
$('.mercury-modal').addClass('loading')
|
395
|
-
|
402
|
+
@modal.loadContent('content')
|
396
403
|
expect($('.mercury-modal').hasClass('loading')).toEqual(false)
|
397
404
|
|
398
405
|
it "sets the content elements html to whatever was passed", ->
|
399
|
-
|
406
|
+
@modal.loadContent('<span>content</span>')
|
400
407
|
expect($('.mercury-modal-content').html()).toEqual('<span>content</span>')
|
401
408
|
|
402
409
|
it "hides the contentElement", ->
|
403
410
|
$('.mercury-modal-content').css('display', 'block')
|
404
|
-
|
411
|
+
@modal.loadContent('content')
|
405
412
|
expect($('.mercury-modal-content').css('display')).toEqual('none')
|
406
413
|
expect($('.mercury-modal-content').css('visibility')).toEqual('hidden')
|
407
414
|
|
408
415
|
it "finds the content panes and control elements in case they were added with the content", ->
|
409
|
-
|
410
|
-
expect(
|
411
|
-
expect(
|
416
|
+
@modal.loadContent('<div class="mercury-display-pane-container"></div><div class="mercury-display-controls"></div>')
|
417
|
+
expect(@modal.contentPane.get(0)).toEqual($('#test .mercury-display-pane-container').get(0))
|
418
|
+
expect(@modal.contentControl.get(0)).toEqual($('#test .mercury-display-controls').get(0))
|
412
419
|
|
413
420
|
it "calls an afterLoad callback (if provided in options)", ->
|
414
421
|
callCount = 0
|
415
|
-
|
422
|
+
@modal.loadContent('content', {afterLoad: => callCount += 1})
|
416
423
|
expect(callCount).toEqual(1)
|
417
424
|
|
418
425
|
it "calls a handler method if one is set in modalHandlers", ->
|
419
426
|
callCount = 0
|
420
427
|
Mercury.modalHandlers['foo'] = => callCount += 1
|
421
|
-
|
428
|
+
@modal.loadContent('content', {handler: 'foo'})
|
422
429
|
expect(callCount).toEqual(1)
|
423
430
|
|
424
431
|
it "translates the content if configured", ->
|
425
432
|
Mercury.config.localization.enabled = true
|
426
|
-
|
433
|
+
@modal.loadContent('<span>foo</span>')
|
427
434
|
expect($('.mercury-modal-content').html()).toEqual('<span>Bork!</span>')
|
428
435
|
|
429
436
|
it "calls resize", ->
|
430
|
-
|
437
|
+
@modal.loadContent('content')
|
431
438
|
expect(@resizeSpy.callCount).toEqual(1)
|
432
439
|
|
433
440
|
|
434
441
|
describe "#setTitle", ->
|
435
442
|
|
436
443
|
beforeEach ->
|
437
|
-
spyOn(Mercury.
|
438
|
-
Mercury.modal('/blank.html', {appendTo: $('#test'), title: 'title'})
|
444
|
+
spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
445
|
+
@modal = Mercury.modal('/blank.html', {appendTo: $('#test'), title: 'title'})
|
439
446
|
|
440
447
|
it "sets the the title contents to what was provided in the options", ->
|
441
|
-
|
442
|
-
|
448
|
+
@modal.options = {title: 'new title'}
|
449
|
+
@modal.setTitle()
|
443
450
|
expect($('.mercury-modal-title span').html()).toEqual('new title')
|
444
451
|
expect($('.mercury-modal-title a').css('display')).toEqual('inline')
|
445
452
|
|
446
453
|
it "hides the close button if the options.closeButton is false", ->
|
447
|
-
|
448
|
-
|
454
|
+
@modal.options = {title: 'new title', closeButton: false}
|
455
|
+
@modal.setTitle()
|
449
456
|
expect($('.mercury-modal-title a').css('display')).toEqual('none')
|
450
457
|
|
451
458
|
|
452
|
-
|
453
459
|
describe "#reset", ->
|
454
460
|
|
455
461
|
beforeEach ->
|
456
|
-
spyOn(Mercury.
|
457
|
-
Mercury.modal('/blank.html', {appendTo: $('#test'), title: 'title'})
|
462
|
+
spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
463
|
+
@modal = Mercury.modal('/blank.html', {appendTo: $('#test'), title: 'title'})
|
458
464
|
|
459
465
|
it "clears the title and content elements", ->
|
460
466
|
$('.mercury-modal-content').html('content')
|
461
|
-
|
467
|
+
@modal.reset()
|
462
468
|
expect($('.mercury-modal-content').html()).toEqual('')
|
463
469
|
expect($('.mercury-modal-title span').html()).toEqual('')
|
464
470
|
|
@@ -466,39 +472,37 @@ describe "Mercury.modal", ->
|
|
466
472
|
describe "#hide", ->
|
467
473
|
|
468
474
|
beforeEach ->
|
469
|
-
spyOn(Mercury.
|
470
|
-
Mercury.modal('/blank.html', {appendTo: $('#test')})
|
475
|
+
spyOn(Mercury.Modal.prototype, 'appear').andCallFake(=>)
|
476
|
+
@modal = Mercury.modal('/blank.html', {appendTo: $('#test')})
|
471
477
|
|
472
478
|
it "triggers the focus:frame event", ->
|
473
479
|
spy = spyOn(Mercury, 'trigger').andCallFake(=>)
|
474
|
-
|
480
|
+
@modal.hide()
|
475
481
|
expect(spy.callCount).toEqual(1)
|
476
482
|
expect(spy.argsForCall[0]).toEqual(['focus:frame'])
|
477
483
|
|
478
484
|
it "hides the element", ->
|
479
|
-
|
480
|
-
|
485
|
+
@modal.element.css('display:block')
|
486
|
+
@modal.hide()
|
481
487
|
expect($('.mercury-modal').css('display')).toEqual('none')
|
482
488
|
|
483
489
|
it "hides the overlay element", ->
|
484
|
-
|
485
|
-
|
490
|
+
@modal.overlay.css('display:block')
|
491
|
+
@modal.hide()
|
486
492
|
expect($('.mercury-modal-overlay').css('display')).toEqual('none')
|
487
493
|
|
488
494
|
it "calls reset", ->
|
489
|
-
spy = spyOn(
|
490
|
-
|
495
|
+
spy = spyOn(@modal, 'reset').andCallFake(=>)
|
496
|
+
@modal.hide()
|
491
497
|
expect(spy.callCount).toEqual(1)
|
492
498
|
|
493
499
|
it "sets visible to false", ->
|
494
|
-
|
495
|
-
|
496
|
-
expect(
|
500
|
+
@modal.visible = true
|
501
|
+
@modal.hide()
|
502
|
+
expect(@modal.visible).toEqual(false)
|
497
503
|
|
498
504
|
it "does nothing if the modal is still in the process of showing", ->
|
499
|
-
spy = spyOn(
|
500
|
-
|
501
|
-
|
505
|
+
spy = spyOn(@modal, 'reset').andCallFake(=>)
|
506
|
+
@modal.showing = true
|
507
|
+
@modal.hide()
|
502
508
|
expect(spy.callCount).toEqual(0)
|
503
|
-
|
504
|
-
|