simple_form_attachments 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.bundle/config +1 -0
- data/Gemfile.lock +13 -13
- data/app/controllers/simple_form_attachments/upload_controller.rb +54 -32
- data/app/models/concerns/simple_form_attachments/attachment.rb +0 -2
- data/app/views/simple_form_attachments/_attachment_upload_template.html.slim +0 -1
- data/config/routes.rb +2 -1
- data/lib/simple_form_attachments/attachment_input.rb +17 -17
- data/lib/simple_form_attachments/configuration.rb +0 -2
- data/lib/simple_form_attachments/engine.rb +1 -2
- data/lib/simple_form_attachments/version.rb +1 -1
- data/test/controllers/simple_form_attachments/upload_controller_test.rb +39 -14
- data/test/models/concerns/simple_form_attachments/attachment_test.rb +9 -9
- data/test/models/concerns/simple_form_attachments/has_attachments_test.rb +9 -7
- data/test/test_helper.rb +4 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7eacf3010000eaf619be4b2df36081e9f9ec843c
|
4
|
+
data.tar.gz: 660027abe7942ff8aecc744911d87af924f96dd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 241e0495e78fd53bf8719128ae8ff21d9d7bc46377565ff5c7f37b511e04c2641dc818352f2d6e23bd44cb6a9b4883e92ebf2078e17502fbb39109610429b486
|
7
|
+
data.tar.gz: ad219c71014effa1e50764dc8060af86ebdcb0c2e95b47d89da2f67b235b73626b280d69715ff969148b831b18c5696b6232c80a303eeda9635b96a9e811389f
|
data/.bundle/config
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--- {}
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
simple_form_attachments (0.2.
|
4
|
+
simple_form_attachments (0.2.4)
|
5
5
|
jquery-ui-rails
|
6
6
|
rails (>= 4.2)
|
7
7
|
rails-assets-blueimp-file-upload (>= 9.6.0)
|
@@ -53,7 +53,7 @@ GEM
|
|
53
53
|
bson (3.2.6)
|
54
54
|
builder (3.2.2)
|
55
55
|
coderay (1.1.0)
|
56
|
-
concurrent-ruby (1.0.
|
56
|
+
concurrent-ruby (1.0.2)
|
57
57
|
connection_pool (2.2.0)
|
58
58
|
coveralls (0.8.10)
|
59
59
|
json (~> 1.8)
|
@@ -100,8 +100,8 @@ GEM
|
|
100
100
|
loofah (2.0.3)
|
101
101
|
nokogiri (>= 1.5.9)
|
102
102
|
lumberjack (1.0.9)
|
103
|
-
mail (2.6.
|
104
|
-
mime-types (>= 1.16, <
|
103
|
+
mail (2.6.4)
|
104
|
+
mime-types (>= 1.16, < 4)
|
105
105
|
method_source (0.8.2)
|
106
106
|
mime-types (2.99)
|
107
107
|
mini_portile2 (2.0.0)
|
@@ -147,15 +147,15 @@ GEM
|
|
147
147
|
railties (= 4.2.5)
|
148
148
|
sprockets-rails
|
149
149
|
rails-assets-blueimp-canvas-to-blob (3.3.0)
|
150
|
-
rails-assets-blueimp-file-upload (9.12.
|
150
|
+
rails-assets-blueimp-file-upload (9.12.3)
|
151
151
|
rails-assets-blueimp-canvas-to-blob (>= 2.1.1)
|
152
152
|
rails-assets-blueimp-load-image (>= 1.13.0)
|
153
153
|
rails-assets-blueimp-tmpl (>= 2.5.4)
|
154
154
|
rails-assets-jquery (>= 1.6)
|
155
155
|
rails-assets-blueimp-load-image (2.6.1)
|
156
|
-
rails-assets-blueimp-tmpl (3.
|
156
|
+
rails-assets-blueimp-tmpl (3.4.0)
|
157
157
|
rails-assets-handlebars (4.0.5)
|
158
|
-
rails-assets-jquery (2.2.
|
158
|
+
rails-assets-jquery (2.2.4)
|
159
159
|
rails-deprecated_sanitizer (1.0.3)
|
160
160
|
activesupport (>= 4.2.0.alpha)
|
161
161
|
rails-dom-testing (1.0.7)
|
@@ -186,23 +186,23 @@ GEM
|
|
186
186
|
json (~> 1.8)
|
187
187
|
simplecov-html (~> 0.10.0)
|
188
188
|
simplecov-html (0.10.0)
|
189
|
-
slim (3.0.
|
190
|
-
temple (~> 0.7.
|
189
|
+
slim (3.0.7)
|
190
|
+
temple (~> 0.7.6)
|
191
191
|
tilt (>= 1.3.3, < 2.1)
|
192
192
|
slop (3.6.0)
|
193
|
-
sprockets (3.
|
193
|
+
sprockets (3.6.3)
|
194
194
|
concurrent-ruby (~> 1.0)
|
195
195
|
rack (> 1, < 3)
|
196
196
|
sprockets-rails (3.0.4)
|
197
197
|
actionpack (>= 4.0)
|
198
198
|
activesupport (>= 4.0)
|
199
199
|
sprockets (>= 3.0.0)
|
200
|
-
temple (0.7.
|
200
|
+
temple (0.7.7)
|
201
201
|
term-ansicolor (1.3.2)
|
202
202
|
tins (~> 1.0)
|
203
203
|
thor (0.19.1)
|
204
204
|
thread_safe (0.3.5)
|
205
|
-
tilt (2.0.
|
205
|
+
tilt (2.0.5)
|
206
206
|
tins (1.6.0)
|
207
207
|
tzinfo (1.2.2)
|
208
208
|
thread_safe (~> 0.1)
|
@@ -226,4 +226,4 @@ DEPENDENCIES
|
|
226
226
|
simple_form_attachments!
|
227
227
|
|
228
228
|
BUNDLED WITH
|
229
|
-
1.
|
229
|
+
1.12.1
|
@@ -1,33 +1,36 @@
|
|
1
1
|
module SimpleFormAttachments
|
2
2
|
class UploadController < ActionController::Base
|
3
|
+
def show
|
4
|
+
@attachment = attachment_class.find(params[:id])
|
5
|
+
render json: { html: attachment_html(@attachment) }, status: :ok
|
6
|
+
end
|
7
|
+
|
3
8
|
def create
|
4
|
-
|
5
|
-
|
9
|
+
@attachment = new_attachment
|
10
|
+
res = @attachment.save
|
11
|
+
render json: { html: attachment_html(@attachment) }, status: (res ? :ok : :unprocessable_entity)
|
6
12
|
end
|
7
13
|
|
8
14
|
private # =============================================================
|
9
15
|
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def attachment_json
|
15
|
-
{ html: attachment_html }
|
16
|
+
def new_attachment
|
17
|
+
attachment_class.new(attachment_params).tap do |att|
|
18
|
+
att.temporary = true
|
19
|
+
end
|
16
20
|
end
|
17
21
|
|
18
|
-
def attachment_html
|
19
|
-
render_to_string
|
22
|
+
def attachment_html(attachment)
|
23
|
+
render_to_string(partial: 'simple_form_attachments/attachment_upload_template', locals: partial_locals.merge(attachment: attachment))
|
20
24
|
end
|
21
25
|
|
22
26
|
def partial_locals
|
23
27
|
{
|
24
|
-
|
25
|
-
parent_name: parent_name,
|
26
|
-
parent_class: parent_class,
|
28
|
+
attachment_relation: attachment_relation,
|
27
29
|
child_index: child_index,
|
28
|
-
attachment: attachment,
|
29
30
|
multiple: multiple?,
|
30
|
-
|
31
|
+
parent: parent,
|
32
|
+
parent_class: parent_class,
|
33
|
+
parent_name: parent_name
|
31
34
|
}
|
32
35
|
end
|
33
36
|
|
@@ -35,40 +38,59 @@ module SimpleFormAttachments
|
|
35
38
|
params.require(:attachment).permit!
|
36
39
|
end
|
37
40
|
|
38
|
-
def
|
39
|
-
params
|
41
|
+
def attachment_class
|
42
|
+
params.fetch(:attachment_type).constantize
|
40
43
|
end
|
41
44
|
|
42
|
-
def
|
43
|
-
params
|
45
|
+
def attachment_relation
|
46
|
+
params.fetch(:attachment_relation, {})
|
44
47
|
end
|
45
48
|
|
46
|
-
def
|
47
|
-
return unless
|
48
|
-
|
49
|
+
def attachment_relation_name
|
50
|
+
return unless attachment_relation.present?
|
51
|
+
attachment_relation.fetch(:name).to_sym
|
49
52
|
end
|
50
53
|
|
51
|
-
def
|
52
|
-
return unless
|
53
|
-
|
54
|
-
parent_class.new { |o| o.send(params.fetch(:attachment_relation).fetch(:name).to_sym) << attachment }
|
55
|
-
else
|
56
|
-
parent_class.new
|
57
|
-
end
|
54
|
+
def attachment_relation_key
|
55
|
+
return unless attachment_relation.present?
|
56
|
+
attachment_relation.fetch(:key).to_sym
|
58
57
|
end
|
59
58
|
|
60
59
|
def child_index
|
61
60
|
DateTime.now.strftime('%Q').to_i
|
62
61
|
end
|
63
62
|
|
64
|
-
|
63
|
+
def multiple_from_params
|
64
|
+
attachment_relation.fetch(:multiple, false)
|
65
|
+
end
|
65
66
|
|
66
67
|
def multiple?
|
67
|
-
['true', true, '1', 1].include?
|
68
|
+
['true', true, '1', 1].include?(multiple_from_params)
|
69
|
+
end
|
70
|
+
|
71
|
+
def referenced_from_params
|
72
|
+
attachment_relation.fetch(:referenced, false)
|
68
73
|
end
|
69
74
|
|
70
75
|
def referenced?
|
71
|
-
['true', true, '1', 1].include?
|
76
|
+
['true', true, '1', 1].include?(referenced_from_params)
|
77
|
+
end
|
78
|
+
|
79
|
+
def parent
|
80
|
+
return unless attachment_relation_name.present?
|
81
|
+
parent_class.new
|
82
|
+
end
|
83
|
+
|
84
|
+
def attachment_parent
|
85
|
+
params.fetch(:attachment_parent, {})
|
86
|
+
end
|
87
|
+
|
88
|
+
def parent_class
|
89
|
+
attachment_parent.fetch(:class, nil).safe_constantize
|
90
|
+
end
|
91
|
+
|
92
|
+
def parent_name
|
93
|
+
attachment_parent.fetch(:name, nil)
|
72
94
|
end
|
73
95
|
end
|
74
96
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
- form = ActionView::Helpers::FormBuilder.new(parent_name, parent, self, {})
|
2
|
-
|
3
2
|
= form.simple_fields_for attachment_relation[:name].to_sym, attachment, { child_index: child_index } do |fields|
|
4
3
|
- partial_locals = { attachment: attachment, form: form, fields: fields, multiple: multiple, relation_key: attachment_relation[:key] }
|
5
4
|
- partial_layout = 'layouts/simple_form_attachments/attachment_layout'
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
SimpleFormAttachments::Engine.routes.draw do
|
2
2
|
scope module: :simple_form_attachments do
|
3
|
-
|
3
|
+
get "attachments/:id" => "upload#show", as: :attachment
|
4
|
+
post "attachments" => "upload#create", as: :attachments
|
4
5
|
end
|
5
6
|
end
|
@@ -3,7 +3,6 @@ require 'i18n'
|
|
3
3
|
|
4
4
|
module SimpleFormAttachments
|
5
5
|
class AttachmentInput < SimpleForm::Inputs::Base
|
6
|
-
|
7
6
|
class << self
|
8
7
|
attr_accessor :configuration
|
9
8
|
|
@@ -19,7 +18,7 @@ module SimpleFormAttachments
|
|
19
18
|
|
20
19
|
# =====================================================================
|
21
20
|
|
22
|
-
def input
|
21
|
+
def input(wrapper_options)
|
23
22
|
template.content_tag :div, merge_wrapper_options(input_html_options, wrapper_options) do
|
24
23
|
template.concat attachment_blank_field
|
25
24
|
template.concat attachment_file_field
|
@@ -102,17 +101,17 @@ module SimpleFormAttachments
|
|
102
101
|
|
103
102
|
def multiple?
|
104
103
|
return false unless relation
|
105
|
-
!!
|
104
|
+
!!relation.macro.to_s.end_with?('many')
|
106
105
|
end
|
107
106
|
|
108
107
|
def referenced?
|
109
108
|
return false unless relation
|
110
|
-
!!(
|
109
|
+
!!relation_class.to_s.end_with?('Referenced')
|
111
110
|
end
|
112
111
|
|
113
112
|
def embedded?
|
114
113
|
return false unless relation
|
115
|
-
!!(
|
114
|
+
!!relation_class.to_s.end_with?('Embedded')
|
116
115
|
end
|
117
116
|
|
118
117
|
def sortable?
|
@@ -123,7 +122,7 @@ module SimpleFormAttachments
|
|
123
122
|
|
124
123
|
def attachments
|
125
124
|
return @builder.object.send(attribute_name).to_a unless multiple?
|
126
|
-
@builder.object.send(attribute_name).sort_by{ |a| @builder.object.send(relation_key).index(a.id) }
|
125
|
+
@builder.object.send(attribute_name).sort_by { |a| @builder.object.send(relation_key).index(a.id) }
|
127
126
|
end
|
128
127
|
|
129
128
|
def accepted_file_types
|
@@ -141,14 +140,14 @@ module SimpleFormAttachments
|
|
141
140
|
return unless validators
|
142
141
|
return unless file_validation_values_for(:ext)
|
143
142
|
extensions = file_validation_values_for(:ext)
|
144
|
-
extensions.map{ |e| ".#{e}" }
|
143
|
+
extensions.map { |e| ".#{e}" }
|
145
144
|
end
|
146
145
|
|
147
146
|
def validated_formats
|
148
147
|
return unless validators
|
149
148
|
return unless file_validation_values_for(:format)
|
150
149
|
formats = file_validation_values_for(:format)
|
151
|
-
formats.map{ |f| ".#{f}" }
|
150
|
+
formats.map { |f| ".#{f}" }
|
152
151
|
end
|
153
152
|
|
154
153
|
def validated_mime_types
|
@@ -158,18 +157,18 @@ module SimpleFormAttachments
|
|
158
157
|
mime_types
|
159
158
|
end
|
160
159
|
|
161
|
-
def file_validation_values_for
|
160
|
+
def file_validation_values_for(property)
|
162
161
|
return unless file_validation_for(property)
|
163
162
|
validation = file_validation_for(property)
|
164
|
-
validation.map{ |v| v.options.values_at(:as, :in) }.flatten.reject(&:blank?).uniq
|
163
|
+
validation.map { |v| v.options.values_at(:as, :in) }.flatten.reject(&:blank?).uniq
|
165
164
|
end
|
166
165
|
|
167
|
-
def file_validation_for
|
166
|
+
def file_validation_for(property)
|
168
167
|
return unless validators
|
169
|
-
validators.select{ |v| v.options[:property_name].to_s == property.to_s }
|
168
|
+
validators.select { |v| v.options[:property_name].to_s == property.to_s }
|
170
169
|
end
|
171
170
|
|
172
|
-
def validators(field
|
171
|
+
def validators(field = :file)
|
173
172
|
relation_class_name.constantize.validators_on(field)
|
174
173
|
end
|
175
174
|
|
@@ -187,7 +186,7 @@ module SimpleFormAttachments
|
|
187
186
|
input_html_options = {
|
188
187
|
multiple: multiple?,
|
189
188
|
accept: accepted_file_types,
|
190
|
-
class: 'file'
|
189
|
+
class: 'file'
|
191
190
|
}
|
192
191
|
template.label_tag('attachment[file]') do
|
193
192
|
template.file_field_tag('attachment[file]', input_html_options)
|
@@ -233,14 +232,16 @@ module SimpleFormAttachments
|
|
233
232
|
table_classes << 'sortable' if sortable?
|
234
233
|
template.content_tag :table, class: table_classes do
|
235
234
|
@builder.simple_fields_for attribute_name do |attachment_fields|
|
236
|
-
template.render
|
235
|
+
template.render(
|
236
|
+
partial: "simple_form_attachments/#{attachment_fields.object.to_partial_path}", format: :html, layout: 'layouts/simple_form_attachments/attachment_layout',
|
237
237
|
locals: {
|
238
238
|
attachment: attachment_fields.object,
|
239
239
|
fields: attachment_fields,
|
240
240
|
multiple: multiple?,
|
241
241
|
form: @builder,
|
242
|
-
relation_key: relation_key
|
242
|
+
relation_key: relation_key
|
243
243
|
}
|
244
|
+
)
|
244
245
|
end
|
245
246
|
end
|
246
247
|
end
|
@@ -252,6 +253,5 @@ module SimpleFormAttachments
|
|
252
253
|
template.render('simple_form_attachments/attachments/attachment.hbs.slim')
|
253
254
|
end
|
254
255
|
end
|
255
|
-
|
256
256
|
end
|
257
257
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
module SimpleFormAttachments
|
2
2
|
class Engine < ::Rails::Engine
|
3
|
-
|
4
3
|
engine_name = :simple_form_attachments
|
5
4
|
|
6
5
|
# Add yml files to I18n
|
7
|
-
I18n.load_path += Dir[
|
6
|
+
I18n.load_path += Dir[SimpleFormAttachments::Engine.root.join('config', 'locales', '**', '*.{rb,yml}')]
|
8
7
|
end
|
9
8
|
end
|
@@ -4,34 +4,32 @@ require_relative '../../../app/controllers/simple_form_attachments/upload_contro
|
|
4
4
|
|
5
5
|
module SimpleFormAttachments
|
6
6
|
describe UploadController do
|
7
|
-
|
8
7
|
setup do
|
9
8
|
@routes = SimpleFormAttachments::Engine.routes
|
10
9
|
end
|
11
10
|
|
12
|
-
let(:
|
13
|
-
{
|
14
|
-
attachment: { body: 'foo' },
|
15
|
-
attachment_parent: { class: 'Parent' },
|
16
|
-
attachment_relation: { name: 'attachments', multiple: true },
|
17
|
-
attachment_type: "Attachment"
|
18
|
-
}
|
19
|
-
}
|
20
|
-
let(:count) { Attachment.count }
|
21
|
-
let(:action) { post :create, params }
|
11
|
+
let(:count) { AttachmentTest.count }
|
22
12
|
|
23
13
|
# ---------------------------------------------------------------------
|
24
14
|
|
25
15
|
describe '#create' do
|
16
|
+
let(:params) do
|
17
|
+
{
|
18
|
+
attachment: { body: 'foo' },
|
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 }
|
25
|
+
|
26
26
|
it 'should succeed' do
|
27
27
|
action
|
28
28
|
must_respond_with :success
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'should create attachment of specified model' do
|
32
|
-
assert_difference
|
33
|
-
action
|
34
|
-
end
|
32
|
+
assert_difference('AttachmentTest.count') { action }
|
35
33
|
end
|
36
34
|
|
37
35
|
it 'must mark the newly upladed attachment as temporary' do
|
@@ -48,5 +46,32 @@ module SimpleFormAttachments
|
|
48
46
|
end
|
49
47
|
end
|
50
48
|
end
|
49
|
+
|
50
|
+
# ---------------------------------------------------------------------
|
51
|
+
|
52
|
+
describe '#show' do
|
53
|
+
let(:attachment) { AttachmentTest.create! }
|
54
|
+
let(:params) do
|
55
|
+
{
|
56
|
+
id: attachment.id.to_s,
|
57
|
+
attachment_parent: { class: 'Parent' },
|
58
|
+
attachment_relation: { name: 'attachments', multiple: true },
|
59
|
+
attachment_type: 'AttachmentTest'
|
60
|
+
}
|
61
|
+
end
|
62
|
+
let(:action) { get :show, params }
|
63
|
+
|
64
|
+
it 'should succeed' do
|
65
|
+
action
|
66
|
+
must_respond_with :success
|
67
|
+
end
|
68
|
+
|
69
|
+
describe 'returned JSON' do
|
70
|
+
it 'should contain template with correct locals' do
|
71
|
+
action
|
72
|
+
assert_template 'simple_form_attachments/_attachment_upload_template', locals: { multiple: true, parent_class: params[:attachment_parent][:class].constantize }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
51
76
|
end
|
52
77
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
require_relative '../../../../app/models/concerns/simple_form_attachments/attachment'
|
3
3
|
|
4
|
-
describe
|
5
|
-
let(:temporary_attachment) {
|
6
|
-
let(:permanent_attachment) {
|
4
|
+
describe AttachmentTest do
|
5
|
+
let(:temporary_attachment) { AttachmentTest.new(temporary: true) }
|
6
|
+
let(:permanent_attachment) { AttachmentTest.new }
|
7
7
|
|
8
8
|
before do
|
9
9
|
temporary_attachment.save
|
@@ -13,29 +13,29 @@ describe Attachment do
|
|
13
13
|
describe 'scopes' do
|
14
14
|
describe ':temporary' do
|
15
15
|
it 'has :temporary scope' do
|
16
|
-
|
16
|
+
AttachmentTest.must_respond_to :temporary
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'returns the temporary attachments' do
|
20
|
-
|
20
|
+
AttachmentTest.temporary.to_a.must_include temporary_attachment
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'does not return the temporary attachments for' do
|
24
|
-
|
24
|
+
AttachmentTest.temporary.to_a.wont_include permanent_attachment
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe ':permanent' do
|
29
29
|
it 'has :permanent scope' do
|
30
|
-
|
30
|
+
AttachmentTest.must_respond_to :permanent
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'returns the permanent attachments' do
|
34
|
-
|
34
|
+
AttachmentTest.permanent.to_a.must_include permanent_attachment
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'does not return the temporary attachments for' do
|
38
|
-
|
38
|
+
AttachmentTest.permanent.to_a.wont_include temporary_attachment
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -7,9 +7,9 @@ describe Parent do
|
|
7
7
|
let(:attachment_reflection) { parent.reflect_on_association(:attachment) }
|
8
8
|
let(:attachments_reflection) { parent.reflect_on_association(:attachments) }
|
9
9
|
|
10
|
-
let(:related_attachment_one) {
|
11
|
-
let(:related_attachment_two) {
|
12
|
-
let(:unrelated_attachment) {
|
10
|
+
let(:related_attachment_one) { AttachmentTest.create(temporary: true) }
|
11
|
+
let(:related_attachment_two) { AttachmentTest.create(temporary: true) }
|
12
|
+
let(:unrelated_attachment) { AttachmentTest.create(temporary: true) }
|
13
13
|
|
14
14
|
# ---------------------------------------------------------------------
|
15
15
|
|
@@ -25,7 +25,7 @@ describe Parent do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'respects definition of :class_name' do
|
28
|
-
attachments_reflection.class_name.must_equal '
|
28
|
+
attachments_reflection.class_name.must_equal 'AttachmentTest'
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'passes the :dependent option to the relation' do
|
@@ -49,7 +49,7 @@ describe Parent do
|
|
49
49
|
parent.must_respond_to :attachment
|
50
50
|
end
|
51
51
|
it 'respects definition of :class_name' do
|
52
|
-
attachment_reflection.class_name.must_equal '
|
52
|
+
attachment_reflection.class_name.must_equal 'AttachmentTest'
|
53
53
|
end
|
54
54
|
it 'passes the :dependent option to the relation' do
|
55
55
|
attachments_reflection.dependent.must_equal :destroy
|
@@ -85,11 +85,13 @@ describe Parent do
|
|
85
85
|
before do
|
86
86
|
parent.attachments << related_attachment_one
|
87
87
|
end
|
88
|
+
|
88
89
|
it 'marks has_many attachments as permanent' do
|
89
90
|
related_attachment_one.reload.temporary.must_equal true
|
90
91
|
parent.send(:mark_attachments_permanent)
|
91
92
|
related_attachment_one.reload.temporary.must_equal false
|
92
93
|
end
|
94
|
+
|
93
95
|
it 'does not mark other attachments as permanent' do
|
94
96
|
unrelated_attachment.temporary.must_equal true
|
95
97
|
end
|
@@ -99,15 +101,15 @@ describe Parent do
|
|
99
101
|
before do
|
100
102
|
parent.attachment = related_attachment_two
|
101
103
|
end
|
104
|
+
|
102
105
|
it 'marks has_many attachments as permanent' do
|
103
106
|
related_attachment_two.reload.temporary.must_equal true
|
104
107
|
parent.send(:mark_attachment_permanent)
|
105
108
|
related_attachment_two.reload.temporary.must_equal false
|
106
109
|
end
|
110
|
+
|
107
111
|
it 'does not mark other attachments as permanent' do
|
108
112
|
unrelated_attachment.temporary.must_equal true
|
109
113
|
end
|
110
114
|
end
|
111
|
-
|
112
|
-
# ---------------------------------------------------------------------
|
113
115
|
end
|
data/test/test_helper.rb
CHANGED
@@ -52,7 +52,8 @@ end
|
|
52
52
|
|
53
53
|
# ---------------------------------------------------------------------
|
54
54
|
|
55
|
-
class
|
55
|
+
class AttachmentTest
|
56
|
+
include Mongoid::Document
|
56
57
|
include SimpleFormAttachments::Attachment
|
57
58
|
field :body, type: String
|
58
59
|
end
|
@@ -61,6 +62,6 @@ class Parent
|
|
61
62
|
include Mongoid::Document
|
62
63
|
include SimpleFormAttachments::HasAttachments
|
63
64
|
|
64
|
-
has_one_attachment :attachment, class_name: '
|
65
|
-
has_many_attachments :attachments, class_name: '
|
65
|
+
has_one_attachment :attachment, class_name: 'AttachmentTest', dependent: :destroy
|
66
|
+
has_many_attachments :attachments, class_name: 'AttachmentTest', dependent: :destroy
|
66
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_form_attachments
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Celizna
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-07-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -230,6 +230,7 @@ executables: []
|
|
230
230
|
extensions: []
|
231
231
|
extra_rdoc_files: []
|
232
232
|
files:
|
233
|
+
- ".bundle/config"
|
233
234
|
- ".coveralls.yml"
|
234
235
|
- ".gitignore"
|
235
236
|
- ".travis.yml"
|