adrift 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -0,0 +1,128 @@
1
+ shared_examples_for Adrift::Integration::Base do
2
+ let(:instance) { klass.new }
3
+ let(:klass) do
4
+ Class.new.tap do |klass|
5
+ klass.send :extend, described_class
6
+ klass.send :attr_accessor, :avatar_filename
7
+ end
8
+ end
9
+
10
+ context "when extends a class" do
11
+ it "adds a .attachment method" do
12
+ klass.should respond_to(:attachment)
13
+ end
14
+ end
15
+
16
+ describe ".attachment" do
17
+ before { klass.attachment :avatar }
18
+
19
+ it "adds a #attachments method" do
20
+ klass.instance_methods.should include(:attachments)
21
+ end
22
+
23
+ it "adds a #save_attachments method" do
24
+ klass.instance_methods.should include(:save_attachments)
25
+ end
26
+
27
+ it "adds a #destroy_attachments method" do
28
+ klass.instance_methods.should include(:destroy_attachments)
29
+ end
30
+
31
+ it "adds an attachment reader method" do
32
+ klass.instance_methods.should include(:avatar)
33
+ end
34
+
35
+ it "adds an attachment writer method" do
36
+ klass.instance_methods.should include(:avatar)
37
+ end
38
+
39
+ it "registers the attachment definition" do
40
+ definition = { :styles => { :normal => '100x100' } }
41
+ klass.attachment :avatar, definition
42
+ klass.attachment_definitions[:avatar].should == definition
43
+ end
44
+ end
45
+
46
+ describe ".save_attachments" do
47
+ it "saves every attachment" do
48
+ klass.attachment :avatar
49
+ klass.attachment :photo
50
+ instance.avatar.should_receive(:save)
51
+ instance.photo.should_receive(:save)
52
+ instance.save_attachments
53
+ end
54
+ end
55
+
56
+ describe ".destroy_attachments" do
57
+ it "destroy every attachment" do
58
+ klass.attachment :avatar
59
+ klass.attachment :photo
60
+ instance.avatar.should_receive(:destroy)
61
+ instance.photo.should_receive(:destroy)
62
+ instance.destroy_attachments
63
+ end
64
+ end
65
+
66
+ describe "attachment reader" do
67
+ before { klass.attachment :avatar }
68
+
69
+ context "when an :class option hasn't been specified" do
70
+ it "returns an instance of Adrift::Attachment" do
71
+ instance.avatar.should be_instance_of(Adrift::Attachment)
72
+ end
73
+ end
74
+
75
+ context "when an :class option has been specified" do
76
+ before do
77
+ klass.attachment(
78
+ :avatar,
79
+ :style => { :small => '50x50' },
80
+ :class => attachment_class
81
+ )
82
+ end
83
+ let(:attachment_class) { Class.new }
84
+
85
+ it "returns an instance of the specified class" do
86
+ instance.avatar.should be_instance_of(attachment_class)
87
+ end
88
+
89
+ it "instantiates the class withouth the :class option" do
90
+ attachment_class.should_receive(:new).with(
91
+ anything,
92
+ anything,
93
+ hash_not_including(:class)
94
+ )
95
+ instance.avatar
96
+ end
97
+ end
98
+
99
+ it "is always the same" do
100
+ instance.avatar.should === instance.avatar
101
+ end
102
+
103
+ it "has the specified name" do
104
+ instance.avatar.name.should == :avatar
105
+ end
106
+
107
+ it "has the specified options" do
108
+ styles = { :small => '50x50' }
109
+ klass.attachment :avatar, :styles => styles
110
+ instance.avatar.styles.should == styles
111
+ end
112
+ end
113
+
114
+ describe "attachment writer" do
115
+ let(:up_file_representation) do
116
+ double('up file representation', {
117
+ :original_filename => 'me.png',
118
+ :tempfile => double('tempfile', :path => '/tmp/123')
119
+ })
120
+ end
121
+
122
+ it "assigns its argument to the attachment" do
123
+ klass.attachment :avatar
124
+ instance.avatar = up_file_representation
125
+ instance.avatar.filename.should == 'me.png'
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,47 @@
1
+ require 'adrift'
2
+ require 'adrift/integration'
3
+ require 'shared_examples/integration/base'
4
+
5
+ module Adrift
6
+ module Spec
7
+ module Helpers
8
+ def user_double_class
9
+ @user_class ||= Class.new do
10
+ attr_accessor :id, :avatar_filename
11
+
12
+ def update_attributes(attrs)
13
+ attrs.each { |name, value| send "#{name}=", value }
14
+ end
15
+
16
+ def self.name
17
+ 'User'
18
+ end
19
+ end
20
+ end
21
+
22
+ def user_double(attrs={})
23
+ user_double_class.new.tap { |user| user.update_attributes(attrs) }
24
+ end
25
+
26
+ def up_file_double(stubs={})
27
+ default_stubs = { :original_filename => 'new_me.png', :path => '/tmp/213' }
28
+ double('up file', default_stubs.merge(stubs))
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ class << FileUtils
35
+ def chmod(*) end
36
+ def cp(*) end
37
+ def mkdir_p(*) end
38
+ def rm(*) end
39
+ end
40
+
41
+ module Kernel
42
+ def `(*) end
43
+ end
44
+
45
+ RSpec.configure do |c|
46
+ c.include Adrift::Spec::Helpers
47
+ end
metadata ADDED
@@ -0,0 +1,277 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: adrift
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Gabriel Andretta
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-03-13 00:00:00 -03:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activesupport
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 3
29
+ - 0
30
+ version: "3.0"
31
+ type: :runtime
32
+ prerelease: false
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: i18n
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 2
56
+ - 4
57
+ version: "2.4"
58
+ type: :development
59
+ prerelease: false
60
+ version_requirements: *id003
61
+ - !ruby/object:Gem::Dependency
62
+ name: cucumber
63
+ requirement: &id004 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
70
+ - 10
71
+ version: "0.10"
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: *id004
75
+ - !ruby/object:Gem::Dependency
76
+ name: activerecord
77
+ requirement: &id005 !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ segments:
83
+ - 3
84
+ - 0
85
+ version: "3.0"
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: *id005
89
+ - !ruby/object:Gem::Dependency
90
+ name: dm-core
91
+ requirement: &id006 !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ segments:
97
+ - 1
98
+ - 0
99
+ version: "1.0"
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *id006
103
+ - !ruby/object:Gem::Dependency
104
+ name: dm-migrations
105
+ requirement: &id007 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ segments:
111
+ - 0
112
+ version: "0"
113
+ type: :development
114
+ prerelease: false
115
+ version_requirements: *id007
116
+ - !ruby/object:Gem::Dependency
117
+ name: dm-validations
118
+ requirement: &id008 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ segments:
124
+ - 0
125
+ version: "0"
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: *id008
129
+ - !ruby/object:Gem::Dependency
130
+ name: dm-sqlite-adapter
131
+ requirement: &id009 !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ type: :development
140
+ prerelease: false
141
+ version_requirements: *id009
142
+ - !ruby/object:Gem::Dependency
143
+ name: sqlite3
144
+ requirement: &id010 !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ segments:
150
+ - 0
151
+ version: "0"
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: *id010
155
+ - !ruby/object:Gem::Dependency
156
+ name: rake
157
+ requirement: &id011 !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ segments:
163
+ - 0
164
+ version: "0"
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: *id011
168
+ - !ruby/object:Gem::Dependency
169
+ name: ZenTest
170
+ requirement: &id012 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ segments:
176
+ - 0
177
+ version: "0"
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: *id012
181
+ - !ruby/object:Gem::Dependency
182
+ name: rdoc
183
+ requirement: &id013 !ruby/object:Gem::Requirement
184
+ none: false
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ segments:
189
+ - 3
190
+ - 5
191
+ version: "3.5"
192
+ type: :development
193
+ prerelease: false
194
+ version_requirements: *id013
195
+ description: Simplistic attachment management
196
+ email:
197
+ - ohhgabriel@gmail.com
198
+ executables: []
199
+
200
+ extensions: []
201
+
202
+ extra_rdoc_files: []
203
+
204
+ files:
205
+ - .gitignore
206
+ - .rspec
207
+ - Gemfile
208
+ - LICENSE
209
+ - README.rdoc
210
+ - Rakefile
211
+ - adrift.gemspec
212
+ - autotest/discover.rb
213
+ - features/active_record_integration.feature
214
+ - features/data_mapper_integration.feature
215
+ - features/step_definitions/model_steps.rb
216
+ - features/support/env.rb
217
+ - features/support/world.rb
218
+ - lib/adrift.rb
219
+ - lib/adrift/attachment.rb
220
+ - lib/adrift/file_to_attach.rb
221
+ - lib/adrift/integration.rb
222
+ - lib/adrift/integration/active_record.rb
223
+ - lib/adrift/integration/base.rb
224
+ - lib/adrift/integration/data_mapper.rb
225
+ - lib/adrift/pattern.rb
226
+ - lib/adrift/processor.rb
227
+ - lib/adrift/railtie.rb
228
+ - lib/adrift/storage.rb
229
+ - lib/adrift/version.rb
230
+ - spec/adrift/attachment_spec.rb
231
+ - spec/adrift/file_to_attach_spec.rb
232
+ - spec/adrift/integration/active_record_spec.rb
233
+ - spec/adrift/integration/base_spec.rb
234
+ - spec/adrift/integration/data_mapper_spec.rb
235
+ - spec/adrift/pattern_spec.rb
236
+ - spec/adrift/processor_spec.rb
237
+ - spec/adrift/storage_spec.rb
238
+ - spec/fixtures/me.png
239
+ - spec/fixtures/me_no_colors.png
240
+ - spec/shared_examples/integration/base.rb
241
+ - spec/spec_helper.rb
242
+ has_rdoc: true
243
+ homepage: ""
244
+ licenses: []
245
+
246
+ post_install_message:
247
+ rdoc_options: []
248
+
249
+ require_paths:
250
+ - lib
251
+ required_ruby_version: !ruby/object:Gem::Requirement
252
+ none: false
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ hash: 1019387313
257
+ segments:
258
+ - 0
259
+ version: "0"
260
+ required_rubygems_version: !ruby/object:Gem::Requirement
261
+ none: false
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ hash: 1019387313
266
+ segments:
267
+ - 0
268
+ version: "0"
269
+ requirements: []
270
+
271
+ rubyforge_project: adrift
272
+ rubygems_version: 1.3.7
273
+ signing_key:
274
+ specification_version: 3
275
+ summary: Simplistic attachment management
276
+ test_files: []
277
+