ruby-thumbor 4.0.1 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a2287dac874740603da7e602a8d88ebf51eabdb2c185cf9a30d661937c67456
4
- data.tar.gz: '078d41472dbc83cea5236a8afd486041f7fced642c833bb6e7616e1a915bcbdd'
3
+ metadata.gz: 1c4062846a0e57d282db5c12f75de306be194a7f85daf6a95b4ad7a45f359590
4
+ data.tar.gz: c81eecd67d7d8c1d1a210b8061cddab4c36d77562861f67f781ea9734ed07164
5
5
  SHA512:
6
- metadata.gz: 80f44f3e834f604c09acf580695d58ea79bf0eef228f402350c49189608403b10e75d566de548d85b6d81e1a68051b19b40af6d1cbe4d0405218d62e38743469
7
- data.tar.gz: c524c85c1eec047598f2013d650012278e96e710bce3c2e633a55b9a96496bee3324e34cd7bc59587a4cf9fbcb8dea12a18046b2c88a05c6027608b8af43c765
6
+ metadata.gz: a261f5a06ace027bb296423c3c5e6b63898a107dbb267ac5f90737db9008794e7e2ebc701f3cd7cdc574aab5d48c66d27a555497ca19e4a9ee79fae7757f00e2
7
+ data.tar.gz: d7848f2f8181d33cf077cde11feae042bccf9d9de397c5f79893401380a046863d72affdf72815b0e4700097670d54d11607ba6b1ffe108f96706d6ba6edcbc5
data/README.md CHANGED
@@ -1,4 +1,8 @@
1
- # ruby-thumbor [![Github Actions](https://github.com/thumbor/ruby-thumbor/actions/workflows/main.yml/badge.svg)](https://github.com/thumbor/ruby-thumbor/actions) [![Gem Version](https://badge.fury.io/rb/ruby-thumbor.svg)](https://rubygems.org/gems/ruby-thumbor) [![Coverage Status](https://coveralls.io/repos/thumbor/ruby-thumbor/badge.svg?branch=master&service=github)](https://coveralls.io/github/thumbor/ruby-thumbor?branch=master)
1
+ # ruby-thumbor
2
+ [![Github Actions - tests](https://github.com/thumbor/ruby-thumbor/actions/workflows/test.yml/badge.svg)](https://github.com/thumbor/ruby-thumbor/actions)
3
+ [![Github Actions - rubocop](https://github.com/thumbor/ruby-thumbor/actions/workflows/rubocop-analysis.yml/badge.svg)](https://github.com/thumbor/ruby-thumbor/actions)
4
+ [![Gem Version](https://badge.fury.io/rb/ruby-thumbor.svg)](https://rubygems.org/gems/ruby-thumbor)
5
+ [![Coverage Status](https://coveralls.io/repos/thumbor/ruby-thumbor/badge.svg?branch=master&service=github)](https://coveralls.io/github/thumbor/ruby-thumbor?branch=master)
2
6
 
3
7
  ruby-thumbor is the Ruby client to the thumbor imaging service (http://github.com/thumbor/thumbor).
4
8
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Thumbor
4
- VERSION = '4.0.1'
4
+ VERSION = '4.0.2'
5
5
  end
@@ -5,315 +5,315 @@ require 'json'
5
5
  require 'ruby-thumbor'
6
6
 
7
7
  describe Thumbor::Cascade do
8
+ subject(:cascade_instance) { described_class.new key, image_url }
9
+
8
10
  let(:image_url) { 'my.domain.com/some/image/url.jpg' }
9
11
  let(:key) { 'my-security-key' }
10
12
 
11
- subject { Thumbor::Cascade.new key, image_url }
12
-
13
- it 'should raise an error' do
14
- expect { subject.god_of_war_crop }.to raise_error(NoMethodError)
13
+ it 'raises an error' do
14
+ expect { cascade_instance.god_of_war_crop }.to raise_error(NoMethodError)
15
15
  end
16
16
 
17
- it 'should respond to filter methods' do
18
- expect(subject.respond_to?('quality_filter')).to be_truthy
17
+ it 'responds to filter methods' do
18
+ expect(cascade_instance).to respond_to('quality_filter')
19
19
  end
20
20
 
21
21
  describe '#generate' do
22
- it 'should create an unsafe url' do
23
- url = Thumbor::Cascade.new(nil, image_url).width(300).height(200).generate
22
+ it 'creates an unsafe url' do
23
+ url = described_class.new(nil, image_url).width(300).height(200).generate
24
24
  expect(url).to eq '/unsafe/300x200/my.domain.com/some/image/url.jpg'
25
25
  end
26
26
 
27
- it 'should create an url with debug' do
28
- url = subject.debug(true).height(200).generate
27
+ it 'creates an url with debug' do
28
+ url = cascade_instance.debug(true).height(200).generate
29
29
  expect(url).to eq '/5_eX4HHQYk81HQVkc1gBIAvPbLo=/debug/0x200/my.domain.com/some/image/url.jpg'
30
30
  end
31
31
 
32
- it 'should create a new instance passing key and keep it' do
33
- url = subject.width(300).height(200).generate
32
+ it 'creates a new instance with width and height' do
33
+ url = cascade_instance.width(300).height(200).generate
34
34
  expect(url).to eq '/TQfyd3H36Z3srcNcLOYiM05YNO8=/300x200/my.domain.com/some/image/url.jpg'
35
35
  end
36
36
 
37
- it 'should be able to change the Thumbor key' do
38
- url1 = subject.width(300).height(200).generate
39
- url2 = Thumbor::Cascade.new('another-thumbor-key', image_url).width(300).height(200).generate
37
+ it 'is able to change the Thumbor key' do
38
+ url1 = cascade_instance.width(300).height(200).generate
39
+ url2 = described_class.new('another-thumbor-key', image_url).width(300).height(200).generate
40
40
  expect(url1).not_to eq url2
41
41
  end
42
42
 
43
- it 'should create a new instance passing key and keep it' do
44
- url = subject.width(300).height(200).meta(true).generate
43
+ it 'creates a new instance with width, height and meta' do
44
+ url = cascade_instance.width(300).height(200).meta(true).generate
45
45
  expect(url).to eq '/YBQEWd3g_WRMnVEG73zfzcr8Zj0=/meta/300x200/my.domain.com/some/image/url.jpg'
46
46
  end
47
47
 
48
- it 'should create a new instance passing key and keep it' do
49
- url = subject.width(300).height(200).meta(true).smart(true).generate
48
+ it 'creates a new instance with width, height, meta and smart' do
49
+ url = cascade_instance.width(300).height(200).meta(true).smart(true).generate
50
50
  expect(url).to eq '/jP89J0qOWHgPlm_lOA28GtOh5GU=/meta/300x200/smart/my.domain.com/some/image/url.jpg'
51
51
  end
52
52
 
53
- it 'should create a new instance passing key and keep it' do
54
- url = subject.width(300).height(200).meta(true).smart(true).fit_in(true).generate
53
+ it 'creates a new instance with width, height, meta, smart and fit_in' do
54
+ url = cascade_instance.width(300).height(200).meta(true).smart(true).fit_in(true).generate
55
55
  expect(url).to eq '/zrrOh_TtTs4kiLLEQq1w4bcTYdc=/meta/fit-in/300x200/smart/my.domain.com/some/image/url.jpg'
56
56
  end
57
57
 
58
- it 'should create a new instance passing key and keep it' do
59
- url = subject.width(300).height(200).meta(true).smart(true).fit_in(true).flip(true).generate
58
+ it 'creates a new instance with width, height, meta, smart, fit_in and flip' do
59
+ url = cascade_instance.width(300).height(200).meta(true).smart(true).fit_in(true).flip(true).generate
60
60
  expect(url).to eq '/4t1XK1KH43cOb1QJ9tU00-W2_k8=/meta/fit-in/-300x200/smart/my.domain.com/some/image/url.jpg'
61
61
  end
62
62
 
63
- it 'should create a new instance passing key and keep it' do
64
- url = subject.width(300).height(200).meta(true).smart(true).fit_in(true).flip(true).flop(true).generate
63
+ it 'creates a new instance with width, height, meta, smart, fit_in, flip and flop' do
64
+ url = cascade_instance.width(300).height(200).meta(true).smart(true).fit_in(true).flip(true).flop(true).generate
65
65
  expect(url).to eq '/HJnvjZU69PkPOhyZGu-Z3Uc_W_A=/meta/fit-in/-300x-200/smart/my.domain.com/some/image/url.jpg'
66
66
  end
67
67
 
68
- it 'should create a new instance passing key and keep it' do
69
- url = subject.quality_filter(20).brightness_filter(10).generate
68
+ it 'creates a new instance with quality and brigthness filter' do
69
+ url = cascade_instance.quality_filter(20).brightness_filter(10).generate
70
70
  expect(url).to eq '/q0DiFg-5-eFZIqyN3lRoCvg2K0s=/filters:quality(20):brightness(10)/my.domain.com/some/image/url.jpg'
71
71
  end
72
72
 
73
- it 'should return just the image hash if no arguments passed' do
74
- url = subject.generate
73
+ it 'returns just the image hash if no arguments passed' do
74
+ url = cascade_instance.generate
75
75
  expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
76
76
  end
77
77
 
78
- it 'should raise if no image passed' do
79
- expect { Thumbor::Cascade.new.generate }.to raise_error(RuntimeError)
78
+ it 'raises if no image passed' do
79
+ expect { described_class.new.generate }.to raise_error(RuntimeError)
80
80
  end
81
81
 
82
- it 'should return proper url for width-only' do
83
- url = subject.width(300).generate
82
+ it 'returns proper url for width-only' do
83
+ url = cascade_instance.width(300).generate
84
84
  expect(url).to eq '/eFwrBWryxtRw9hDSbQPhi5iLpo8=/300x0/my.domain.com/some/image/url.jpg'
85
85
  end
86
86
 
87
- it 'should return proper url for height-only' do
88
- url = subject.height(300).generate
87
+ it 'returns proper url for height-only' do
88
+ url = cascade_instance.height(300).generate
89
89
  expect(url).to eq '/-VGIgp7g8cMKcfF2gFK9ZpmB_5w=/0x300/my.domain.com/some/image/url.jpg'
90
90
  end
91
91
 
92
- it 'should return proper url for width and height' do
93
- url = subject.width(200).height(300).generate
92
+ it 'returns proper url for width and height' do
93
+ url = cascade_instance.width(200).height(300).generate
94
94
  expect(url).to eq '/TrM0qqfcivb6VxS3Hxlxn43W21k=/200x300/my.domain.com/some/image/url.jpg'
95
95
  end
96
96
 
97
- it 'should return proper smart url' do
98
- url = subject.width(200).height(300).smart(true).generate
97
+ it 'returns proper smart url' do
98
+ url = cascade_instance.width(200).height(300).smart(true).generate
99
99
  expect(url).to eq '/hdzhxXzK45DzNTru5urV6x6xxSs=/200x300/smart/my.domain.com/some/image/url.jpg'
100
100
  end
101
101
 
102
- it 'should return proper fit-in url' do
103
- url = subject.width(200).height(300).fit_in(true).generate
102
+ it 'returns proper fit-in url' do
103
+ url = cascade_instance.width(200).height(300).fit_in(true).generate
104
104
  expect(url).to eq '/LOv6ArMOJA2VRpfMQjjs4xSyZpM=/fit-in/200x300/my.domain.com/some/image/url.jpg'
105
105
  end
106
106
 
107
- it 'should return proper adaptive-fit-in url' do
108
- url = subject.width(200).height(300).adaptive_fit_in(true).generate
107
+ it 'returns proper adaptive-fit-in url' do
108
+ url = cascade_instance.width(200).height(300).adaptive_fit_in(true).generate
109
109
  expect(url).to eq '/V2xmSmQZm4i5-0Flx8iuRtawOkg=/adaptive-fit-in/200x300/my.domain.com/some/image/url.jpg'
110
110
  end
111
111
 
112
- it 'should return proper full-fit-in url' do
113
- url = subject.width(200).height(300).full_fit_in(true).generate
112
+ it 'returns proper full-fit-in url' do
113
+ url = cascade_instance.width(200).height(300).full_fit_in(true).generate
114
114
  expect(url).to eq '/geXhR7ZFxztQTsKzmkDxYCX-HHg=/full-fit-in/200x300/my.domain.com/some/image/url.jpg'
115
115
  end
116
116
 
117
- it 'should return proper adaptive-full-fit-in url' do
118
- url = subject.width(200).height(300).adaptive_full_fit_in(true).generate
117
+ it 'returns proper adaptive-full-fit-in url' do
118
+ url = cascade_instance.width(200).height(300).adaptive_full_fit_in(true).generate
119
119
  expect(url).to eq '/jlUfjdC-6rG6jmuHgFp6eKgPy2g=/adaptive-full-fit-in/200x300/my.domain.com/some/image/url.jpg'
120
120
  end
121
121
 
122
122
  %i[fit_in full_fit_in].each do |fit|
123
- it "should raise error when using #{fit} without width or height" do
124
- subject.send(fit, true)
125
- expect { subject.generate }.to raise_error(ArgumentError)
123
+ it "raises error when using #{fit} without width or height" do
124
+ cascade_instance.send(fit, true)
125
+ expect { cascade_instance.generate }.to raise_error(ArgumentError)
126
126
  end
127
127
  end
128
128
 
129
- it 'should return proper flip url if no width and height' do
130
- url = subject.flip(true).generate
129
+ it 'returns proper flip url if no width and height' do
130
+ url = cascade_instance.flip(true).generate
131
131
  expect(url).to eq '/rlI4clPR-p-PR2QAxj5ZWiTfvH4=/-0x0/my.domain.com/some/image/url.jpg'
132
132
  end
133
133
 
134
- it 'should return proper flop url if no width and height' do
135
- url = subject.flop(true).generate
134
+ it 'returns proper flop url if no width and height' do
135
+ url = cascade_instance.flop(true).generate
136
136
  expect(url).to eq '/-4dmGj-TwIEqTAL9_9yEqUM8cks=/0x-0/my.domain.com/some/image/url.jpg'
137
137
  end
138
138
 
139
- it 'should return proper flip-flop url if no width and height' do
140
- url = subject.flip(true).flop(true).generate
139
+ it 'returns proper flip-flop url if no width and height' do
140
+ url = cascade_instance.flip(true).flop(true).generate
141
141
  expect(url).to eq '/FnMxpQMmxiMpdG219Dsj8pD_4Xc=/-0x-0/my.domain.com/some/image/url.jpg'
142
142
  end
143
143
 
144
- it 'should return proper flip url if width' do
145
- url = subject.width(300).flip(true).generate
144
+ it 'returns proper flip url if width' do
145
+ url = cascade_instance.width(300).flip(true).generate
146
146
  expect(url).to eq '/ccr2PoSYcTEGL4_Wzt4u3wWVRKU=/-300x0/my.domain.com/some/image/url.jpg'
147
147
  end
148
148
 
149
- it 'should return proper flop url if height' do
150
- url = subject.height(300).flop(true).generate
149
+ it 'returns proper flop url if height' do
150
+ url = cascade_instance.height(300).flop(true).generate
151
151
  expect(url).to eq '/R5K91tkyNgXO65F6E0txgA6C9lY=/0x-300/my.domain.com/some/image/url.jpg'
152
152
  end
153
153
 
154
- it 'should return horizontal align' do
155
- url = subject.halign(:left).generate
154
+ it 'returns horizontal align' do
155
+ url = cascade_instance.halign(:left).generate
156
156
  expect(url).to eq '/GTJE3wUt3sURik0O9Nae8sfI928=/left/my.domain.com/some/image/url.jpg'
157
157
  end
158
158
 
159
- it 'should not return horizontal align if it is center' do
160
- url = subject.halign(:center).generate
159
+ it 'does not return horizontal align if it is center' do
160
+ url = cascade_instance.halign(:center).generate
161
161
  expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
162
162
  end
163
163
 
164
- it 'should return vertical align' do
165
- url = subject.valign(:top).generate
164
+ it 'returns vertical align' do
165
+ url = cascade_instance.valign(:top).generate
166
166
  expect(url).to eq '/1QQo5ihObuhgwl95--Z3g78vjiE=/top/my.domain.com/some/image/url.jpg'
167
167
  end
168
168
 
169
- it 'should not return vertical align if it is middle' do
170
- url = subject.valign(:middle).generate
169
+ it 'does not return vertical align if it is middle' do
170
+ url = cascade_instance.valign(:middle).generate
171
171
  expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
172
172
  end
173
173
 
174
- it 'should return halign and valign properly' do
175
- url = subject.halign(:left).valign(:top).generate
174
+ it 'returns halign and valign properly' do
175
+ url = cascade_instance.halign(:left).valign(:top).generate
176
176
  expect(url).to eq '/yA2rmtWv_uzHd9klz5OuMIZ5auI=/left/top/my.domain.com/some/image/url.jpg'
177
177
  end
178
178
 
179
- it 'should return meta properly' do
180
- url = subject.meta(true).generate
179
+ it 'returns meta properly' do
180
+ url = cascade_instance.meta(true).generate
181
181
  expect(url).to eq '/WvIJFDJDePgIl5hZcLgtrzIPxfY=/meta/my.domain.com/some/image/url.jpg'
182
182
  end
183
183
 
184
- it 'should return proper crop url when param is array' do
185
- url = subject.crop([10, 20, 30, 40]).generate
184
+ it 'returns proper crop url when param is array' do
185
+ url = cascade_instance.crop([10, 20, 30, 40]).generate
186
186
  expect(url).to eq '/QcnhqNfHwiP6BHLbD6UvneX7K28=/10x20:30x40/my.domain.com/some/image/url.jpg'
187
187
  end
188
188
 
189
- it 'should return proper crop url' do
190
- url = subject.crop(10, 20, 30, 40).generate
189
+ it 'returns proper crop url' do
190
+ url = cascade_instance.crop(10, 20, 30, 40).generate
191
191
  expect(url).to eq '/QcnhqNfHwiP6BHLbD6UvneX7K28=/10x20:30x40/my.domain.com/some/image/url.jpg'
192
192
  end
193
193
 
194
- it 'should ignore crop if all zeros' do
195
- url = subject.crop(0, 0, 0, 0).generate
194
+ it 'ignores crop if all zeros' do
195
+ url = cascade_instance.crop(0, 0, 0, 0).generate
196
196
  expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
197
197
  end
198
198
 
199
- it 'should have smart after halign and valign' do
200
- url = subject.halign(:left).valign(:top).smart(true).generate
199
+ it 'has smart after halign and valign' do
200
+ url = cascade_instance.halign(:left).valign(:top).smart(true).generate
201
201
  expect(url).to eq '/KS6mVuzlGE3hJ75n3JUonfGgSFM=/left/top/smart/my.domain.com/some/image/url.jpg'
202
202
  end
203
203
 
204
- it 'should have quality filter' do
205
- url = subject.quality_filter(20).generate
204
+ it 'has quality filter' do
205
+ url = cascade_instance.quality_filter(20).generate
206
206
  expect(url).to eq '/NyA-is4NojxiRqo0NcmJDhB6GTs=/filters:quality(20)/my.domain.com/some/image/url.jpg'
207
207
  end
208
208
 
209
- it 'should have brightness filter' do
210
- url = subject.brightness_filter(30).generate
209
+ it 'has brightness filter' do
210
+ url = cascade_instance.brightness_filter(30).generate
211
211
  expect(url).to eq '/oXDmnGD7vQV-rXcj8kCl1tcS3jc=/filters:brightness(30)/my.domain.com/some/image/url.jpg'
212
212
  end
213
213
 
214
- it 'should have 2 filters' do
215
- url = subject.brightness_filter(30).quality_filter(20).generate
214
+ it 'has 2 filters' do
215
+ url = cascade_instance.brightness_filter(30).quality_filter(20).generate
216
216
  expect(url).to eq '/SW9o4xQG1QAzE69WzEzarL_G3MI=/filters:brightness(30):quality(20)/my.domain.com/some/image/url.jpg'
217
217
  end
218
218
 
219
- it 'should escape url args' do
220
- url = subject.watermark_filter('http://my-server.com/image.png', 30).quality_filter(20).generate
219
+ it 'escapes url args' do
220
+ url = cascade_instance.watermark_filter('http://my-server.com/image.png', 30).quality_filter(20).generate
221
221
  expect(url).to eq '/4b9kwg0-zsojf7Ed01TPKPYOel4=/filters:watermark(http%3A%2F%2Fmy-server.com%2Fimage.png,30):quality(20)/my.domain.com/some/image/url.jpg'
222
222
  end
223
223
 
224
- it 'should have trim without params' do
225
- url = subject.trim.generate
224
+ it 'has trim without params' do
225
+ url = cascade_instance.trim.generate
226
226
  expect(url).to eq '/w23BC0dUiYBFrUnuoYJe8XROuyw=/trim/my.domain.com/some/image/url.jpg'
227
227
  end
228
228
 
229
- it 'should have trim with direction param' do
230
- url = subject.trim('bottom-right').generate
229
+ it 'has trim with direction param' do
230
+ url = cascade_instance.trim('bottom-right').generate
231
231
  expect(url).to eq '/kXPwSmqEvPFQezgzBCv9BtPWmBY=/trim:bottom-right/my.domain.com/some/image/url.jpg'
232
232
  end
233
233
 
234
- it 'should have trim with direction and tolerance param' do
235
- url = subject.trim('bottom-right', 15).generate
234
+ it 'has trim with direction and tolerance param' do
235
+ url = cascade_instance.trim('bottom-right', 15).generate
236
236
  expect(url).to eq '/TUCEIhtWfI1Uv9zjavCSl_i0A_8=/trim:bottom-right:15/my.domain.com/some/image/url.jpg'
237
237
  end
238
238
 
239
- it 'should have the right crop when cropping horizontally and given a left center' do
240
- url = subject.original_width(100).original_height(100).width(40).height(50).center(0, 50).generate
239
+ it 'has the right crop when cropping horizontally and given a left center' do
240
+ url = cascade_instance.original_width(100).original_height(100).width(40).height(50).center(0, 50).generate
241
241
  expect(url).to eq '/SZIT3w4Qgebv5DuVJ8G1IH1mkCU=/0x0:80x100/40x50/my.domain.com/some/image/url.jpg'
242
242
  end
243
243
 
244
- it 'should have the right crop when cropping horizontally and given a right center' do
245
- url = subject.original_width(100).original_height(100).width(40).height(50).center(100, 50).generate
244
+ it 'has the right crop when cropping horizontally and given a right center' do
245
+ url = cascade_instance.original_width(100).original_height(100).width(40).height(50).center(100, 50).generate
246
246
  expect(url).to eq '/NEtCYehaISE7qR3zFj15CxnZoCs=/20x0:100x100/40x50/my.domain.com/some/image/url.jpg'
247
247
  end
248
248
 
249
- it 'should have the right crop when cropping horizontally and given the actual center' do
250
- url = subject.original_width(100).original_height(100).width(40).height(50).center(50, 50).generate
249
+ it 'has the right crop when cropping horizontally and given the actual center' do
250
+ url = cascade_instance.original_width(100).original_height(100).width(40).height(50).center(50, 50).generate
251
251
  expect(url).to eq '/JLH65vJTu6d-cXBmqe5hYoSD4ho=/10x0:90x100/40x50/my.domain.com/some/image/url.jpg'
252
252
  end
253
253
 
254
- it 'should have the right crop when cropping vertically and given a top center' do
255
- url = subject.original_width(100).original_height(100).width(50).height(40).center(50, 0).generate
254
+ it 'has the right crop when cropping vertically and given a top center' do
255
+ url = cascade_instance.original_width(100).original_height(100).width(50).height(40).center(50, 0).generate
256
256
  expect(url).to eq '/FIMZcLatW6bjgSRH9xTkEwUZAZ8=/0x0:100x80/50x40/my.domain.com/some/image/url.jpg'
257
257
  end
258
258
 
259
- it 'should have the right crop when cropping vertically and given a bottom center' do
260
- url = subject.original_width(100).original_height(100).width(50).height(40).center(50, 100).generate
259
+ it 'has the right crop when cropping vertically and given a bottom center' do
260
+ url = cascade_instance.original_width(100).original_height(100).width(50).height(40).center(50, 100).generate
261
261
  expect(url).to eq '/9Ud0sVo6i9DLOjlKbQP_4JXgFmA=/0x20:100x100/50x40/my.domain.com/some/image/url.jpg'
262
262
  end
263
263
 
264
- it 'should have the right crop when cropping vertically and given the actual center' do
265
- url = subject.original_width(100).original_height(100).width(50).height(40).center(50, 50).generate
264
+ it 'has the right crop when cropping vertically and given the actual center' do
265
+ url = cascade_instance.original_width(100).original_height(100).width(50).height(40).center(50, 50).generate
266
266
  expect(url).to eq '/WejLJn8djJLn7DkMUq3S0zZCvZE=/0x10:100x90/50x40/my.domain.com/some/image/url.jpg'
267
267
  end
268
268
 
269
- it 'should have the no crop when not necessary' do
270
- url = subject.original_width(100).original_height(100).width(50).height(50).center(50, 0).generate
269
+ it 'has the no crop when not necessary' do
270
+ url = cascade_instance.original_width(100).original_height(100).width(50).height(50).center(50, 0).generate
271
271
  expect(url).to eq '/trIjfr513nkGkCpKXK6qgox2jPA=/50x50/my.domain.com/some/image/url.jpg'
272
272
  end
273
273
 
274
- it 'should blow up with a bad center' do
274
+ it 'blows up with a bad center' do
275
275
  expect do
276
- subject.original_width(100).original_height(100).width(50).height(50).center(50).generate
276
+ cascade_instance.original_width(100).original_height(100).width(50).height(50).center(50).generate
277
277
  end.to raise_error(RuntimeError)
278
278
  end
279
279
 
280
- it 'should have no crop with a missing original_height' do
281
- url = subject.original_width(100).width(50).height(40).center(50, 0).generate
280
+ it 'has no crop with a missing original_height' do
281
+ url = cascade_instance.original_width(100).width(50).height(40).center(50, 0).generate
282
282
  expect(url).to eq '/veYlY0msKmemAaXpeav2kCNftmU=/50x40/my.domain.com/some/image/url.jpg'
283
283
  end
284
284
 
285
- it 'should have no crop with a missing original_width' do
286
- url = subject.original_height(100).width(50).height(40).center(50, 0).generate
285
+ it 'has no crop with a missing original_width' do
286
+ url = cascade_instance.original_height(100).width(50).height(40).center(50, 0).generate
287
287
  expect(url).to eq '/veYlY0msKmemAaXpeav2kCNftmU=/50x40/my.domain.com/some/image/url.jpg'
288
288
  end
289
289
 
290
- it 'should have no crop with out a width and height' do
291
- url = subject.original_width(100).original_height(100).center(50, 50).generate
290
+ it 'has no crop with out a width and height' do
291
+ url = cascade_instance.original_width(100).original_height(100).center(50, 50).generate
292
292
  expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
293
293
  end
294
294
 
295
- it 'should use the original width with a missing width' do
296
- url = subject.original_width(100).original_height(100).height(80).center(50, 50).generate
295
+ it 'uses the original width with a missing width' do
296
+ url = cascade_instance.original_width(100).original_height(100).height(80).center(50, 50).generate
297
297
  expect(url).to eq '/02BNIIJ9NYNV9Q03JHPtlP0DIDg=/0x10:100x90/0x80/my.domain.com/some/image/url.jpg'
298
298
  end
299
299
 
300
- it 'should use the original height with a missing height' do
301
- url = subject.original_width(100).original_height(100).width(80).center(50, 50).generate
300
+ it 'uses the original height with a missing height' do
301
+ url = cascade_instance.original_width(100).original_height(100).width(80).center(50, 50).generate
302
302
  expect(url).to eq '/0XL5BmMi3vlJQfw6aGOVW-M1vVI=/10x0:90x100/80x0/my.domain.com/some/image/url.jpg'
303
303
  end
304
304
 
305
- it 'should have the right crop with a negative width' do
306
- url = subject.original_width(100).original_height(100).width(-50).height(40).center(50, 50).generate
305
+ it 'has the right crop with a negative width' do
306
+ url = cascade_instance.original_width(100).original_height(100).width(-50).height(40).center(50, 50).generate
307
307
  expect(url).to eq '/IuRNPlFlpTVol45bDkOm2PGvneo=/0x10:100x90/-50x40/my.domain.com/some/image/url.jpg'
308
308
  end
309
309
 
310
- it 'should have the right crop with a negative height' do
311
- url = subject.original_width(100).original_height(100).width(50).height(-40).center(50, 50).generate
310
+ it 'has the right crop with a negative height' do
311
+ url = cascade_instance.original_width(100).original_height(100).width(50).height(-40).center(50, 50).generate
312
312
  expect(url).to eq '/-8IhWGEeXaY1uv945i9EHLVjwuk=/0x10:100x90/50x-40/my.domain.com/some/image/url.jpg'
313
313
  end
314
314
 
315
- it 'should have the right crop with a negative height and width' do
316
- url = subject.original_width(100).original_height(100).width(-50).height(-40).center(50, 50).generate
315
+ it 'has the right crop with a negative height and width' do
316
+ url = cascade_instance.original_width(100).original_height(100).width(-50).height(-40).center(50, 50).generate
317
317
  expect(url).to eq '/lfjGLTTEaW_Rcvc1q0ZhfYup2jg=/0x10:100x90/-50x-40/my.domain.com/some/image/url.jpg'
318
318
  end
319
319
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-thumbor
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernardo Heynemann
@@ -11,6 +11,20 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2022-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: code-scanning-rubocop
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.5.0
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.5.0
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: rake
16
30
  requirement: !ruby/object:Gem::Requirement