imagery 0.0.6 → 0.2.0

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
@@ -1,172 +0,0 @@
1
- require 'helper'
2
- require 'benchmark'
3
-
4
- class Imagery::Model
5
- include Imagery::Faking
6
- end
7
-
8
- class TestImagery < Test::Unit::TestCase
9
- Photo = Class.new(Struct.new(:id))
10
-
11
- test "optionally yields" do
12
- imagery = Imagery.new(Photo.new(1001)) do |i|
13
- i.sizes = { medium: ["50x50"] }
14
- end
15
-
16
- assert_equal({ medium: ["50x50"], original: ["1920x1200>"] }, imagery.sizes)
17
- end
18
-
19
- test "namespace" do
20
- assert_equal 'photo', Imagery.new(Photo.new(1001)).namespace
21
- end
22
-
23
- test "using a Symbol as a namespace" do
24
- assert_equal 'photo', Imagery.new(Photo.new(1001), 1001, :photo).namespace
25
- end
26
-
27
- test "key" do
28
- assert_equal '1001', Imagery.new(Photo.new(1001)).key
29
- end
30
-
31
- test "root_path when root not defined" do
32
- imagery = Imagery.new(Photo.new(1001))
33
-
34
- assert_raise Imagery::Model::UndefinedRoot do
35
- imagery.file
36
- end
37
- end
38
-
39
- test "root_path when no ROOT_DIR" do
40
- imagery = Imagery.new(Photo.new(1001))
41
- imagery.root = '/'
42
- assert_equal "/public/system/photo/1001/tmp", imagery.send(:tmp)
43
- end
44
-
45
- test "root_path when ROOT_DIR defined on imagery" do
46
- Imagery::ROOT_DIR = '/root/dir'
47
-
48
- imagery = Imagery.new(Photo.new(1001))
49
- assert_equal "/root/dir/public/system/photo/1001/tmp", imagery.send(:tmp)
50
-
51
- Imagery.send :remove_const, :ROOT_DIR
52
- end
53
-
54
- test "root_path when ROOT_DIR defined on object" do
55
- Object::ROOT_DIR = '/root/dir'
56
-
57
- imagery = Imagery.new(Photo.new(1001))
58
- assert_equal "/root/dir/public/system/photo/1001/tmp", imagery.send(:tmp)
59
-
60
- Object.send :remove_const, :ROOT_DIR
61
- end
62
-
63
- describe "file" do
64
- setup do
65
- @imagery = Imagery.new(Photo.new(1001))
66
- @imagery.root = '/r/d'
67
- @imagery.sizes = { :thumb => ['10x10'] }
68
- end
69
-
70
- test "file by default" do
71
- assert_equal "/r/d/public/system/photo/1001/original.png", @imagery.file
72
- end
73
-
74
- test "file given a size" do
75
- assert_equal "/r/d/public/system/photo/1001/thumb.png", @imagery.file(:thumb)
76
- end
77
- end
78
-
79
- describe "convert" do
80
- setup do
81
- @imagery = Imagery.new(Photo.new(1001))
82
- @imagery.root = '/r/d'
83
- @imagery.sizes = {
84
- :thumb => ["56x56^"],
85
- :small => ["56x56^", "56x56"]
86
- }
87
- end
88
-
89
- test "default resize" do
90
- expected =
91
- "convert /r/d/public/system/photo/1001/tmp -thumbnail '56x56^' " +
92
- "-gravity center /r/d/public/system/photo/1001/thumb.png"
93
-
94
- assert_equal expected, @imagery.send(:cmd, :thumb),
95
- end
96
-
97
- test "resize with extent param" do
98
- expected =
99
- "convert /r/d/public/system/photo/1001/tmp -thumbnail '56x56^' " +
100
- "-gravity center -extent 56x56 /r/d/public/system/photo/1001/small.png"
101
-
102
- assert_equal expected, @imagery.send(:cmd, :small)
103
- end
104
- end
105
-
106
- describe "saving" do
107
- setup do
108
- @imagery = Imagery.new(Photo.new(1001))
109
- @imagery.root = '/tmp'
110
- @imagery.sizes = {
111
- :thumb => ["56x56^"],
112
- :small => ["100x100^", "100x100"],
113
- :large => ["200x200>", "200x200"]
114
- }
115
- end
116
-
117
- teardown do
118
- FileUtils.rm_rf '/tmp/public'
119
- end
120
-
121
- test "writes all the different geometry sizes normally" do
122
- assert @imagery.save(File.open(FIXTURES + '/lake.jpg'))
123
-
124
- assert File.exist?(@imagery.file)
125
- assert File.exist?(@imagery.file(:thumb))
126
- assert File.exist?(@imagery.file(:small))
127
- assert File.exist?(@imagery.file(:large))
128
- end
129
-
130
- test "able to delete them" do
131
- @imagery.save(File.open(FIXTURES + '/lake.jpg'))
132
- @imagery.delete
133
-
134
- assert ! File.exist?(@imagery.file)
135
- assert ! File.exist?(@imagery.file(:thumb))
136
- assert ! File.exist?(@imagery.file(:small))
137
- assert ! File.exist?(@imagery.file(:large))
138
- end
139
-
140
- test "when mode == :fake" do
141
- time = Benchmark.realtime {
142
- Imagery::Model.faked {
143
- assert @imagery.save(File.open(FIXTURES + '/lake.jpg'))
144
- }
145
- }
146
-
147
- assert time < 0.01, "Faked context should run in less than 0.01 secs"
148
- end
149
- end
150
-
151
- describe "url" do
152
- setup do
153
- @imagery = Imagery.new(Photo.new(1001))
154
- @imagery.root = '/tmp'
155
- @imagery.sizes = { :small => ["40x40"] }
156
- end
157
-
158
- test "original" do
159
- assert_equal '/system/photo/1001/original.png', @imagery.url
160
- end
161
-
162
- test "small" do
163
- assert_equal '/system/photo/1001/small.png', @imagery.url(:small)
164
- end
165
-
166
- test "non-existent" do
167
- assert_raise Imagery::Model::UnknownSize do
168
- @imagery.url(:foo)
169
- end
170
- end
171
- end
172
- end
@@ -1,30 +0,0 @@
1
- require "helper"
2
-
3
- class MissingTest < Test::Unit::TestCase
4
- Photo = Class.new(Struct.new(:id))
5
-
6
- test "adding it using extend" do
7
- imagery = Imagery.new(Photo.new(1001))
8
- imagery.extend Imagery::Missing
9
- imagery.existing = ""
10
- assert_equal '/missing/photo/original.png', imagery.url
11
- end
12
-
13
- class WithMissing < Imagery::Model
14
- include Imagery::Missing
15
- end
16
-
17
- test "adding it using include" do
18
- imagery = WithMissing.new(Photo.new(1001))
19
- imagery.existing = ""
20
-
21
- assert_equal '/missing/photo/original.png', imagery.url
22
- end
23
-
24
- test "still returns as normal when not missing" do
25
- imagery = WithMissing.new(Photo.new(1001))
26
- imagery.root = '/tmp'
27
- imagery.existing = 'lake.jpg'
28
- assert_equal '/system/photo/1001/original.png', imagery.url
29
- end
30
- end
@@ -1,167 +0,0 @@
1
- require "helper"
2
-
3
- class WithS3Test < Test::Unit::TestCase
4
- class WithS3 < Imagery::Model
5
- include Imagery::Faking
6
- include Imagery::S3
7
-
8
- s3_bucket "tmp-bucket-name"
9
- end
10
-
11
- class NoBucket < Imagery::Model
12
- include Imagery::Faking
13
- include Imagery::S3
14
- end
15
-
16
- class WithS3CustomHost < Imagery::Model
17
- include Imagery::Faking
18
- include Imagery::S3
19
-
20
- s3_bucket "tmp-bucket-name"
21
- s3_host "http://test.host"
22
- end
23
-
24
-
25
- SuperSecretPhoto = Class.new(Struct.new(:id))
26
-
27
- test "default urls" do
28
- imagery = WithS3.new(SuperSecretPhoto.new(1001))
29
- imagery.root = '/tmp'
30
- imagery.sizes = {
31
- :thumb => ["56x56^"],
32
- :small => ["100x100^", "100x100"],
33
- :large => ["200x200>", "200x200"]
34
- }
35
-
36
- s = 'http://s3.amazonaws.com/tmp-bucket-name/supersecretphoto/1001/%s.png'
37
-
38
- assert_equal s % 'original', imagery.url
39
- assert_equal s % 'original', imagery.url(:original)
40
- assert_equal s % 'thumb', imagery.url(:thumb)
41
- assert_equal s % 'small', imagery.url(:small)
42
- assert_equal s % 'large', imagery.url(:large)
43
- end
44
-
45
- test "customized s3_host urls" do
46
- imagery = WithS3CustomHost.new(SuperSecretPhoto.new(1001))
47
- imagery.root = '/tmp'
48
- imagery.sizes = {
49
- :thumb => ["56x56^"],
50
- :small => ["100x100^", "100x100"],
51
- :large => ["200x200>", "200x200"]
52
- }
53
-
54
- s = 'http://test.host/tmp-bucket-name/supersecretphoto/1001/%s.png'
55
-
56
- assert_equal s % 'original', imagery.url
57
- assert_equal s % 'original', imagery.url(:original)
58
- assert_equal s % 'thumb', imagery.url(:thumb)
59
- assert_equal s % 'small', imagery.url(:small)
60
- assert_equal s % 'large', imagery.url(:large)
61
- end
62
-
63
- test "url when no bucket" do
64
- imagery = NoBucket.new(SuperSecretPhoto.new(1001))
65
- imagery.sizes = {
66
- :thumb => ["56x56^"],
67
- :small => ["100x100^", "100x100"],
68
- :large => ["200x200>", "200x200"]
69
- }
70
-
71
- assert_raise Imagery::S3::UndefinedBucket do
72
- imagery.url
73
- end
74
-
75
- begin
76
- imagery.url
77
- rescue Imagery::S3::UndefinedBucket => e
78
- assert_equal Imagery::S3::Configs::BUCKET_ERROR_MSG, e.message
79
- end
80
- end
81
-
82
- test "urls with a distribution domain" do
83
- imagery = WithS3.new(SuperSecretPhoto.new(1001))
84
- imagery.root = '/tmp'
85
- imagery.sizes = {
86
- :thumb => ["56x56^"],
87
- :small => ["100x100^", "100x100"],
88
- :large => ["200x200>", "200x200"]
89
- }
90
-
91
- s = 'http://assets.site.com/supersecretphoto/1001/%s.png'
92
-
93
- WithS3.s3_distribution_domain 'http://assets.site.com'
94
-
95
- assert_equal s % 'original', imagery.url
96
- assert_equal s % 'original', imagery.url(:original)
97
- assert_equal s % 'thumb', imagery.url(:thumb)
98
- assert_equal s % 'small', imagery.url(:small)
99
- assert_equal s % 'large', imagery.url(:large)
100
-
101
- WithS3.s3_distribution_domain = nil
102
- end
103
-
104
- test "saving and storing" do
105
- imagery = WithS3.new(SuperSecretPhoto.new(1001))
106
- imagery.root = '/tmp'
107
- imagery.sizes = {
108
- :thumb => ["56x56^"],
109
- :small => ["100x100^", "100x100"],
110
- :large => ["200x200>", "200x200"]
111
- }
112
-
113
- File.stubs(:open).returns(:contents)
114
-
115
- Imagery::S3::Gateway.expects(:store).with() { |key, io, bucket, hash|
116
- key == "supersecretphoto/1001/thumb.png" && bucket == 'tmp-bucket-name' &&
117
- hash[:access] == :public_read && hash[:content_type] == 'image/png' &&
118
- io == :contents
119
- }
120
-
121
- Imagery::S3::Gateway.expects(:store).with() { |key, io, bucket, hash|
122
- key == "supersecretphoto/1001/small.png" && bucket == 'tmp-bucket-name' &&
123
- hash[:access] == :public_read && hash[:content_type] == 'image/png' &&
124
- io == :contents
125
- }
126
-
127
- Imagery::S3::Gateway.expects(:store).with() { |key, io, bucket, hash|
128
- key == "supersecretphoto/1001/large.png" && bucket == 'tmp-bucket-name' &&
129
- hash[:access] == :public_read && hash[:content_type] == 'image/png' &&
130
- io == :contents
131
- }
132
-
133
- Imagery::S3::Gateway.expects(:store).with() { |key, io, bucket, hash|
134
- key == "supersecretphoto/1001/original.png" && bucket == 'tmp-bucket-name' &&
135
- hash[:access] == :public_read && hash[:content_type] == 'image/png' &&
136
- io == :contents
137
- }
138
-
139
- WithS3.faked do
140
- assert imagery.save(File.open(FIXTURES + '/lake.jpg'))
141
- end
142
- end
143
-
144
- test "deleting" do
145
- imagery = WithS3.new(SuperSecretPhoto.new(1001))
146
- imagery.root = '/tmp'
147
- imagery.sizes = {
148
- :thumb => ["56x56^"],
149
- :small => ["100x100^", "100x100"],
150
- :large => ["200x200>", "200x200"]
151
- }
152
-
153
- Imagery::S3::Gateway.expects(:delete).
154
- with('supersecretphoto/1001/thumb.png', 'tmp-bucket-name')
155
-
156
- Imagery::S3::Gateway.expects(:delete).
157
- with('supersecretphoto/1001/small.png', 'tmp-bucket-name')
158
-
159
- Imagery::S3::Gateway.expects(:delete).
160
- with('supersecretphoto/1001/large.png', 'tmp-bucket-name')
161
-
162
- Imagery::S3::Gateway.expects(:delete).
163
- with('supersecretphoto/1001/original.png', 'tmp-bucket-name')
164
-
165
- assert imagery.delete
166
- end
167
- end