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
@@ -8,12 +8,13 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
8
8
|
element: $('#test')
|
9
9
|
hide: ->
|
10
10
|
resize: ->
|
11
|
+
@insertLink = $.extend(@modal, Mercury.modalHandlers.insertLink)
|
11
12
|
window.mercuryInstance = {document: $(document)}
|
12
13
|
|
13
14
|
describe "initializing", ->
|
14
15
|
|
15
16
|
beforeEach ->
|
16
|
-
|
17
|
+
@insertLink.initialize()
|
17
18
|
|
18
19
|
it "loads all links with a name into the existing bookmarks pulldown", ->
|
19
20
|
options = $('#link_existing_bookmark').html()
|
@@ -25,28 +26,35 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
25
26
|
describe "clicking on a radio button (in a label)", ->
|
26
27
|
|
27
28
|
beforeEach ->
|
28
|
-
|
29
|
+
@insertLink.initialize()
|
29
30
|
|
30
31
|
it "focuses the next input with a selectable class", ->
|
31
32
|
spy = spyOn($.fn, 'focus').andCallFake(=>)
|
32
|
-
jasmine.simulate.click($('
|
33
|
+
jasmine.simulate.click($('input[value=external_url]').get(0))
|
33
34
|
expect(spy.callCount).toEqual(1)
|
34
35
|
|
35
36
|
|
36
37
|
describe "focusing an input", ->
|
37
38
|
|
38
39
|
beforeEach ->
|
39
|
-
|
40
|
+
@insertLink.initialize()
|
40
41
|
|
41
42
|
it "checks the corresponding checkbox", ->
|
42
43
|
$('#link_existing_bookmark').focus()
|
43
|
-
expect($('
|
44
|
+
expect($('input[value=existing_bookmark]').get(0).checked).toEqual(true)
|
44
45
|
|
45
46
|
|
46
47
|
describe "changing the link target", ->
|
47
48
|
|
48
49
|
it "shows options for whatever was selected", ->
|
50
|
+
$('#link_target').val('popup')
|
51
|
+
@insertLink.onChangeTarget()
|
52
|
+
expect($('#popup_options').is(':visible')).toEqual(true)
|
53
|
+
|
49
54
|
it "calls resize", ->
|
55
|
+
spy = spyOn(@modal, 'resize')
|
56
|
+
@insertLink.onChangeTarget()
|
57
|
+
expect(spy.callCount).toEqual(1)
|
50
58
|
|
51
59
|
|
52
60
|
describe "when editing", ->
|
@@ -56,12 +64,11 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
56
64
|
beforeEach ->
|
57
65
|
Mercury.region = selection: => {
|
58
66
|
commonAncestor: -> $('<a>', {href: 'http://cnn.com', target: '_top'}).html('foo'),
|
59
|
-
|
60
|
-
|
61
|
-
Mercury.modalHandlers.insertLink.call(@modal)
|
67
|
+
}
|
68
|
+
@insertLink.initialize()
|
62
69
|
|
63
70
|
it "hides the link text input", ->
|
64
|
-
expect($('#link_text_container').
|
71
|
+
expect($('#link_text_container').is(':visible')).toEqual(false)
|
65
72
|
|
66
73
|
it "pre-fills the link url input", ->
|
67
74
|
expect($('#link_external_url').val()).toEqual('http://cnn.com')
|
@@ -69,17 +76,16 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
69
76
|
it "selects the target if one's available", ->
|
70
77
|
expect($('#link_target').val()).toEqual('_top')
|
71
78
|
|
72
|
-
it "fills the content", ->
|
73
|
-
expect($('#link_text').val()).toEqual('content')
|
74
|
-
|
75
79
|
describe "a javascript popup link", ->
|
76
80
|
|
77
81
|
beforeEach ->
|
78
|
-
Mercury.region = selection: => {
|
79
|
-
|
82
|
+
Mercury.region = selection: => {
|
83
|
+
commonAncestor: -> $('<a>', {href: "javascript:void(window.open('http://cnn.com', 'popup_window', 'width=100,height=42,menubar=no,toolbar=no'))"}).html('foo')
|
84
|
+
}
|
85
|
+
@insertLink.initialize()
|
80
86
|
|
81
87
|
it "hides the link text input", ->
|
82
|
-
expect($('#link_text_container').
|
88
|
+
expect($('#link_text_container').is(':visible')).toEqual(false)
|
83
89
|
|
84
90
|
it "pre-fills the link url input", ->
|
85
91
|
expect($('#link_external_url').val()).toEqual('http://cnn.com')
|
@@ -94,11 +100,13 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
94
100
|
describe "a bookmark link", ->
|
95
101
|
|
96
102
|
beforeEach ->
|
97
|
-
Mercury.region = selection: => {
|
98
|
-
|
103
|
+
Mercury.region = selection: => {
|
104
|
+
commonAncestor: -> $('<a>', {href: '#link2'}).html('foo')
|
105
|
+
}
|
106
|
+
@insertLink.initialize()
|
99
107
|
|
100
108
|
it "hides the link text input", ->
|
101
|
-
expect($('#link_text_container').
|
109
|
+
expect($('#link_text_container').is(':visible')).toEqual(false)
|
102
110
|
|
103
111
|
it "checks the existing bookmark radio", ->
|
104
112
|
expect($('input[value=existing_bookmark]').get(0).checked).toEqual(true)
|
@@ -109,8 +117,10 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
109
117
|
describe "a bookmark target", ->
|
110
118
|
|
111
119
|
beforeEach ->
|
112
|
-
Mercury.region = selection: => {
|
113
|
-
|
120
|
+
Mercury.region = selection: => {
|
121
|
+
commonAncestor: -> $('<a>', {name: 'link3'}).html('foo')
|
122
|
+
}
|
123
|
+
@insertLink.initialize()
|
114
124
|
|
115
125
|
it "hides the link text input", ->
|
116
126
|
expect($('#link_text_container').css('display')).toEqual('none')
|
@@ -122,18 +132,80 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
122
132
|
expect($('#link_new_bookmark').val()).toEqual('link3')
|
123
133
|
|
124
134
|
|
135
|
+
describe "validating", ->
|
136
|
+
|
137
|
+
beforeEach ->
|
138
|
+
@insertLink.initialize()
|
139
|
+
@triggerSpy = spyOn(Mercury, 'trigger').andCallFake(=>)
|
140
|
+
$('#link_text').val('foo')
|
141
|
+
|
142
|
+
it "displays an error if there's no content", ->
|
143
|
+
$('#link_text').val('')
|
144
|
+
@insertLink.validateForm()
|
145
|
+
expect(@insertLink.valid).toEqual(false)
|
146
|
+
expect($('#link_text').closest('.control-group').find('.error-message').html()).toEqual("can't be blank")
|
147
|
+
|
148
|
+
describe "a standard link", ->
|
149
|
+
|
150
|
+
it "displays an error", ->
|
151
|
+
@insertLink.validateForm()
|
152
|
+
expect(@insertLink.valid).toEqual(false)
|
153
|
+
expect($('#link_external_url').closest('.control-group').find('.error-message').html()).toEqual("can't be blank")
|
154
|
+
|
155
|
+
it "doesn't submit", ->
|
156
|
+
@insertLink.validateForm()
|
157
|
+
expect(@triggerSpy.callCount).toEqual(0)
|
158
|
+
|
159
|
+
describe "a bookmark link", ->
|
160
|
+
|
161
|
+
beforeEach ->
|
162
|
+
jasmine.simulate.click($('input[value=existing_bookmark]').get(0))
|
163
|
+
$('#link_existing_bookmark').html('').val('')
|
164
|
+
|
165
|
+
it "displays an error", ->
|
166
|
+
@insertLink.validateForm()
|
167
|
+
expect(@insertLink.valid).toEqual(false)
|
168
|
+
expect($('#link_existing_bookmark').closest('.control-group').find('.error-message').html()).toEqual("can't be blank")
|
169
|
+
|
170
|
+
it "doesn't submit", ->
|
171
|
+
@insertLink.validateForm()
|
172
|
+
expect(@triggerSpy.callCount).toEqual(0)
|
173
|
+
|
174
|
+
describe "a bookmark target", ->
|
175
|
+
|
176
|
+
beforeEach ->
|
177
|
+
jasmine.simulate.click($('input[value=new_bookmark]').get(0))
|
178
|
+
|
179
|
+
it "displays an error", ->
|
180
|
+
@insertLink.validateForm()
|
181
|
+
expect(@insertLink.valid).toEqual(false)
|
182
|
+
expect($('#link_new_bookmark').closest('.control-group').find('.error-message').html()).toEqual("can't be blank")
|
183
|
+
|
184
|
+
it "doesn't submit", ->
|
185
|
+
@insertLink.validateForm()
|
186
|
+
expect(@triggerSpy.callCount).toEqual(0)
|
187
|
+
|
188
|
+
|
125
189
|
describe "submitting", ->
|
126
190
|
|
127
191
|
describe "a new link", ->
|
128
192
|
|
129
193
|
beforeEach ->
|
130
|
-
|
194
|
+
@insertLink.initialize()
|
131
195
|
@triggerSpy = spyOn(Mercury, 'trigger').andCallFake(=>)
|
132
196
|
$('#link_text').val('foo')
|
133
197
|
|
198
|
+
it "doesn't submit unless it's valid", ->
|
199
|
+
$('#link_text').val('')
|
200
|
+
spy = spyOn(@modal, 'hide')
|
201
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
202
|
+
expect(spy.callCount).toEqual(0)
|
203
|
+
expect(@insertLink.valid).toEqual(false)
|
204
|
+
|
134
205
|
it "hides the modal", ->
|
135
|
-
|
136
|
-
|
206
|
+
$('#link_external_url').val('http://cnn.com')
|
207
|
+
spy = spyOn(@modal, 'hide')
|
208
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
137
209
|
expect(spy.callCount).toEqual(1)
|
138
210
|
|
139
211
|
describe "as a standard link", ->
|
@@ -143,7 +215,7 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
143
215
|
$('#link_target').val('_top')
|
144
216
|
|
145
217
|
it "triggers an action with the proper values", ->
|
146
|
-
jasmine.simulate.click($('
|
218
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
147
219
|
expect(@triggerSpy.callCount).toEqual(1)
|
148
220
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
149
221
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertLink')
|
@@ -158,7 +230,7 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
158
230
|
$('#link_popup_height').val('42')
|
159
231
|
|
160
232
|
it "triggers an action with the proper values", ->
|
161
|
-
jasmine.simulate.click($('
|
233
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
162
234
|
expect(@triggerSpy.callCount).toEqual(1)
|
163
235
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
164
236
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertLink')
|
@@ -171,7 +243,7 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
171
243
|
$('input[value=existing_bookmark]').prop('checked', true)
|
172
244
|
|
173
245
|
it "triggers an action with the proper values", ->
|
174
|
-
jasmine.simulate.click($('
|
246
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
175
247
|
expect(@triggerSpy.callCount).toEqual(1)
|
176
248
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
177
249
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertLink')
|
@@ -184,7 +256,7 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
184
256
|
$('input[value=new_bookmark]').prop('checked', true)
|
185
257
|
|
186
258
|
it "triggers an action with the proper values", ->
|
187
|
-
jasmine.simulate.click($('
|
259
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
188
260
|
expect(@triggerSpy.callCount).toEqual(1)
|
189
261
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
190
262
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertLink')
|
@@ -194,14 +266,16 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
194
266
|
|
195
267
|
beforeEach ->
|
196
268
|
@existingLink = $('<a>', {name: 'link3'}).html('foo')
|
197
|
-
Mercury.region = selection: => {
|
198
|
-
|
269
|
+
Mercury.region = selection: => {
|
270
|
+
commonAncestor: => @existingLink
|
271
|
+
}
|
272
|
+
@insertLink.initialize()
|
199
273
|
@triggerSpy = spyOn(Mercury, 'trigger').andCallFake(=>)
|
200
274
|
$('#link_text').val('foo')
|
201
275
|
|
202
276
|
it "hides the modal", ->
|
203
277
|
spy = spyOn(@modal, 'hide').andCallFake(=>)
|
204
|
-
jasmine.simulate.click($('
|
278
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
205
279
|
expect(spy.callCount).toEqual(1)
|
206
280
|
|
207
281
|
describe "as a standard link", ->
|
@@ -212,7 +286,7 @@ describe "Mercury.modalHandlers.insertLink", ->
|
|
212
286
|
$('input[value=external_url]').prop('checked', true)
|
213
287
|
|
214
288
|
it "triggers an action with the proper values", ->
|
215
|
-
jasmine.simulate.click($('
|
289
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
216
290
|
expect(@triggerSpy.callCount).toEqual(1)
|
217
291
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
218
292
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('replaceLink')
|
@@ -9,35 +9,37 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
9
9
|
element: $('#test')
|
10
10
|
hide: ->
|
11
11
|
resize: ->
|
12
|
+
@insertMedia = $.extend(@modal, Mercury.modalHandlers.insertMedia)
|
13
|
+
window.mercuryInstance = {document: $(document)}
|
12
14
|
|
13
15
|
describe "clicking on a radio button (in a label)", ->
|
14
16
|
|
15
17
|
beforeEach ->
|
16
|
-
|
18
|
+
@insertMedia.initialize()
|
17
19
|
|
18
20
|
it "focuses the next input with a selectable class", ->
|
19
21
|
spy = spyOn($.fn, 'focus').andCallFake(=>)
|
20
|
-
jasmine.simulate.click($('
|
22
|
+
jasmine.simulate.click($('input[value=image_url]').get(0))
|
21
23
|
expect(spy.callCount).toEqual(1)
|
22
24
|
|
23
25
|
|
24
26
|
describe "focusing an input", ->
|
25
27
|
|
26
28
|
beforeEach ->
|
27
|
-
|
29
|
+
@insertMedia.initialize()
|
28
30
|
|
29
31
|
it "checks the corresponding checkbox", ->
|
30
32
|
$('#media_youtube_url').focus()
|
31
|
-
expect($('
|
33
|
+
expect($('input[value=youtube_url]').get(0).checked).toEqual(true)
|
32
34
|
|
33
35
|
it "hides all the option divs", ->
|
34
36
|
$('#media_youtube_url').focus()
|
35
|
-
expect($('#
|
36
|
-
expect($('#
|
37
|
+
expect($('#image_url_options').css('display')).toEqual('none')
|
38
|
+
expect($('#vimeo_url_options').css('display')).toEqual('none')
|
37
39
|
|
38
40
|
it "shows the options for the item that was focused", ->
|
39
41
|
$('#media_youtube_url').focus()
|
40
|
-
expect($('#
|
42
|
+
expect($('#youtube_url_options').css('display')).toNotEqual('none')
|
41
43
|
|
42
44
|
it "calls resize", ->
|
43
45
|
spy = spyOn(@modal, 'resize').andCallFake(=>)
|
@@ -53,13 +55,13 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
53
55
|
@focusSpy = spyOn($.fn, 'focus').andCallThrough()
|
54
56
|
@selection = {is: -> $('<img>', {src: '/foo.gif', align: 'right'})}
|
55
57
|
Mercury.region = selection: => @selection
|
56
|
-
|
58
|
+
@insertMedia.initialize()
|
57
59
|
|
58
60
|
it "pre-fills the image url", ->
|
59
61
|
expect($('#media_image_url').val()).toEqual('/foo.gif')
|
60
62
|
|
61
63
|
it "focuses the url input", ->
|
62
|
-
expect(@focusSpy.callCount).toEqual(
|
64
|
+
expect(@focusSpy.callCount).toEqual(2)
|
63
65
|
expect($('input[value=image_url]').get(0).checked).toEqual(true)
|
64
66
|
|
65
67
|
it "sets the image alignment option", ->
|
@@ -69,12 +71,12 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
69
71
|
|
70
72
|
beforeEach ->
|
71
73
|
@focusSpy = spyOn($.fn, 'focus').andCallThrough()
|
72
|
-
@selection = {is: -> $('<iframe>', {src: '
|
74
|
+
@selection = {is: -> $('<iframe>', {src: 'https://www.youtube.com/embed/foo?wmode=transparent', style: 'width:100px;height:42px'})}
|
73
75
|
Mercury.region = selection: => @selection
|
74
|
-
|
76
|
+
@insertMedia.initialize()
|
75
77
|
|
76
78
|
it "pre-fills the url", ->
|
77
|
-
expect($('#media_youtube_url').val()).toEqual('
|
79
|
+
expect($('#media_youtube_url').val()).toEqual('https://youtu.be/foo')
|
78
80
|
|
79
81
|
it "focuses the url input", ->
|
80
82
|
expect($('input[value=youtube_url]').get(0).checked).toEqual(true)
|
@@ -91,7 +93,7 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
91
93
|
@focusSpy = spyOn($.fn, 'focus').andCallThrough()
|
92
94
|
@selection = {is: -> $('<iframe>', {src: 'http://player.vimeo.com/video/foo?title=1&byline=1&portrait=0&color=ffffff', style: 'width:100px;height:42px'})}
|
93
95
|
Mercury.region = selection: => @selection
|
94
|
-
|
96
|
+
@insertMedia.initialize()
|
95
97
|
|
96
98
|
it "pre-fills the url", ->
|
97
99
|
expect($('#media_vimeo_url').val()).toEqual('http://vimeo.com/foo')
|
@@ -106,15 +108,67 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
106
108
|
expect($('#media_vimeo_height').val()).toEqual('42')
|
107
109
|
|
108
110
|
|
111
|
+
describe "validating", ->
|
112
|
+
|
113
|
+
beforeEach ->
|
114
|
+
@insertMedia.initialize()
|
115
|
+
@triggerSpy = spyOn(Mercury, 'trigger').andCallFake(=>)
|
116
|
+
|
117
|
+
describe "an image", ->
|
118
|
+
|
119
|
+
it "displays an error", ->
|
120
|
+
@insertMedia.validateForm()
|
121
|
+
expect(@insertMedia.valid).toEqual(false)
|
122
|
+
expect($('#media_image_url').closest('.control-group').find('.error-message').html()).toEqual("can't be blank")
|
123
|
+
|
124
|
+
it "doesn't submit", ->
|
125
|
+
@insertMedia.validateForm()
|
126
|
+
expect(@triggerSpy.callCount).toEqual(0)
|
127
|
+
|
128
|
+
describe "a youtube video", ->
|
129
|
+
|
130
|
+
beforeEach ->
|
131
|
+
$('input[value=youtube_url]').prop('checked', true)
|
132
|
+
|
133
|
+
it "displays an error", ->
|
134
|
+
@insertMedia.validateForm()
|
135
|
+
expect(@insertMedia.valid).toEqual(false)
|
136
|
+
expect($('#media_youtube_url').closest('.control-group').find('.error-message').html()).toEqual("is invalid")
|
137
|
+
|
138
|
+
it "doesn't submit", ->
|
139
|
+
@insertMedia.validateForm()
|
140
|
+
expect(@triggerSpy.callCount).toEqual(0)
|
141
|
+
|
142
|
+
describe "a vimeo video", ->
|
143
|
+
beforeEach ->
|
144
|
+
$('input[value=vimeo_url]').prop('checked', true)
|
145
|
+
|
146
|
+
it "displays an error", ->
|
147
|
+
@insertMedia.validateForm()
|
148
|
+
expect(@insertMedia.valid).toEqual(false)
|
149
|
+
expect($('#media_vimeo_url').closest('.control-group').find('.error-message').html()).toEqual("is invalid")
|
150
|
+
|
151
|
+
it "doesn't submit", ->
|
152
|
+
@insertMedia.validateForm()
|
153
|
+
expect(@triggerSpy.callCount).toEqual(0)
|
154
|
+
|
155
|
+
|
109
156
|
describe "submitting", ->
|
110
157
|
|
111
158
|
beforeEach ->
|
112
|
-
|
159
|
+
@insertMedia.initialize()
|
113
160
|
@triggerSpy = spyOn(Mercury, 'trigger').andCallFake(=>)
|
114
161
|
|
162
|
+
it "doesn't submit unless it's valid", ->
|
163
|
+
spy = spyOn(@modal, 'hide')
|
164
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
165
|
+
expect(spy.callCount).toEqual(0)
|
166
|
+
expect(@insertMedia.valid).toEqual(false)
|
167
|
+
|
115
168
|
it "hides the modal", ->
|
116
|
-
|
117
|
-
|
169
|
+
$('#media_image_url').val('foo.gif')
|
170
|
+
spy = spyOn(@modal, 'hide')
|
171
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
118
172
|
expect(spy.callCount).toEqual(1)
|
119
173
|
|
120
174
|
describe "an image", ->
|
@@ -124,7 +178,7 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
124
178
|
$('#media_image_alignment').val('right')
|
125
179
|
|
126
180
|
it "triggers an action with the proper values", ->
|
127
|
-
jasmine.simulate.click($('
|
181
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
128
182
|
expect(@triggerSpy.callCount).toEqual(1)
|
129
183
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
130
184
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertImage')
|
@@ -133,21 +187,14 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
133
187
|
describe "a youtube video", ->
|
134
188
|
|
135
189
|
beforeEach ->
|
190
|
+
$('#media_youtube_url').val('http://youtu.be/foo')
|
136
191
|
$('#media_youtube_width').val(100)
|
137
192
|
$('#media_youtube_height').val('42')
|
138
193
|
$('input[value=youtube_url]').prop('checked', true)
|
139
194
|
|
140
|
-
it "doesn't allow bogus urls", ->
|
141
|
-
$('#media_youtube_url').val('http://example.com')
|
142
|
-
lastAlert = ''
|
143
|
-
spy = spyOn(window, 'alert').andCallFake((msg) -> lastAlert = msg)
|
144
|
-
jasmine.simulate.click($('#submit').get(0))
|
145
|
-
expect(spy.callCount).toEqual(1)
|
146
|
-
expect(lastAlert).toEqual('Error: The provided youtube share url was invalid.')
|
147
|
-
|
148
195
|
it "triggers an action with the proper values", ->
|
149
196
|
$('#media_youtube_url').val('http://youtu.be/foo')
|
150
|
-
jasmine.simulate.click($('
|
197
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
151
198
|
expect(@triggerSpy.callCount).toEqual(1)
|
152
199
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
153
200
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertHTML')
|
@@ -158,7 +205,7 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
158
205
|
|
159
206
|
it "triggers an action with the proper values using https", ->
|
160
207
|
$('#media_youtube_url').val('https://youtu.be/foo')
|
161
|
-
jasmine.simulate.click($('
|
208
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
162
209
|
expect(@triggerSpy.callCount).toEqual(1)
|
163
210
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
164
211
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertHTML')
|
@@ -170,22 +217,13 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
170
217
|
describe "a vimeo video", ->
|
171
218
|
|
172
219
|
beforeEach ->
|
173
|
-
$('#media_vimeo_url').val('http://vimeo.com/foo')
|
174
220
|
$('#media_vimeo_width').val(100)
|
175
221
|
$('#media_vimeo_height').val('42')
|
176
222
|
$('input[value=vimeo_url]').prop('checked', true)
|
177
223
|
|
178
|
-
it "doesn't allow bogus urls", ->
|
179
|
-
$('#media_vimeo_url').val('http://example.com')
|
180
|
-
lastAlert = ''
|
181
|
-
spy = spyOn(window, 'alert').andCallFake((msg) -> lastAlert = msg)
|
182
|
-
jasmine.simulate.click($('#submit').get(0))
|
183
|
-
expect(spy.callCount).toEqual(1)
|
184
|
-
expect(lastAlert).toEqual('Error: The provided vimeo url was invalid.')
|
185
|
-
|
186
224
|
it "triggers an action with the proper values", ->
|
187
225
|
$('#media_vimeo_url').val('http://vimeo.com/foo')
|
188
|
-
jasmine.simulate.click($('
|
226
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
189
227
|
expect(@triggerSpy.callCount).toEqual(1)
|
190
228
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
191
229
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertHTML')
|
@@ -196,7 +234,7 @@ describe "Mercury.modalHandlers.insertMedia", ->
|
|
196
234
|
|
197
235
|
it "triggers an action with the proper values using https", ->
|
198
236
|
$('#media_vimeo_url').val('https://vimeo.com/foo')
|
199
|
-
jasmine.simulate.click($('
|
237
|
+
jasmine.simulate.click($('input[type=submit]').get(0))
|
200
238
|
expect(@triggerSpy.callCount).toEqual(1)
|
201
239
|
expect(@triggerSpy.argsForCall[0][0]).toEqual('action')
|
202
240
|
expect(@triggerSpy.argsForCall[0][1]['action']).toEqual('insertHTML')
|