gnuside-carrierwave-mongoid 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,74 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'rspec'
4
+ require 'tempfile'
5
+ require 'stringio'
6
+
7
+ require 'carrierwave'
8
+ require 'carrierwave/mongoid'
9
+
10
+ Mongoid.configure do |config|
11
+ config.connect_to('carrierwave_test')
12
+ end
13
+
14
+ def file_path( *paths )
15
+ File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', *paths))
16
+ end
17
+
18
+ def public_path( *paths )
19
+ File.expand_path(File.join(File.dirname(__FILE__), 'public', *paths))
20
+ end
21
+
22
+ CarrierWave.root = public_path
23
+
24
+ module CarrierWave
25
+ module Test
26
+ module MockFiles
27
+ def stub_file(filename, mime_type=nil, fake_name=nil)
28
+ f = File.open(file_path(filename))
29
+ return f
30
+ end
31
+
32
+ def stub_tempfile(filename, mime_type=nil, fake_name=nil)
33
+ raise "#{path} file does not exist" unless File.exist?(file_path(filename))
34
+
35
+ t = Tempfile.new(filename)
36
+ FileUtils.copy_file(file_path(filename), t.path)
37
+
38
+ t.stub(:local_path => "",
39
+ :original_filename => filename || fake_name,
40
+ :content_type => mime_type)
41
+
42
+ return t
43
+ end
44
+ end
45
+
46
+ module I18nHelpers
47
+ def change_locale_and_store_translations(locale, translations, &block)
48
+ current_locale = I18n.locale
49
+ begin
50
+ I18n.backend.store_translations locale, translations
51
+ I18n.locale = locale
52
+ yield
53
+ ensure
54
+ I18n.reload!
55
+ I18n.locale = current_locale
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ class SIO < StringIO
63
+ attr_accessor :filename
64
+
65
+ def initialize(filename, *args, &block)
66
+ @filename = filename
67
+ super(*args, &block)
68
+ end
69
+ end
70
+
71
+ RSpec.configure do |config|
72
+ config.include CarrierWave::Test::MockFiles
73
+ config.include CarrierWave::Test::I18nHelpers
74
+ end
@@ -0,0 +1,184 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ require 'spec_helper'
5
+
6
+
7
+ shared_examples_for "a GridFS connection" do
8
+ describe '#store!' do
9
+ before do
10
+ @uploader.stub(:store_path).and_return('uploads/bar.txt')
11
+ @grid_fs_file = @storage.store!(@file)
12
+ end
13
+
14
+ it "should upload the file to gridfs" do
15
+ @grid['uploads/bar.txt'].data.should == 'this is stuff'
16
+ end
17
+
18
+ it "should upload the file to gridfs" do
19
+ @grid['uploads/bar.txt'].data.should == 'this is stuff'
20
+ end
21
+
22
+ it "should have the same path that it was stored as" do
23
+ @grid_fs_file.path.should == 'uploads/bar.txt'
24
+ end
25
+
26
+ it "should read the contents of the file" do
27
+ @grid_fs_file.read.should == "this is stuff"
28
+ end
29
+
30
+ it "should not have a URL" do
31
+ @grid_fs_file.url.should be_nil
32
+ end
33
+
34
+ it "should be deletable" do
35
+ @grid_fs_file.delete
36
+ @grid['uploads/bar.txt'].should be_nil
37
+ end
38
+
39
+ it "should store the content type on GridFS" do
40
+ @grid_fs_file.content_type.should == 'text/plain'
41
+ end
42
+
43
+ it "should have a file length" do
44
+ @grid_fs_file.file_length.should == 13
45
+ end
46
+ end
47
+
48
+ describe '#retrieve!' do
49
+ before do
50
+ @grid.clear
51
+ @grid['uploads/bar.txt'] = StringIO.new('A test, 1234')
52
+ @uploader.stub(:store_path).with('bar.txt').and_return('uploads/bar.txt')
53
+ @grid_fs_file = @storage.retrieve!('bar.txt')
54
+ end
55
+
56
+ it "should retrieve the file contents from gridfs" do
57
+ @grid_fs_file.read.chomp.should == "A test, 1234"
58
+ end
59
+
60
+ it "should have the same path that it was stored as" do
61
+ @grid_fs_file.path.should == 'uploads/bar.txt'
62
+ end
63
+
64
+ it "should not have a URL unless access_url is set" do
65
+ @grid_fs_file.url.should be_nil
66
+ end
67
+
68
+ it "should return a relative URL path if access_url is set to the root path" do
69
+ @uploader.stub(:grid_fs_access_url).and_return("/")
70
+ @grid_fs_file.url.should == "/uploads/bar.txt"
71
+ end
72
+
73
+ it "should return a URL path if access_url is set to a file path" do
74
+ @uploader.stub(:grid_fs_access_url).and_return("/image/show")
75
+ @grid_fs_file.url.should == "/image/show/uploads/bar.txt"
76
+ end
77
+
78
+ it "should return an absolute URL if access_url is set to an absolute URL" do
79
+ @uploader.stub(:grid_fs_access_url).and_return("http://example.com/images/")
80
+ @grid_fs_file.url.should == "http://example.com/images/uploads/bar.txt"
81
+ end
82
+
83
+ it "should be deletable" do
84
+ @grid_fs_file.delete
85
+ @grid['uploads/bar.txt'].should be_nil
86
+ end
87
+ end
88
+
89
+ describe '#retrieve! on a store_dir with leading slash' do
90
+ before do
91
+ @uploader.stub(:store_path).with('bar.txt').and_return('/uploads/bar.txt')
92
+ @grid_fs_file = @storage.retrieve!('bar.txt')
93
+ end
94
+
95
+ it "should return a relative URL path if access_url is set to the root path" do
96
+ @uploader.stub(:grid_fs_access_url).and_return("/")
97
+ @grid_fs_file.url.should == "/uploads/bar.txt"
98
+ end
99
+ end
100
+
101
+ end
102
+
103
+ if defined?(Mongoid::GridFs)
104
+ describe CarrierWave::Storage::GridFS do
105
+
106
+ before do
107
+ @uploader = mock('an uploader')
108
+ @uploader.stub!(:grid_fs_access_url).and_return(nil)
109
+ end
110
+
111
+ context "when reusing an existing connection manually" do
112
+ before do
113
+ @uploader.stub!(:grid_fs_connection).and_return(@database)
114
+
115
+ @grid = ::Mongoid::GridFs
116
+
117
+ @storage = CarrierWave::Storage::GridFS.new(@uploader)
118
+ @file = stub_tempfile('test.jpg', 'application/xml')
119
+ end
120
+
121
+ it_should_behave_like "a GridFS connection"
122
+
123
+ # Calling #recreate_versions! on uploaders has been known to fail on
124
+ # remotely hosted files. This is due to a variety of issues, but this test
125
+ # makes sure that there's no unnecessary errors during the process
126
+ describe "#recreate_versions!" do
127
+ before do
128
+ @uploader_class = Class.new(CarrierWave::Uploader::Base)
129
+ @uploader_class.class_eval{
130
+ include CarrierWave::MiniMagick
131
+ storage :grid_fs
132
+
133
+ process :resize_to_fit => [10, 10]
134
+ }
135
+
136
+ @versioned = @uploader_class.new
137
+
138
+ @versioned.store! File.open(file_path('portrait.jpg'))
139
+ end
140
+
141
+ after do
142
+ FileUtils.rm_rf(public_path)
143
+ end
144
+
145
+ it "recreates versions stored remotely without error" do
146
+ lambda {
147
+ @versioned.recreate_versions!
148
+ }.should_not raise_error
149
+
150
+ @versioned.should be_present
151
+ end
152
+ end
153
+
154
+ describe "resize_to_fill" do
155
+ before do
156
+ @uploader_class = Class.new(CarrierWave::Uploader::Base)
157
+ @uploader_class.class_eval{
158
+ include CarrierWave::MiniMagick
159
+ storage :grid_fs
160
+ }
161
+
162
+ @versioned = @uploader_class.new
163
+
164
+ @versioned.store! File.open(file_path('portrait.jpg'))
165
+ end
166
+
167
+ after do
168
+ FileUtils.rm_rf(public_path)
169
+ end
170
+
171
+ it "resizes the file with out error" do
172
+ lambda {
173
+ @versioned.resize_to_fill(200, 200)
174
+ }.should_not raise_error
175
+
176
+ end
177
+ end
178
+ end
179
+
180
+ after do
181
+ @grid.clear
182
+ end
183
+ end
184
+ end
metadata ADDED
@@ -0,0 +1,210 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gnuside-carrierwave-mongoid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.6
5
+ platform: ruby
6
+ authors:
7
+ - GlebTv
8
+ - Jonas Nicklas
9
+ - Trevor Turk
10
+ - Roland Laurès
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2013-12-13 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: mongoid
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '3.0'
23
+ - - "<"
24
+ - !ruby/object:Gem::Version
25
+ version: '5.0'
26
+ type: :runtime
27
+ prerelease: false
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
33
+ - - "<"
34
+ - !ruby/object:Gem::Version
35
+ version: '5.0'
36
+ - !ruby/object:Gem::Dependency
37
+ name: carrierwave
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.8.0
43
+ - - "<"
44
+ - !ruby/object:Gem::Version
45
+ version: 0.10.0
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.8.0
53
+ - - "<"
54
+ - !ruby/object:Gem::Version
55
+ version: 0.10.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: mongoid
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 4.0.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 4.0.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: mongoid-grid_fs
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '1.9'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '1.9'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '2.14'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '2.14'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rake
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '10.0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '10.0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: mini_magick
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: pry
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ description: This fork is made to be compatible with rails 4
141
+ email:
142
+ - jonas.nicklas@gmail.com
143
+ - roland.laures@gnuside.com
144
+ executables: []
145
+ extensions: []
146
+ extra_rdoc_files: []
147
+ files:
148
+ - ".gitignore"
149
+ - ".ruby-gemset"
150
+ - ".ruby-version"
151
+ - ".travis.yml"
152
+ - Gemfile
153
+ - Gemfile.lock
154
+ - LICENSE
155
+ - README.md
156
+ - Rakefile
157
+ - gemfiles/carrierwave-0.8.gemfile
158
+ - gemfiles/carrierwave-master.gemfile
159
+ - gemfiles/mongoid-4.0.gemfile
160
+ - gnuside-carrierwave-mongoid.gemspec
161
+ - lib/carrierwave/mongoid.rb
162
+ - lib/carrierwave/mongoid/version.rb
163
+ - lib/carrierwave/storage/grid_fs.rb
164
+ - lib/glebtv-carrierwave-mongoid.rb
165
+ - log/.gitkeep
166
+ - spec/fixtures/new.jpeg
167
+ - spec/fixtures/new.txt
168
+ - spec/fixtures/old.jpeg
169
+ - spec/fixtures/old.txt
170
+ - spec/fixtures/portrait.jpg
171
+ - spec/fixtures/test.jpeg
172
+ - spec/fixtures/test.jpg
173
+ - spec/mongoid_spec.rb
174
+ - spec/spec_helper.rb
175
+ - spec/storage/grid_fs_spec.rb
176
+ homepage: https://github.com/Gnuside/carrierwave-mongoid
177
+ licenses:
178
+ - MIT
179
+ metadata: {}
180
+ post_install_message:
181
+ rdoc_options: []
182
+ require_paths:
183
+ - lib
184
+ required_ruby_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ required_rubygems_version: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ requirements: []
195
+ rubyforge_project:
196
+ rubygems_version: 2.0.3
197
+ signing_key:
198
+ specification_version: 4
199
+ summary: This fork is made to be compatible with rails 4
200
+ test_files:
201
+ - spec/fixtures/new.jpeg
202
+ - spec/fixtures/new.txt
203
+ - spec/fixtures/old.jpeg
204
+ - spec/fixtures/old.txt
205
+ - spec/fixtures/portrait.jpg
206
+ - spec/fixtures/test.jpeg
207
+ - spec/fixtures/test.jpg
208
+ - spec/mongoid_spec.rb
209
+ - spec/spec_helper.rb
210
+ - spec/storage/grid_fs_spec.rb