adrift 0.0.1

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.
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
+