mercury-rails 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
|