simple_form_attachments 0.2.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +118 -113
- data/README.md +29 -14
- data/app/controllers/simple_form_attachments/upload_controller.rb +3 -1
- data/app/models/concerns/simple_form_attachments/attachment.rb +1 -1
- data/app/models/concerns/simple_form_attachments/has_attachments.rb +11 -8
- data/app/views/layouts/simple_form_attachments/_attachment_layout.html.slim +8 -8
- data/app/views/simple_form_attachments/_errors.html.slim +4 -3
- data/app/views/simple_form_attachments/attachments/_attachment.hbs.slim +14 -15
- data/app/views/simple_form_attachments/attachments/_attachment.html.slim +4 -2
- data/config/locales/simple_form_attachments/simple_form_attachments.en.yml +8 -3
- data/config/routes.rb +2 -2
- data/lib/assets/javascripts/simple_form_attachments/{simple_form_attachments.js.coffee → simple_form_attachments.coffee.erb} +24 -41
- data/lib/assets/stylesheets/simple_form_attachments/__attachment.scss.erb +8 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col.scss.erb +1 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__actions.scss.erb +3 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__errors.scss.erb +10 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__fields.scss.erb +4 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__file_info.scss.erb +4 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__handle.scss.erb +6 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__hidden.scss.erb +3 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__progress.scss.erb +14 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment__col__thumb.scss.erb +9 -0
- data/lib/assets/stylesheets/simple_form_attachments/__attachment_list.scss.erb +11 -0
- data/lib/assets/stylesheets/simple_form_attachments/__button.scss.erb +9 -0
- data/lib/assets/stylesheets/simple_form_attachments/__label.scss.erb +3 -0
- data/lib/assets/stylesheets/simple_form_attachments/simple_form_attachments.scss.erb +29 -0
- data/lib/assets/stylesheets/simple_form_attachments.css +4 -0
- data/lib/simple_form_attachments/attachment_input.rb +12 -11
- data/lib/simple_form_attachments/version.rb +1 -1
- data/lib/simple_form_attachments.rb +12 -0
- data/simple_form_attachments.gemspec +2 -1
- data/test/controllers/simple_form_attachments/upload_controller_test.rb +53 -57
- data/test/dummy/Gemfile +1 -0
- data/test/dummy/Gemfile.lock +80 -74
- data/test/dummy/app/assets/stylesheets/application.css +5 -0
- data/test/dummy/app/models/attachment_image.rb +1 -0
- data/test/dummy/app/views/simple_form_attachments/attachment_images/_attachment_image.html.slim +12 -9
- data/test/dummy/config/environments/test.rb +2 -2
- data/test/dummy/config/mongoid.yml +5 -8
- data/test/dummy/config/routes.rb +1 -3
- data/test/simple_form_attachments_test.rb +30 -0
- data/test/test_helper.rb +5 -1
- metadata +46 -16
- data/test/dummy/app/assets/stylesheets/application.css.scss +0 -5
- data/test/dummy/app/assets/stylesheets/tests.scss +0 -233
@@ -1,33 +1,20 @@
|
|
1
1
|
# https://github.com/zenorocha/jquery-boilerplate
|
2
2
|
(($, window) ->
|
3
|
-
|
4
|
-
# ---------------------------------------------------------------------
|
5
|
-
|
6
3
|
pluginName = 'simple_form_attachments'
|
7
4
|
document = window.document
|
8
5
|
|
9
6
|
defaults =
|
10
7
|
debug: false
|
11
8
|
sortable_options:
|
12
|
-
handle: '.handle'
|
9
|
+
handle: '.<%= SimpleFormAttachments.dom_class(:attachment, :col, :handle) %>'
|
13
10
|
axis: 'y'
|
14
|
-
items: '>
|
11
|
+
items: '> .<%= SimpleFormAttachments.dom_class(:attachment) %>'
|
15
12
|
forcePlaceholderSize: true
|
16
|
-
placeholder: 'attachment
|
13
|
+
placeholder: '<%= SimpleFormAttachments.dom_class(:attachment, :placeholder) %>'
|
17
14
|
containment: 'parent'
|
18
|
-
start: (event, ui) ->
|
19
|
-
cellCount = 0
|
20
|
-
$('td, th', ui.helper).each ->
|
21
|
-
colspan = 1
|
22
|
-
colspanAttr = $(this).attr('colspan')
|
23
|
-
if colspanAttr > 1 then colspan = colspanAttr
|
24
|
-
cellCount += colspan
|
25
|
-
ui.placeholder.html '<td colspan="#{cellCount}"> </td>'
|
26
15
|
|
27
16
|
slide_speed: 'fast'
|
28
17
|
|
29
|
-
# ---------------------------------------------------------------------
|
30
|
-
|
31
18
|
class Plugin
|
32
19
|
constructor: (@element, options) ->
|
33
20
|
@options = $.extend {}, defaults, options
|
@@ -46,7 +33,7 @@
|
|
46
33
|
@init_fileupload()
|
47
34
|
|
48
35
|
init_sortable: () ->
|
49
|
-
@get_attachment_list().
|
36
|
+
@get_attachment_list().sortable(@options.sortable_options)#.disableSelection()
|
50
37
|
|
51
38
|
init_fileupload: () ->
|
52
39
|
console.log "init jQuery.fileupload" if @options.debug
|
@@ -75,7 +62,7 @@
|
|
75
62
|
|
76
63
|
add: (e, data) =>
|
77
64
|
@set_logs(e, data) if @options.debug
|
78
|
-
@get_attachment_list().find('
|
65
|
+
@get_attachment_list().find('.<%= SimpleFormAttachments.dom_class(:attachment) %>').remove() unless @is_multiple()
|
79
66
|
|
80
67
|
for file in data.files
|
81
68
|
properties = {
|
@@ -85,7 +72,7 @@
|
|
85
72
|
thumb_url: URL.createObjectURL(file)
|
86
73
|
}
|
87
74
|
result = $.extend({}, file, properties)
|
88
|
-
$template = @get_attachment_template(result).addClass('
|
75
|
+
$template = @get_attachment_template(result).addClass('<%= SimpleFormAttachments.dom_class(:attachment, :is_uploading) %>')
|
89
76
|
data.context = $template
|
90
77
|
$template.data('data', data)
|
91
78
|
@get_attachment_list().append($template)
|
@@ -94,43 +81,44 @@
|
|
94
81
|
|
95
82
|
fail: (e, data) =>
|
96
83
|
@set_logs(e, data) if @options.debug
|
97
|
-
|
98
|
-
|
99
|
-
|
84
|
+
if !!data.jqXHR.responseText
|
85
|
+
$result = $(JSON.parse(data.jqXHR.responseText).html).addClass('<%= SimpleFormAttachments.dom_class(:attachment, :has_error) %>')
|
86
|
+
$result.find('.<%= SimpleFormAttachments.dom_class(:attachment, :col, :errors) %>');
|
87
|
+
data.context.replaceWith($result)
|
100
88
|
|
101
89
|
progress: (e, data) =>
|
102
90
|
@set_logs(e, data) if @options.debug
|
103
91
|
progress = parseInt(data.loaded / data.total * 100, 10)
|
104
|
-
data.context.find('.progress
|
92
|
+
data.context.find('.<%= SimpleFormAttachments.dom_class(:attachment, :col, :progress, :bar) %>').width(progress+'%')
|
105
93
|
|
106
94
|
done: (e, data) =>
|
107
95
|
@set_logs(e, data) if @options.debug
|
108
96
|
console.log data.result.html if @options.debug
|
109
|
-
$result = $(data.result.html).addClass('
|
110
|
-
data.context.replaceWith
|
97
|
+
$result = $(data.result.html).addClass('<%= SimpleFormAttachments.dom_class(:attachment, :is_uploaded) %>')
|
98
|
+
data.context.replaceWith($result)
|
111
99
|
|
112
100
|
stop: (e, data) =>
|
113
101
|
@set_logs(e, data) if @options.debug
|
114
102
|
@enable_form_submit()
|
115
103
|
|
116
|
-
@$element.on 'click', 'button.
|
104
|
+
@$element.on 'click', '.<%= SimpleFormAttachments.dom_class(:button, :delete) %>, .<%= SimpleFormAttachments.dom_class(:button, :close) %>', (e) =>
|
117
105
|
e.preventDefault()
|
118
106
|
e.stopPropagation()
|
119
|
-
$template = $(e.currentTarget).closest('
|
107
|
+
$template = $(e.currentTarget).closest('.<%= SimpleFormAttachments.dom_class(:attachment) %>')
|
120
108
|
@remove_template($template)
|
121
109
|
|
122
|
-
@$element.on 'click', 'button
|
110
|
+
@$element.on 'click', '.<%= SimpleFormAttachments.dom_class(:button, :cancel) %>', (e) =>
|
123
111
|
e.preventDefault()
|
124
112
|
e.stopPropagation()
|
125
|
-
$template = $(e.currentTarget).closest('
|
113
|
+
$template = $(e.currentTarget).closest('.<%= SimpleFormAttachments.dom_class(:attachment) %>')
|
126
114
|
data = $template.data('data') || {}
|
127
115
|
@enable_form_submit()
|
128
116
|
|
129
|
-
if
|
117
|
+
if !!data.jqXHR
|
118
|
+
data.jqXHR.abort()
|
119
|
+
else
|
130
120
|
data.errorThrown = 'abort'
|
131
121
|
e.data.fileupload._trigger('fail', e, data)
|
132
|
-
else
|
133
|
-
data.jqXHR.abort()
|
134
122
|
|
135
123
|
@remove_template($template)
|
136
124
|
|
@@ -148,14 +136,14 @@
|
|
148
136
|
|
149
137
|
# ---------------------------------------------------------------------
|
150
138
|
|
151
|
-
get_attachment_list: -> @$element.find('
|
139
|
+
get_attachment_list: -> @$element.find('.<%= SimpleFormAttachments.dom_class(:attachment_list) %>')
|
152
140
|
get_attachments_path: -> @$element.data('attachments-path')
|
153
141
|
get_disabled_submit_text: -> @$element.data('disabled-submit-text')
|
154
142
|
get_file_input: -> @$element.find('input.file')
|
155
143
|
get_form: -> @$element.parents('form').first()
|
156
144
|
get_form_submit: -> @get_form().find('input[type="submit"]').first()
|
157
145
|
get_max_number_of_files: -> @$element.data('max-number-of-files')
|
158
|
-
get_number_of_files: -> @get_attachment_list().children('
|
146
|
+
get_number_of_files: -> @get_attachment_list().children('.<%= SimpleFormAttachments.dom_class(:attachment) %>').not('.<%= SimpleFormAttachments.dom_class(:attachment, :has_error) %>').length
|
159
147
|
|
160
148
|
get_attachment_type_input: -> @$element.find('input[name="attachment_type"]')
|
161
149
|
get_attachment_multiple_input: -> @$element.find('input[name="attachment[multiple]"]')
|
@@ -172,7 +160,7 @@
|
|
172
160
|
get_kb_from_bytes: (bytes) -> parseInt(parseInt(bytes)/1024)
|
173
161
|
|
174
162
|
get_attachment_template: (file) =>
|
175
|
-
template = Handlebars.compile(@$element.find('script#
|
163
|
+
template = Handlebars.compile(@$element.find('script#simple_form_attachments__template').html())
|
176
164
|
$(template(file))
|
177
165
|
|
178
166
|
# ---------------------------------------------------------------------
|
@@ -200,7 +188,7 @@
|
|
200
188
|
# ---------------------------------------------------------------------
|
201
189
|
|
202
190
|
is_multiple: -> @get_file_input().attr('multiple') != undefined
|
203
|
-
is_sortable: -> @get_attachment_list().hasClass('
|
191
|
+
is_sortable: -> @get_attachment_list().hasClass('<%= SimpleFormAttachments.dom_class(:attachment_list, :is_sortable) %>')
|
204
192
|
|
205
193
|
# ---------------------------------------------------------------------
|
206
194
|
|
@@ -208,11 +196,6 @@
|
|
208
196
|
@each ->
|
209
197
|
if !$.data(this, "plugin_#{pluginName}")
|
210
198
|
$.data(@, "plugin_#{pluginName}", new Plugin(@, options))
|
211
|
-
|
212
|
-
# ---------------------------------------------------------------------
|
213
|
-
|
214
199
|
)(jQuery, window)
|
215
200
|
|
216
|
-
# =====================================================================
|
217
|
-
|
218
201
|
$ -> $('div.simple_form_attachments').simple_form_attachments()
|
@@ -0,0 +1 @@
|
|
1
|
+
.<%= SimpleFormAttachments.dom_class(:attachment, :col) %> {}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
.<%= SimpleFormAttachments.dom_class(:attachment, :col, :progress) %> {
|
2
|
+
flex: 1 1 auto;
|
3
|
+
width: 100%;
|
4
|
+
}
|
5
|
+
|
6
|
+
.<%= SimpleFormAttachments.dom_class(:attachment, :col, :progress, :container) %> {
|
7
|
+
width: 100%;
|
8
|
+
}
|
9
|
+
|
10
|
+
.<%= SimpleFormAttachments.dom_class(:attachment, :col, :progress, :bar) %> {
|
11
|
+
height: 1em;
|
12
|
+
background-color: blue;
|
13
|
+
width: 0;
|
14
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
.<%= SimpleFormAttachments.dom_class(:attachment_list) %> {
|
2
|
+
.<%= SimpleFormAttachments.dom_class(:attachment, :col, :handle) %> {
|
3
|
+
display: none;
|
4
|
+
}
|
5
|
+
}
|
6
|
+
|
7
|
+
.<%= SimpleFormAttachments.dom_class(:attachment_list, :is_sortable) %> {
|
8
|
+
.<%= SimpleFormAttachments.dom_class(:attachment, :col, :handle) %> {
|
9
|
+
display: block;
|
10
|
+
}
|
11
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.<%= SimpleFormAttachments.dom_class(:button) %> {
|
2
|
+
white-space: nowrap;
|
3
|
+
}
|
4
|
+
|
5
|
+
.<%= SimpleFormAttachments.dom_class(:button, :cancel) %>,
|
6
|
+
.<%= SimpleFormAttachments.dom_class(:button, :close) %>,
|
7
|
+
.<%= SimpleFormAttachments.dom_class(:button, :delete) %> {
|
8
|
+
color: red;
|
9
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
.<%= SimpleFormAttachments.dom_class %> {
|
2
|
+
input[type="file"] {
|
3
|
+
margin: 0;
|
4
|
+
padding: 0;
|
5
|
+
|
6
|
+
// hide so that the label can be styled
|
7
|
+
width: .1px;
|
8
|
+
height: .1px;
|
9
|
+
opacity: 0;
|
10
|
+
overflow: hidden;
|
11
|
+
position: absolute;
|
12
|
+
z-index: -1;
|
13
|
+
|
14
|
+
label {
|
15
|
+
display: inline-block;
|
16
|
+
vertical-align: bottom;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
label[for="attachment_file"] {
|
21
|
+
.<%= SimpleFormAttachments.dom_class(:attachment, :button) %> {
|
22
|
+
display: none;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
&.dragover {
|
27
|
+
background-color: yellow;
|
28
|
+
}
|
29
|
+
}
|
@@ -37,18 +37,18 @@ module SimpleFormAttachments
|
|
37
37
|
private # =============================================================
|
38
38
|
|
39
39
|
def input_html_options
|
40
|
-
super.merge
|
40
|
+
super.merge(
|
41
41
|
data: {
|
42
42
|
attachments_path: options.fetch(:route, route_from_configuration),
|
43
43
|
max_number_of_files: options.fetch(:max_number_of_files, nil),
|
44
44
|
disabled_submit_text: I18n.t(:disabled, scope: 'simple_form_attachments.buttons'),
|
45
|
-
sortable: sortable
|
46
|
-
}
|
45
|
+
sortable: sortable?
|
46
|
+
}.reject{ |k, v| v.nil? }
|
47
47
|
)
|
48
48
|
end
|
49
49
|
|
50
50
|
def input_html_classes
|
51
|
-
super.push(
|
51
|
+
super.push(SimpleFormAttachments.dom_class)
|
52
52
|
end
|
53
53
|
|
54
54
|
# ---------------------------------------------------------------------
|
@@ -189,7 +189,8 @@ module SimpleFormAttachments
|
|
189
189
|
class: 'file'
|
190
190
|
}
|
191
191
|
template.label_tag('attachment[file]') do
|
192
|
-
template.file_field_tag('attachment[file]', input_html_options)
|
192
|
+
template.file_field_tag('attachment[file]', input_html_options) +
|
193
|
+
template.content_tag(:span, I18n.t(:choose_file, scope: 'simple_form_attachments.links', count: (multiple? ? 2 : 1)), class: SimpleFormAttachments.dom_class(:label, [:choose_file]))
|
193
194
|
end
|
194
195
|
end
|
195
196
|
|
@@ -228,12 +229,12 @@ module SimpleFormAttachments
|
|
228
229
|
# ---------------------------------------------------------------------
|
229
230
|
|
230
231
|
def attachment_list
|
231
|
-
|
232
|
-
|
233
|
-
template.content_tag :
|
232
|
+
container_classes = [SimpleFormAttachments.dom_class(:attachment_list)]
|
233
|
+
container_classes << SimpleFormAttachments.dom_class(:attachment_list, :is_sortable) if sortable?
|
234
|
+
template.content_tag :div, class: container_classes do
|
234
235
|
@builder.simple_fields_for attribute_name do |attachment_fields|
|
235
236
|
template.render(
|
236
|
-
partial:
|
237
|
+
partial: File.join('simple_form_attachments', attachment_fields.object.to_partial_path), format: :html, layout: File.join('layouts', 'simple_form_attachments', 'attachment_layout'),
|
237
238
|
locals: {
|
238
239
|
attachment: attachment_fields.object,
|
239
240
|
fields: attachment_fields,
|
@@ -249,8 +250,8 @@ module SimpleFormAttachments
|
|
249
250
|
# ---------------------------------------------------------------------
|
250
251
|
|
251
252
|
def handlebars_js_template
|
252
|
-
template.content_tag :script, id: '
|
253
|
-
template.render('simple_form_attachments
|
253
|
+
template.content_tag :script, id: 'simple_form_attachments__template', type: 'text/html' do
|
254
|
+
template.render(File.join('simple_form_attachments', 'attachments', 'attachment.hbs.slim'))
|
254
255
|
end
|
255
256
|
end
|
256
257
|
end
|
@@ -14,6 +14,18 @@ require "i18n"
|
|
14
14
|
|
15
15
|
# ---------------------------------------------------------------------
|
16
16
|
|
17
|
+
module SimpleFormAttachments
|
18
|
+
def self.dom_class(*args)
|
19
|
+
prefix, alts = args.partition { |i| !i.is_a?(Array) }
|
20
|
+
prefix = ['simple_form_attachments'] + prefix
|
21
|
+
return prefix.compact.join('__') if alts.empty?
|
22
|
+
alts.flatten.map do |item|
|
23
|
+
prefix += [item]
|
24
|
+
prefix.compact.join('__')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
17
29
|
module SimpleForm
|
18
30
|
class FormBuilder
|
19
31
|
map_type :attachment, to: SimpleFormAttachments::AttachmentInput
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
# ---------------------------------------------------------------------
|
21
21
|
|
22
22
|
spec.add_dependency 'rails', '>= 4.2'
|
23
|
+
spec.add_dependency 'mongoid', '> 4.0'
|
23
24
|
spec.add_dependency 'simple_form', '>= 3.0.2'
|
24
25
|
|
25
26
|
spec.add_dependency 'slim'
|
@@ -38,6 +39,6 @@ Gem::Specification.new do |spec|
|
|
38
39
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
39
40
|
spec.add_development_dependency 'minitest-rails'
|
40
41
|
spec.add_development_dependency 'dragonfly'
|
42
|
+
spec.add_development_dependency 'rails-controller-testing'
|
41
43
|
spec.add_development_dependency 'rake', '~> 10.0'
|
42
|
-
spec.add_development_dependency 'mongoid', '~> 4.0'
|
43
44
|
end
|
@@ -1,76 +1,72 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
|
3
|
+
describe SimpleFormAttachments::UploadController do
|
4
|
+
before do
|
5
|
+
@routes = SimpleFormAttachments::Engine.routes
|
6
|
+
end
|
4
7
|
|
5
|
-
|
6
|
-
describe UploadController do
|
7
|
-
setup do
|
8
|
-
@routes = SimpleFormAttachments::Engine.routes
|
9
|
-
end
|
8
|
+
let(:count) { AttachmentTest.count }
|
10
9
|
|
11
|
-
|
10
|
+
# ---------------------------------------------------------------------
|
12
11
|
|
13
|
-
|
12
|
+
describe '#create' do
|
13
|
+
let(:params) do
|
14
|
+
{
|
15
|
+
attachment: { body: 'foo' },
|
16
|
+
attachment_parent: { class: 'Parent' },
|
17
|
+
attachment_relation: { name: 'attachments', multiple: true },
|
18
|
+
attachment_type: 'AttachmentTest'
|
19
|
+
}
|
20
|
+
end
|
21
|
+
let(:action) { post :create, params: params }
|
14
22
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
attachment_parent: { class: 'Parent' },
|
20
|
-
attachment_relation: { name: 'attachments', multiple: true },
|
21
|
-
attachment_type: 'AttachmentTest'
|
22
|
-
}
|
23
|
-
end
|
24
|
-
let(:action) { post :create, params }
|
23
|
+
it 'should succeed' do
|
24
|
+
action
|
25
|
+
must_respond_with :success
|
26
|
+
end
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
28
|
+
it 'should create attachment of specified model' do
|
29
|
+
assert_difference('AttachmentTest.count') { action }
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
it 'must mark the newly upladed attachment as temporary' do
|
33
|
+
action
|
34
|
+
assigns(:attachment).must_be :present?
|
35
|
+
assigns(:attachment).body.must_equal 'foo'
|
36
|
+
assigns(:attachment).temporary.must_equal true
|
37
|
+
end
|
34
38
|
|
35
|
-
|
39
|
+
describe 'returned JSON' do
|
40
|
+
it 'should contain template with correct locals' do
|
36
41
|
action
|
37
|
-
|
38
|
-
assigns(:attachment).body.must_equal 'foo'
|
39
|
-
assigns(:attachment).temporary.must_equal true
|
40
|
-
end
|
41
|
-
|
42
|
-
describe 'returned JSON' do
|
43
|
-
it 'should contain template with correct locals' do
|
44
|
-
action
|
45
|
-
assert_template 'simple_form_attachments/_attachment_upload_template', locals: { multiple: true, parent_class: params[:attachment_parent][:class].constantize }
|
46
|
-
end
|
42
|
+
assert_template 'simple_form_attachments/_attachment_upload_template', locals: { multiple: true, parent_class: params[:attachment_parent][:class].constantize }
|
47
43
|
end
|
48
44
|
end
|
45
|
+
end
|
49
46
|
|
50
|
-
|
47
|
+
# ---------------------------------------------------------------------
|
51
48
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
49
|
+
describe '#show' do
|
50
|
+
let(:attachment) { AttachmentTest.create! }
|
51
|
+
let(:params) do
|
52
|
+
{
|
53
|
+
id: attachment.id.to_s,
|
54
|
+
attachment_parent: { class: 'Parent' },
|
55
|
+
attachment_relation: { name: 'attachments', multiple: true },
|
56
|
+
attachment_type: 'AttachmentTest'
|
57
|
+
}
|
58
|
+
end
|
59
|
+
let(:action) { get :show, params: params }
|
63
60
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
61
|
+
it 'should succeed' do
|
62
|
+
action
|
63
|
+
must_respond_with :success
|
64
|
+
end
|
68
65
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
66
|
+
describe 'returned JSON' do
|
67
|
+
it 'should contain template with correct locals' do
|
68
|
+
action
|
69
|
+
assert_template 'simple_form_attachments/_attachment_upload_template', locals: { multiple: true, parent_class: params[:attachment_parent][:class].constantize }
|
74
70
|
end
|
75
71
|
end
|
76
72
|
end
|