dm-paperclip 2.1.2.1 → 2.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,225 +0,0 @@
1
- require 'test/helper'
2
-
3
- class Dummy
4
- # This is a dummy class
5
- end
6
-
7
- class AttachmentTest < Test::Unit::TestCase
8
- context "Attachment default_options" do
9
- setup do
10
- rebuild_model
11
- @old_default_options = Paperclip::Attachment.default_options.dup
12
- @new_default_options = @old_default_options.merge({
13
- :path => "argle/bargle",
14
- :url => "fooferon",
15
- :default_url => "not here.png"
16
- })
17
- end
18
-
19
- teardown do
20
- Paperclip::Attachment.default_options.merge! @old_default_options
21
- end
22
-
23
- should "be overrideable" do
24
- Paperclip::Attachment.default_options.merge!(@new_default_options)
25
- @new_default_options.keys.each do |key|
26
- assert_equal @new_default_options[key],
27
- Paperclip::Attachment.default_options[key]
28
- end
29
- end
30
-
31
- context "without an Attachment" do
32
- setup do
33
- @dummy = Dummy.new
34
- end
35
-
36
- should "return false when asked exists?" do
37
- assert !@dummy.avatar.exists?
38
- end
39
- end
40
-
41
- context "on an Attachment" do
42
- setup do
43
- @dummy = Dummy.new
44
- @attachment = @dummy.avatar
45
- end
46
-
47
- Paperclip::Attachment.default_options.keys.each do |key|
48
- should "be the default_options for #{key}" do
49
- assert_equal @old_default_options[key],
50
- @attachment.instance_variable_get("@#{key}"),
51
- key
52
- end
53
- end
54
-
55
- context "when redefined" do
56
- setup do
57
- Paperclip::Attachment.default_options.merge!(@new_default_options)
58
- @dummy = Dummy.new
59
- @attachment = @dummy.avatar
60
- end
61
-
62
- Paperclip::Attachment.default_options.keys.each do |key|
63
- should "be the new default_options for #{key}" do
64
- assert_equal @new_default_options[key],
65
- @attachment.instance_variable_get("@#{key}"),
66
- key
67
- end
68
- end
69
- end
70
- end
71
- end
72
-
73
- context "An attachment with similarly named interpolations" do
74
- setup do
75
- rebuild_model :path => ":id.omg/:id-bbq/:idwhat/:id_partition.wtf"
76
- @dummy = Dummy.new
77
- @dummy.stubs(:id).returns(1024)
78
- @file = File.new(File.join(File.dirname(__FILE__),
79
- "fixtures",
80
- "5k.png"))
81
- @dummy.avatar = @file
82
- end
83
-
84
- should "make sure that they are interpolated correctly" do
85
- assert_equal "1024.omg/1024-bbq/1024what/000/001/024.wtf", @dummy.avatar.path
86
- end
87
- end
88
-
89
- context "An attachment" do
90
- setup do
91
- Paperclip::Attachment.default_options.merge!({
92
- :path => ":merb_root/tmp/:attachment/:class/:style/:id/:basename.:extension"
93
- })
94
- FileUtils.rm_rf("tmp")
95
- @instance = stub
96
- @instance.stubs(:id).returns(41)
97
- @instance.stubs(:class).returns(Dummy)
98
- @instance.stubs(:attribute_get).with(:test_file_name).returns(nil)
99
- @attachment = Paperclip::Attachment.new(:test,
100
- @instance)
101
- @file = File.new(File.join(File.dirname(__FILE__),
102
- "fixtures",
103
- "5k.png"))
104
- end
105
-
106
- should "return its default_url when no file assigned" do
107
- assert @attachment.to_file.nil?
108
- assert_equal "/tests/original/missing.png", @attachment.url
109
- assert_equal "/tests/blah/missing.png", @attachment.url(:blah)
110
- end
111
-
112
- context "with a file assigned in the database" do
113
- setup do
114
- @instance.stubs(:attribute_get).with(:test_file_name).returns('5k.png')
115
- end
116
-
117
- should "return a correct url even if the file does not exist" do
118
- assert_nil @attachment.to_file
119
- assert_equal "/tests/41/blah/5k.png", @attachment.url(:blah)
120
- end
121
-
122
- should "return the proper path when filename has a single .'s" do
123
- assert_equal "./test/../tmp/tests/dummies/original/41/5k.png", @attachment.path
124
- end
125
-
126
- should "return the proper path when filename has multiple .'s" do
127
- @instance.stubs(:attribute_get).with(:test_file_name).returns("5k.old.png")
128
- assert_equal "./test/../tmp/tests/dummies/original/41/5k.old.png", @attachment.path
129
- end
130
-
131
- context "when expecting three styles" do
132
- setup do
133
- styles = {:styles => { :large => ["400x400", :png],
134
- :medium => ["100x100", :gif],
135
- :small => ["32x32#", :jpg]}}
136
- @attachment = Paperclip::Attachment.new(:test,
137
- @instance,
138
- styles)
139
- end
140
-
141
- context "and assigned a file" do
142
- setup do
143
- @instance.expects(:update_attributes).with({ :test_file_name => nil,
144
- :test_content_type => nil,
145
- :test_file_size => nil })
146
- @instance.expects(:update_attributes).with( { :test_file_name => File.basename(@file.path),
147
- :test_content_type => "image/png",
148
- :test_file_size => @file.size })
149
- @attachment.assign(@file)
150
- end
151
-
152
- should "be dirty" do
153
- assert @attachment.dirty?
154
- end
155
-
156
- context "and saved" do
157
- setup do
158
- @attachment.save
159
- end
160
-
161
- should "return the real url" do
162
- assert @attachment.to_file
163
- assert_equal "/tests/41/original/5k.png", @attachment.url
164
- assert_equal "/tests/41/small/5k.jpg", @attachment.url(:small)
165
- end
166
-
167
- should "commit the files to disk" do
168
- [:large, :medium, :small].each do |style|
169
- io = @attachment.to_io(style)
170
- assert File.exists?(io)
171
- assert ! io.is_a?(::Tempfile)
172
- end
173
- end
174
-
175
- should "save the files as the right formats and sizes" do
176
- [[:large, 400, 61, "PNG"],
177
- [:medium, 100, 15, "GIF"],
178
- [:small, 32, 32, "JPEG"]].each do |style|
179
- cmd = "identify -format '%w %h %b %m' " +
180
- "#{@attachment.to_io(style.first).path}"
181
- out = `#{cmd}`
182
- width, height, size, format = out.split(" ")
183
- assert_equal style[1].to_s, width.to_s
184
- assert_equal style[2].to_s, height.to_s
185
- assert_equal style[3].to_s, format.to_s
186
- end
187
- end
188
-
189
- should "still have its #file attribute not be nil" do
190
- assert ! @attachment.to_file.nil?
191
- end
192
-
193
- context "and deleted" do
194
- setup do
195
- @existing_names = @attachment.styles.keys.collect do |style|
196
- @attachment.path(style)
197
- end
198
- @instance.expects(:update_attributes).with({ :test_file_name => nil,
199
- :test_content_type => nil,
200
- :test_file_size => nil })
201
- @attachment.assign nil
202
- @attachment.save
203
- end
204
-
205
- should "delete the files" do
206
- @existing_names.each{|f| assert ! File.exists?(f) }
207
- end
208
- end
209
- end
210
- end
211
- end
212
-
213
- end
214
-
215
- context "when trying a nonexistant storage type" do
216
- setup do
217
- rebuild_model :storage => :not_here
218
- end
219
-
220
- should "not be able to find the module" do
221
- assert_raise(NameError){ Dummy.new.avatar }
222
- end
223
- end
224
- end
225
- end