imagery 1.0.0.rc2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.markdown +71 -206
- data/imagery.gemspec +3 -3
- data/lib/imagery.rb +3 -2
- data/makefile +6 -1
- data/tests/{imagery.rb → imagery_test.rb} +0 -0
- data/tests/{s3.rb → s3_test.rb} +6 -6
- metadata +16 -25
- data/lib/imagery/faking.rb +0 -90
- data/lib/imagery/test.rb +0 -17
- data/tests/faking.rb +0 -71
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 617d676eaacd1c4f9d90ef5f091c133be23b7046
|
4
|
+
data.tar.gz: 73c33e7af9d03b6c049d8821e01630bc788a694d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8803b9dab1271092fdcc1a559488796f7e5eaaafd6becb14aad8f72dd6be0e42e19283c00e7831dfd83cbceefac91dc94e2b86590fa6eb34b003205da1663188
|
7
|
+
data.tar.gz: d31402d450fed4979743ede359de64195a68a9be0f5c21a4f6152fdda61b7d6252b08839a2759707f10667fbf462e325b345f90ae41cc02bffda8eb6022e134b
|
data/README.markdown
CHANGED
@@ -1,211 +1,76 @@
|
|
1
1
|
Imagery
|
2
2
|
=======
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
# For cases where we want to use S3 for some and normal filesystem for others
|
76
|
-
class S3Photo < Imagery
|
77
|
-
include Imagery::S3
|
78
|
-
|
79
|
-
s3_bucket "my-bucket"
|
80
|
-
end
|
81
|
-
|
82
|
-
# then maybe some other files are using cloudfront
|
83
|
-
class CloudfrontPhoto < Imagery
|
84
|
-
include Imagery::S3
|
85
|
-
|
86
|
-
s3_bucket "my-bucket"
|
87
|
-
s3_distribution_domain "assets.site.com"
|
88
|
-
end
|
89
|
-
|
90
|
-
# some might be using S3 EU, in which case you can specify the s3_host
|
91
|
-
class CustomS3Host < Imagery::Model
|
92
|
-
include Imagery::S3
|
93
|
-
s3_host "http://my.custom.host"
|
94
|
-
s3_bucket "my-bucket-name"
|
95
|
-
end
|
96
|
-
|
97
|
-
3. Flexibility and Extensibility
|
98
|
-
--------------------------------
|
99
|
-
### Existing plugins: Faking and S3
|
100
|
-
|
101
|
-
#### Imagery::S3
|
102
|
-
|
103
|
-
As was shown in some examples above you can easily do S3 integration.
|
104
|
-
The access credentials are assumed to be stored in
|
105
|
-
|
106
|
-
ENV["AMAZON_ACCESS_KEY_ID"]
|
107
|
-
ENV["AMAZON_SECRET_ACCESS_KEY"]
|
108
|
-
|
109
|
-
you can do this by setting it on your .bash_profile / .bashrc or just
|
110
|
-
manually setting them somewhere in your appication
|
111
|
-
|
112
|
-
ENV["AMAZON_ACCESS_KEY_ID"] = "_access_key_id_"
|
113
|
-
ENV["AMAZON_SECRET_ACCESS_KEY"] = "_secret_access_key_"
|
114
|
-
|
115
|
-
Now you can just start using it:
|
116
|
-
|
117
|
-
class Imagery
|
118
|
-
include Imagery::S3
|
119
|
-
s3_bucket "my-bucket"
|
120
|
-
end
|
121
|
-
|
122
|
-
i = Imagery.new :photo, 1001
|
123
|
-
i.save(File.open("/some/path/to/image.jpg"))
|
124
|
-
|
125
|
-
#### Imagery::Faking
|
126
|
-
|
127
|
-
When doing testing, you definitely don't want to run image
|
128
|
-
resizing everytime. Enter Faking.
|
129
|
-
|
130
|
-
# in your test_helper / spec_helper
|
131
|
-
Imagery::Model.send :include, Imagery::Faking
|
132
|
-
Imagery::Model.mode = :fake
|
133
|
-
|
134
|
-
# but what if we want to run it for real on a case to case basis?
|
135
|
-
# sure we can!
|
136
|
-
Imagery::Model.real {
|
137
|
-
# do some imagery testing here
|
138
|
-
}
|
139
|
-
|
140
|
-
#### Imagery::Test
|
141
|
-
|
142
|
-
There is a module you can include in your test context to automate the pattern
|
143
|
-
of testing / faking on an opt-in basis.
|
144
|
-
|
145
|
-
# in your test_helper / spec_helper
|
146
|
-
class Test::Unit::TestCase
|
147
|
-
include Imagery::Test
|
148
|
-
end
|
149
|
-
|
150
|
-
# now when you do some testing... (User assumes the user example above)
|
151
|
-
imagery do |enabled|
|
152
|
-
user = User.new(:avatar => { tempfile: File.open("avatar.jpg") })
|
153
|
-
user.save
|
154
|
-
|
155
|
-
if enabled
|
156
|
-
assert File.exist?(user.avatar.root("original.jpg"))
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
Running your test suite:
|
161
|
-
|
162
|
-
REAL_IMAGERY=true rake test
|
163
|
-
|
164
|
-
It's off by default though, so you don't have to do anything to make sure
|
165
|
-
Imagery doesn't run.
|
166
|
-
|
167
|
-
### Extending Imagery
|
168
|
-
By making use of standard Ruby idioms, we can easily do lots with it.
|
169
|
-
Exensibility is addressed via Ruby modules for example:
|
170
|
-
|
171
|
-
class Imagery
|
172
|
-
module MogileStore
|
173
|
-
def self.included(base)
|
174
|
-
class << base
|
175
|
-
attr_accessor :mogile_config
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
def save(io)
|
180
|
-
if super
|
181
|
-
# do some mogie FS stuff here
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
def delete
|
186
|
-
super
|
187
|
-
# remove the mogile stuff here
|
188
|
-
end
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
# Now just include the module to use it.
|
193
|
-
class Imagery
|
194
|
-
include Imagery::MogileStore
|
195
|
-
self.mogile_config = { :foo => :bar }
|
196
|
-
end
|
197
|
-
|
198
|
-
|
199
|
-
### Note on Patches/Pull Requests
|
200
|
-
|
201
|
-
* Fork the project.
|
202
|
-
* Make your feature addition or bug fix.
|
203
|
-
* Add tests for it. This is important so I don't break it in a
|
204
|
-
future version unintentionally.
|
205
|
-
* Commit, do not mess with rakefile, version, or history.
|
206
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
207
|
-
* Send me a pull request. Bonus points for topic branches.
|
208
|
-
|
209
|
-
### Copyright
|
4
|
+
Simple image resizing module.
|
5
|
+
|
6
|
+
## Prerequisites
|
7
|
+
|
8
|
+
You should have graphicsmagick first:
|
9
|
+
|
10
|
+
```bash
|
11
|
+
# on debian based systems
|
12
|
+
$ sudo apt-get install graphicsmagick
|
13
|
+
|
14
|
+
# or maybe using homebrew
|
15
|
+
$ brew install graphicsmagick
|
16
|
+
```
|
17
|
+
|
18
|
+
## Installing
|
19
|
+
|
20
|
+
```bash
|
21
|
+
$ gem install imagery
|
22
|
+
```
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
require 'imagery'
|
28
|
+
|
29
|
+
# - 48x48^ is the geometry string. This means we're resizing
|
30
|
+
# to a 48x48^ constrained image
|
31
|
+
# - 48x48 (second one) means we're cropping the image to an
|
32
|
+
# extent of 48x48 pixels.
|
33
|
+
i = Imagery.new(:photo, "1001", thumb: ["48x48^", "48x48"])
|
34
|
+
i.save(File.open('/some/path/to/image.jpg'))
|
35
|
+
|
36
|
+
File.exist?('public/photo/1001/thumb.jpg')
|
37
|
+
# => true
|
38
|
+
|
39
|
+
File.exist?('public/photo/1001/original.jpg')
|
40
|
+
# => true
|
41
|
+
```
|
42
|
+
|
43
|
+
## Advanced Usage (S3)
|
44
|
+
|
45
|
+
For cases where we want to use S3 for some and normal filesystem for others.
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
class S3Photo < Imagery
|
49
|
+
include Imagery::S3
|
50
|
+
|
51
|
+
s3_bucket "my-bucket"
|
52
|
+
end
|
53
|
+
|
54
|
+
# then maybe some other files are using cloudfront
|
55
|
+
class CloudfrontPhoto < Imagery
|
56
|
+
include Imagery::S3
|
57
|
+
|
58
|
+
s3_bucket "my-bucket"
|
59
|
+
s3_distribution_domain "assets.site.com"
|
60
|
+
end
|
61
|
+
|
62
|
+
# some might be using S3 EU, in which case you can specify the s3_host
|
63
|
+
class CustomS3Host < Imagery::Model
|
64
|
+
include Imagery::S3
|
65
|
+
s3_host "http://my.custom.host"
|
66
|
+
s3_bucket "my-bucket-name"
|
67
|
+
end
|
68
|
+
```
|
69
|
+
|
70
|
+
## Extending
|
71
|
+
|
72
|
+
You can check `Imagery::S3` to see an example of an extension.
|
73
|
+
|
74
|
+
## Copyright
|
210
75
|
|
211
76
|
Copyright (c) 2010 Cyril David. See LICENSE for details.
|
data/imagery.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "imagery"
|
3
|
-
s.version = "1.0.0
|
4
|
-
s.summary = "
|
3
|
+
s.version = "1.0.0"
|
4
|
+
s.summary = "Simple image resizing"
|
5
5
|
s.description = "Clean & light interface around GraphicsMagick."
|
6
6
|
s.authors = ["Cyril David"]
|
7
|
-
s.email = ["
|
7
|
+
s.email = ["cyx@cyx.is"]
|
8
8
|
s.homepage = "http://github.com/cyx/imagery"
|
9
9
|
|
10
10
|
s.files = Dir[
|
data/lib/imagery.rb
CHANGED
@@ -131,8 +131,9 @@ class Imagery
|
|
131
131
|
module GM
|
132
132
|
# -size tells GM to only read from a given dimension.
|
133
133
|
# -resize is the target dimension, and understands geometry strings.
|
134
|
-
# -quality we force it to
|
135
|
-
|
134
|
+
# -quality we force it to 90, which is a bit aggressive, but
|
135
|
+
# we want beautiful photos don't we? :-)
|
136
|
+
CONVERT = "gm convert -size '%s' '%s' -resize '%s' %s -quality 90 '%s'"
|
136
137
|
|
137
138
|
# 2 is the file descriptor for stderr, which `gm identify`
|
138
139
|
# happily chucks out information to, regardless if the image
|
data/makefile
CHANGED
File without changes
|
data/tests/{s3.rb → s3_test.rb}
RENAMED
@@ -20,7 +20,7 @@ end
|
|
20
20
|
|
21
21
|
test "changes url to an S3 hosted one" do
|
22
22
|
i = Imagery.new(:avatar)
|
23
|
-
|
23
|
+
|
24
24
|
expect = "http://s3.amazonaws.com/cdn.site.com/missing/avatar/original.jpg"
|
25
25
|
assert_equal expect, i.url
|
26
26
|
end
|
@@ -30,7 +30,7 @@ test "allows an s3_host override" do
|
|
30
30
|
Imagery.s3_host "https://foo.com"
|
31
31
|
|
32
32
|
i = Imagery.new(:avatar)
|
33
|
-
|
33
|
+
|
34
34
|
expect = "https://foo.com/cdn.site.com/missing/avatar/original.jpg"
|
35
35
|
assert_equal expect, i.url
|
36
36
|
ensure
|
@@ -41,7 +41,7 @@ end
|
|
41
41
|
test "allows a distribution domain for cloudfront hosted buckets" do
|
42
42
|
begin
|
43
43
|
Imagery.s3_distribution_domain "https://cdn.site.com"
|
44
|
-
|
44
|
+
|
45
45
|
i = Imagery.new(:avatar)
|
46
46
|
expect = "https://cdn.site.com/missing/avatar/original.jpg"
|
47
47
|
assert_equal expect, i.url
|
@@ -68,7 +68,7 @@ scope do
|
|
68
68
|
|
69
69
|
test "saves all sizes to S3" do |im, io|
|
70
70
|
im.save(io)
|
71
|
-
|
71
|
+
|
72
72
|
cmds = Imagery::S3::Gateway.commands
|
73
73
|
|
74
74
|
assert_equal [:store, "avatar/1001/original.jpg", "buck"], cmds.shift
|
@@ -80,7 +80,7 @@ scope do
|
|
80
80
|
|
81
81
|
test "doesn't delete when passing same id" do |im, io|
|
82
82
|
im.save(io, "1001")
|
83
|
-
|
83
|
+
|
84
84
|
cmds = Imagery::S3::Gateway.commands
|
85
85
|
|
86
86
|
assert_equal [:store, "avatar/1001/original.jpg", "buck"], cmds.shift
|
@@ -92,7 +92,7 @@ scope do
|
|
92
92
|
|
93
93
|
test "deletes when passing a different id" do |im, io|
|
94
94
|
im.save(io, "1002")
|
95
|
-
|
95
|
+
|
96
96
|
cmds = Imagery::S3::Gateway.commands
|
97
97
|
|
98
98
|
assert_equal [:delete, "avatar/1001/original.jpg", "buck"], cmds.shift
|
metadata
CHANGED
@@ -1,51 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imagery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
5
|
-
prerelease: 6
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Cyril David
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-09-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: cutest
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: aws-s3
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
description: Clean & light interface around GraphicsMagick.
|
47
42
|
email:
|
48
|
-
-
|
43
|
+
- cyx@cyx.is
|
49
44
|
executables: []
|
50
45
|
extensions: []
|
51
46
|
extra_rdoc_files: []
|
@@ -53,37 +48,33 @@ files:
|
|
53
48
|
- LICENSE
|
54
49
|
- README.markdown
|
55
50
|
- makefile
|
56
|
-
- lib/imagery/faking.rb
|
57
51
|
- lib/imagery/s3.rb
|
58
|
-
- lib/imagery/test.rb
|
59
52
|
- lib/imagery.rb
|
60
53
|
- imagery.gemspec
|
61
|
-
- tests/faking.rb
|
62
54
|
- tests/helper.rb
|
63
|
-
- tests/
|
64
|
-
- tests/
|
55
|
+
- tests/imagery_test.rb
|
56
|
+
- tests/s3_test.rb
|
65
57
|
homepage: http://github.com/cyx/imagery
|
66
58
|
licenses: []
|
59
|
+
metadata: {}
|
67
60
|
post_install_message:
|
68
61
|
rdoc_options: []
|
69
62
|
require_paths:
|
70
63
|
- lib
|
71
64
|
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
65
|
requirements:
|
74
|
-
- -
|
66
|
+
- - '>='
|
75
67
|
- !ruby/object:Gem::Version
|
76
68
|
version: '0'
|
77
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
-
none: false
|
79
70
|
requirements:
|
80
|
-
- -
|
71
|
+
- - '>='
|
81
72
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
73
|
+
version: '0'
|
83
74
|
requirements: []
|
84
75
|
rubyforge_project:
|
85
|
-
rubygems_version:
|
76
|
+
rubygems_version: 2.0.3
|
86
77
|
signing_key:
|
87
|
-
specification_version:
|
88
|
-
summary:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Simple image resizing
|
89
80
|
test_files: []
|
data/lib/imagery/faking.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
class Imagery
|
2
|
-
module Faking
|
3
|
-
def self.included(base)
|
4
|
-
base.extend ClassMethods
|
5
|
-
end
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
# Allows you to define the current mode. The only special value here is
|
9
|
-
# `:fake`. If the mode is :fake, then Imagery::Model#save and
|
10
|
-
# Imagery::Model#delete will not actually run.
|
11
|
-
#
|
12
|
-
# @example
|
13
|
-
#
|
14
|
-
# Photo = Class.new(Struct.new(:id))
|
15
|
-
#
|
16
|
-
# i = Imagery.new(Photo.new(1001))
|
17
|
-
# i.root = '/tmp'
|
18
|
-
#
|
19
|
-
# Imagery::Model.faked {
|
20
|
-
# assert i.save(File.open('/path/to/image.png'))
|
21
|
-
# }
|
22
|
-
#
|
23
|
-
# @see Imagery::Test
|
24
|
-
#
|
25
|
-
attr_accessor :mode
|
26
|
-
|
27
|
-
# Switches the current mode to :fake.
|
28
|
-
#
|
29
|
-
# @example
|
30
|
-
# Imagery::Model.mode == nil
|
31
|
-
# # => true
|
32
|
-
#
|
33
|
-
# Imagery::Model.faked {
|
34
|
-
# Imagery::Model.mode == :fake
|
35
|
-
# # => true
|
36
|
-
# }
|
37
|
-
#
|
38
|
-
# Imagery::Model.mode = nil
|
39
|
-
# # => true
|
40
|
-
#
|
41
|
-
def faked
|
42
|
-
@omode, @mode = @mode, :fake
|
43
|
-
yield
|
44
|
-
ensure
|
45
|
-
@mode = @omode
|
46
|
-
end
|
47
|
-
|
48
|
-
# Switches the current mode to nil. Useful for forcing real saves
|
49
|
-
# in your test.
|
50
|
-
#
|
51
|
-
# You should do this at least once in your project just to know
|
52
|
-
# that all your Imagery::Model#save and Imagery::Model#delete
|
53
|
-
# operations actually work.
|
54
|
-
#
|
55
|
-
# @example
|
56
|
-
# Imagery::Model.mode = :fake
|
57
|
-
#
|
58
|
-
# Imagery::Model.faked {
|
59
|
-
# Imagery::Model.mode == nil
|
60
|
-
# # => true
|
61
|
-
# }
|
62
|
-
#
|
63
|
-
# Imagery::Model.mode = :fake
|
64
|
-
# # => true
|
65
|
-
#
|
66
|
-
def real
|
67
|
-
@omode, @mode = @mode, nil
|
68
|
-
yield
|
69
|
-
ensure
|
70
|
-
@mode = @omode
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# Implement the stubbed version of save and skips actual operation
|
75
|
-
# if Imagery::Model.mode == :fake
|
76
|
-
def save(io, key = nil)
|
77
|
-
return true if self.class.mode == :fake
|
78
|
-
|
79
|
-
super
|
80
|
-
end
|
81
|
-
|
82
|
-
# Implement the stubbed version of save and skips actual operation
|
83
|
-
# if Imagery::Model.mode == :fake
|
84
|
-
def delete
|
85
|
-
return true if self.class.mode == :fake
|
86
|
-
|
87
|
-
super
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
data/lib/imagery/test.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
class Imagery
|
2
|
-
module Test
|
3
|
-
def self.included(base)
|
4
|
-
Imagery.send :include, Imagery::Faking
|
5
|
-
Imagery.mode = :fake
|
6
|
-
end
|
7
|
-
|
8
|
-
protected
|
9
|
-
def imagery
|
10
|
-
if ENV["REAL_IMAGERY"]
|
11
|
-
Imagery.real { yield true }
|
12
|
-
else
|
13
|
-
Imagery.faked { yield false }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/tests/faking.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
require File.expand_path("helper", File.dirname(__FILE__))
|
2
|
-
require "stringio"
|
3
|
-
|
4
|
-
# Imagery::Test hooks
|
5
|
-
scope do
|
6
|
-
setup do
|
7
|
-
Object.send :include, Imagery::Test
|
8
|
-
end
|
9
|
-
|
10
|
-
test "auto-includes Imagery::Faking upon inclusion" do
|
11
|
-
assert Imagery.ancestors.include?(Imagery::Faking)
|
12
|
-
end
|
13
|
-
|
14
|
-
test "auto-sets mode to :fake" do
|
15
|
-
assert_equal :fake, Imagery.mode
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
class Imagery
|
21
|
-
include Faking
|
22
|
-
end
|
23
|
-
|
24
|
-
test "skips saving when faked" do
|
25
|
-
Imagery.mode = :fake
|
26
|
-
|
27
|
-
i = Imagery.new(:avatar, "1001")
|
28
|
-
i.save(StringIO.new)
|
29
|
-
|
30
|
-
assert ! File.exist?(Imagery.root("avatar", "1001"))
|
31
|
-
end
|
32
|
-
|
33
|
-
test "skips deleting when faked" do
|
34
|
-
Imagery.mode = :fake
|
35
|
-
|
36
|
-
FileUtils.mkdir_p(Imagery.root("avatar", "1001"))
|
37
|
-
|
38
|
-
i = Imagery.new(:avatar, "1001")
|
39
|
-
i.delete
|
40
|
-
|
41
|
-
assert File.exist?(Imagery.root("avatar", "1001"))
|
42
|
-
end
|
43
|
-
|
44
|
-
# Imagery::Test
|
45
|
-
scope do
|
46
|
-
extend Imagery::Test
|
47
|
-
|
48
|
-
test "yields true when REAL_IMAGERY is set" do
|
49
|
-
ENV["REAL_IMAGERY"] = "true"
|
50
|
-
|
51
|
-
enabled = nil
|
52
|
-
|
53
|
-
imagery do |e|
|
54
|
-
enabled = e
|
55
|
-
end
|
56
|
-
|
57
|
-
assert enabled
|
58
|
-
end
|
59
|
-
|
60
|
-
test "yields false when REAL_IMAGERY is not set" do
|
61
|
-
ENV["REAL_IMAGERY"] = nil
|
62
|
-
|
63
|
-
enabled = nil
|
64
|
-
|
65
|
-
imagery do |e|
|
66
|
-
enabled = e
|
67
|
-
end
|
68
|
-
|
69
|
-
assert_equal false, enabled
|
70
|
-
end
|
71
|
-
end
|