resizing 1.0.2 → 1.1.0.pre

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +2 -7
  3. data/Gemfile +2 -6
  4. data/README.md +32 -59
  5. data/lib/resizing/active_storage/service/resizing_service.rb +2 -6
  6. data/lib/resizing/carrier_wave/storage/file.rb +16 -35
  7. data/lib/resizing/carrier_wave/storage/remote.rb +3 -7
  8. data/lib/resizing/carrier_wave.rb +11 -10
  9. data/lib/resizing/client.rb +24 -40
  10. data/lib/resizing/configurable.rb +1 -1
  11. data/lib/resizing/configuration.rb +16 -6
  12. data/lib/resizing/http_clientable.rb +3 -3
  13. data/lib/resizing/mock_client.rb +5 -6
  14. data/lib/resizing/public_id.rb +4 -5
  15. data/lib/resizing/version.rb +1 -1
  16. data/lib/resizing/video/client.rb +116 -0
  17. data/lib/resizing/video.rb +8 -0
  18. data/lib/resizing.rb +12 -15
  19. data/resizing.gemspec +11 -8
  20. data/test/resizing/carrier_wave/storage/file_test.rb +8 -149
  21. data/test/resizing/carrier_wave/storage/remote_test.rb +0 -75
  22. data/test/resizing/carrier_wave_test.rb +37 -99
  23. data/test/resizing/client_test.rb +11 -96
  24. data/test/resizing/configuration_test.rb +2 -118
  25. data/test/resizing/public_id_test.rb +1 -1
  26. data/test/resizing/video/client_test.rb +158 -0
  27. data/test/test_helper.rb +9 -89
  28. data/test/vcr/video/metadata/success.yml +47 -0
  29. data/test/vcr/video/prepare/success.yml +47 -0
  30. data/test/vcr/video/upload_completed/success.yml +47 -0
  31. metadata +53 -45
  32. data/lib/resizing/active_storage/service.rb +0 -9
  33. data/lib/resizing/active_storage.rb +0 -7
  34. data/test/resizing/active_storage_service_test.rb +0 -98
  35. data/test/resizing/configurable_test.rb +0 -82
  36. data/test/resizing/constants_test.rb +0 -25
  37. data/test/resizing/error_test.rb +0 -73
  38. data/test/resizing/http_clientable_test.rb +0 -84
  39. data/test/resizing/mock_client_test.rb +0 -75
  40. data/test/resizing_module_test.rb +0 -206
  41. /data/{bin → exe}/console +0 -0
  42. /data/{bin → exe}/generate-changelog +0 -0
  43. /data/{bin → exe}/setup +0 -0
@@ -0,0 +1,47 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://192.168.56.101:5000/projects/f11dfad4-2247-4220-b3b2-efeb82864a97/upload/videos/prepare
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v1.0.1
12
+ X-ResizingToken:
13
+ - v1,1611308557,6628235db472f228a7c3c6b309e081b6c32aac01890abbfd2f38230ff4105c1c
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ x-frame-options:
20
+ - SAMEORIGIN
21
+ x-xss-protection:
22
+ - 1; mode=block
23
+ x-content-type-options:
24
+ - nosniff
25
+ x-download-options:
26
+ - noopen
27
+ x-permitted-cross-domain-policies:
28
+ - none
29
+ referrer-policy:
30
+ - strict-origin-when-cross-origin
31
+ content-type:
32
+ - application/json; charset=utf-8
33
+ etag:
34
+ - W/"273d4e663c17e06deb0c69cc90bb79b6"
35
+ cache-control:
36
+ - max-age=0, private, must-revalidate
37
+ x-request-id:
38
+ - e586873a-9cc9-45a0-a216-5e62165cb9f1
39
+ x-runtime:
40
+ - '0.046932'
41
+ transfer-encoding:
42
+ - chunked
43
+ body:
44
+ encoding: UTF-8
45
+ string: '{"id":"3a101d25-e03f-4fac-a4ee-dbe882c6139d","project_id":"f11dfad4-2247-4220-b3b2-efeb82864a97","state":"initialized","source_uri":"s3://resizing-bucket-development-video/videos/uploading/f11dfad4-2247-4220-b3b2-efeb82864a97/3a101d25-e03f-4fac-a4ee-dbe882c6139d/1dc40aae-29ab-4369-87da-10b146371fb8","deleted_at":null,"s3_presigned_url":"https://resizing-bucket-development-video.s3.ap-northeast-1.amazonaws.com/videos/uploading/f11dfad4-2247-4220-b3b2-efeb82864a97/3a101d25-e03f-4fac-a4ee-dbe882c6139d/1dc40aae-29ab-4369-87da-10b146371fb8?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=AKIXXXXXXXXXXXXXX%2F20210122%2Fap-northeast-1%2Fs3%2Faws4_request\u0026X-Amz-Date=20210122T094237Z\u0026X-Amz-Expires=900\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=c847ca1bfc20b7caeefcb999697df3cfd531aa2b7f0aa13f9066f289f693c22d","converted_uri":null,"created_at":"2021-01-22T09:42:37.670Z","updated_at":"2021-01-22T09:42:37.670Z","upload_completed_url":"http://192.168.56.101:5000/projects/f11dfad4-2247-4220-b3b2-efeb82864a97/upload/videos/3a101d25-e03f-4fac-a4ee-dbe882c6139d/upload_completed","self_url":"http://192.168.56.101:5000/projects/f11dfad4-2247-4220-b3b2-efeb82864a97/upload/videos/3a101d25-e03f-4fac-a4ee-dbe882c6139d.json","m3u8_url":null,"hevc_url":null,"avc_url":null,"thumbnail_url":"/assets/videos/now-converting-8a05d294385c14270a3662e01df5e50578cabcd2787123c18057ac06b101344c.png","job_state":null}'
46
+ recorded_at: Fri, 22 Jan 2021 09:42:37 GMT
47
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,47 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: http://192.168.56.101:5000/projects/f11dfad4-2247-4220-b3b2-efeb82864a97/upload/videos/3a101d25-e03f-4fac-a4ee-dbe882c6139d/upload_completed
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v1.0.1
12
+ X-ResizingToken:
13
+ - v1,1611308557,6628235db472f228a7c3c6b309e081b6c32aac01890abbfd2f38230ff4105c1c
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ x-frame-options:
20
+ - SAMEORIGIN
21
+ x-xss-protection:
22
+ - 1; mode=block
23
+ x-content-type-options:
24
+ - nosniff
25
+ x-download-options:
26
+ - noopen
27
+ x-permitted-cross-domain-policies:
28
+ - none
29
+ referrer-policy:
30
+ - strict-origin-when-cross-origin
31
+ content-type:
32
+ - application/json; charset=utf-8
33
+ etag:
34
+ - W/"f7ce780fcb3afdb5077ccfee0564b182"
35
+ cache-control:
36
+ - max-age=0, private, must-revalidate
37
+ x-request-id:
38
+ - 8a79b573-8db2-474c-a994-9e1ff59bc6c1
39
+ x-runtime:
40
+ - '0.830313'
41
+ transfer-encoding:
42
+ - chunked
43
+ body:
44
+ encoding: UTF-8
45
+ string: '{"project_id":"f11dfad4-2247-4220-b3b2-efeb82864a97","id":"3a101d25-e03f-4fac-a4ee-dbe882c6139d","state":"uploaded","source_uri":"s3://resizing-bucket-development-video/videos/uploading/f11dfad4-2247-4220-b3b2-efeb82864a97/3a101d25-e03f-4fac-a4ee-dbe882c6139d/1dc40aae-29ab-4369-87da-10b146371fb8","deleted_at":null,"s3_presigned_url":"https://resizing-bucket-development-video.s3.ap-northeast-1.amazonaws.com/videos/uploading/f11dfad4-2247-4220-b3b2-efeb82864a97/3a101d25-e03f-4fac-a4ee-dbe882c6139d/1dc40aae-29ab-4369-87da-10b146371fb8?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=AKIXXXXXXXXXX%2F20210122%2Fap-northeast-1%2Fs3%2Faws4_request\u0026X-Amz-Date=20210122T094237Z\u0026X-Amz-Expires=900\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=c847ca1bfc20b7caeefcb999697df3cfd531aa2b7f0aa13f9066f289f693c22d","converted_uri":"s3://resizing-bucket-development-video/videos/converted/f11dfad4-2247-4220-b3b2-efeb82864a97/3a101d25-e03f-4fac-a4ee-dbe882c6139d/1dc40aae-29ab-4369-87da-10b146371fb8","created_at":"2021-01-22T09:42:37.670Z","updated_at":"2021-01-22T09:42:37.878Z","upload_completed_url":"http://192.168.56.101:5000/projects/f11dfad4-2247-4220-b3b2-efeb82864a97/upload/videos/3a101d25-e03f-4fac-a4ee-dbe882c6139d/upload_completed","self_url":"http://192.168.56.101:5000/projects/f11dfad4-2247-4220-b3b2-efeb82864a97/upload/videos/3a101d25-e03f-4fac-a4ee-dbe882c6139d.json","m3u8_url":null,"hevc_url":null,"avc_url":null,"thumbnail_url":"/assets/videos/now-converting-8a05d294385c14270a3662e01df5e50578cabcd2787123c18057ac06b101344c.png","job_state":{"id":"a586d38f-bdc3-4af2-9dbc-e0c18d2d54c5","upload_video_id":"3a101d25-e03f-4fac-a4ee-dbe882c6139d","state":"initialized","job_percent_complete":0,"created_at":"2021-01-22T09:42:38.501Z","updated_at":"2021-01-22T09:42:38.501Z"}}'
46
+ recorded_at: Fri, 22 Jan 2021 09:42:38 GMT
47
+ recorded_with: VCR 6.0.0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resizing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junichiro Kasuya
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2026-01-18 00:00:00.000000000 Z
11
+ date: 2024-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,48 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '2.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rails
28
+ name: faraday-multipart
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '6.0'
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '7.1'
37
- type: :development
33
+ version: '0'
34
+ type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
42
46
  - !ruby/object:Gem::Version
43
47
  version: '6.0'
44
- - - "<"
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
45
53
  - !ruby/object:Gem::Version
46
- version: '7.1'
54
+ version: '6.0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: carrierwave
49
57
  requirement: !ruby/object:Gem::Requirement
50
58
  requirements:
51
59
  - - "~>"
52
60
  - !ruby/object:Gem::Version
53
- version: 1.3.2
61
+ version: 2.2.5
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
65
  requirements:
58
66
  - - "~>"
59
67
  - !ruby/object:Gem::Version
60
- version: 1.3.2
68
+ version: 2.2.5
61
69
  - !ruby/object:Gem::Dependency
62
70
  name: fog-aws
63
71
  requirement: !ruby/object:Gem::Requirement
@@ -76,16 +84,16 @@ dependencies:
76
84
  name: minitest
77
85
  requirement: !ruby/object:Gem::Requirement
78
86
  requirements:
79
- - - "~>"
87
+ - - ">="
80
88
  - !ruby/object:Gem::Version
81
- version: '5.16'
89
+ version: '0'
82
90
  type: :development
83
91
  prerelease: false
84
92
  version_requirements: !ruby/object:Gem::Requirement
85
93
  requirements:
86
- - - "~>"
94
+ - - ">="
87
95
  - !ruby/object:Gem::Version
88
- version: '5.16'
96
+ version: '0'
89
97
  - !ruby/object:Gem::Dependency
90
98
  name: minitest-ci
91
99
  requirement: !ruby/object:Gem::Requirement
@@ -101,7 +109,7 @@ dependencies:
101
109
  - !ruby/object:Gem::Version
102
110
  version: '0'
103
111
  - !ruby/object:Gem::Dependency
104
- name: mysql2
112
+ name: rubocop
105
113
  requirement: !ruby/object:Gem::Requirement
106
114
  requirements:
107
115
  - - ">="
@@ -115,7 +123,7 @@ dependencies:
115
123
  - !ruby/object:Gem::Version
116
124
  version: '0'
117
125
  - !ruby/object:Gem::Dependency
118
- name: rubocop
126
+ name: timecop
119
127
  requirement: !ruby/object:Gem::Requirement
120
128
  requirements:
121
129
  - - ">="
@@ -129,7 +137,7 @@ dependencies:
129
137
  - !ruby/object:Gem::Version
130
138
  version: '0'
131
139
  - !ruby/object:Gem::Dependency
132
- name: simplecov
140
+ name: vcr
133
141
  requirement: !ruby/object:Gem::Requirement
134
142
  requirements:
135
143
  - - ">="
@@ -143,7 +151,7 @@ dependencies:
143
151
  - !ruby/object:Gem::Version
144
152
  version: '0'
145
153
  - !ruby/object:Gem::Dependency
146
- name: simplecov-cobertura
154
+ name: mysql2
147
155
  requirement: !ruby/object:Gem::Requirement
148
156
  requirements:
149
157
  - - ">="
@@ -157,7 +165,7 @@ dependencies:
157
165
  - !ruby/object:Gem::Version
158
166
  version: '0'
159
167
  - !ruby/object:Gem::Dependency
160
- name: timecop
168
+ name: simplecov
161
169
  requirement: !ruby/object:Gem::Requirement
162
170
  requirements:
163
171
  - - ">="
@@ -171,7 +179,7 @@ dependencies:
171
179
  - !ruby/object:Gem::Version
172
180
  version: '0'
173
181
  - !ruby/object:Gem::Dependency
174
- name: vcr
182
+ name: simplecov-cobertura
175
183
  requirement: !ruby/object:Gem::Requirement
176
184
  requirements:
177
185
  - - ">="
@@ -187,7 +195,10 @@ dependencies:
187
195
  description: 'Client and utilities for Resizing '
188
196
  email:
189
197
  - junichiro.kasuya@gmail.com
190
- executables: []
198
+ executables:
199
+ - console
200
+ - generate-changelog
201
+ - setup
191
202
  extensions: []
192
203
  extra_rdoc_files: []
193
204
  files:
@@ -199,13 +210,11 @@ files:
199
210
  - LICENSE.txt
200
211
  - README.md
201
212
  - Rakefile
202
- - bin/console
203
- - bin/generate-changelog
204
- - bin/setup
205
213
  - docker-compose.yml
214
+ - exe/console
215
+ - exe/generate-changelog
216
+ - exe/setup
206
217
  - lib/resizing.rb
207
- - lib/resizing/active_storage.rb
208
- - lib/resizing/active_storage/service.rb
209
218
  - lib/resizing/active_storage/service/resizing_service.rb
210
219
  - lib/resizing/carrier_wave.rb
211
220
  - lib/resizing/carrier_wave/storage/file.rb
@@ -218,22 +227,18 @@ files:
218
227
  - lib/resizing/mock_client.rb
219
228
  - lib/resizing/public_id.rb
220
229
  - lib/resizing/version.rb
230
+ - lib/resizing/video.rb
231
+ - lib/resizing/video/client.rb
221
232
  - resizing.gemspec
222
233
  - test/data/images/empty_file.jpg
223
234
  - test/data/images/sample1.jpg
224
- - test/resizing/active_storage_service_test.rb
225
235
  - test/resizing/carrier_wave/storage/file_test.rb
226
236
  - test/resizing/carrier_wave/storage/remote_test.rb
227
237
  - test/resizing/carrier_wave_test.rb
228
238
  - test/resizing/client_test.rb
229
- - test/resizing/configurable_test.rb
230
239
  - test/resizing/configuration_test.rb
231
- - test/resizing/constants_test.rb
232
- - test/resizing/error_test.rb
233
- - test/resizing/http_clientable_test.rb
234
- - test/resizing/mock_client_test.rb
235
240
  - test/resizing/public_id_test.rb
236
- - test/resizing_module_test.rb
241
+ - test/resizing/video/client_test.rb
237
242
  - test/resizing_test.rb
238
243
  - test/test_helper.rb
239
244
  - test/vcr/carrier_wave_test/remove_resizing_picture.yml
@@ -243,6 +248,9 @@ files:
243
248
  - test/vcr/client/metadata.yml
244
249
  - test/vcr/client/post.yml
245
250
  - test/vcr/client/put.yml
251
+ - test/vcr/video/metadata/success.yml
252
+ - test/vcr/video/prepare/success.yml
253
+ - test/vcr/video/upload_completed/success.yml
246
254
  homepage: https://github.com/jksy/resizing-gem
247
255
  licenses:
248
256
  - MIT
@@ -250,7 +258,7 @@ metadata:
250
258
  allowed_push_host: https://rubygems.org
251
259
  homepage_uri: https://github.com/jksy/resizing-gem
252
260
  source_code_uri: https://github.com/jksy/resizing-gem.
253
- post_install_message:
261
+ post_install_message:
254
262
  rdoc_options: []
255
263
  require_paths:
256
264
  - lib
@@ -258,15 +266,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
258
266
  requirements:
259
267
  - - ">="
260
268
  - !ruby/object:Gem::Version
261
- version: 3.0.0
269
+ version: 2.3.0
262
270
  required_rubygems_version: !ruby/object:Gem::Requirement
263
271
  requirements:
264
- - - ">="
272
+ - - ">"
265
273
  - !ruby/object:Gem::Version
266
- version: '0'
274
+ version: 1.3.1
267
275
  requirements: []
268
- rubygems_version: 3.4.19
269
- signing_key:
276
+ rubygems_version: 3.1.6
277
+ signing_key:
270
278
  specification_version: 4
271
279
  summary: Client and utilities for Resizing
272
280
  test_files: []
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Resizing
4
- module ActiveStorage
5
- module Service
6
- autoload :ResizingService, 'resizing/active_storage/service/resizing_service'
7
- end
8
- end
9
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Resizing
4
- module ActiveStorage
5
- autoload :Service, 'resizing/active_storage/service'
6
- end
7
- end
@@ -1,98 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- module ActiveStorage
7
- module Service
8
- class ResizingServiceTest < Minitest::Test
9
- def setup
10
- @service = Resizing::ActiveStorage::Service::ResizingService.new
11
- end
12
-
13
- def teardown
14
- # NOP
15
- end
16
-
17
- def test_service_initialization
18
- assert_instance_of Resizing::ActiveStorage::Service::ResizingService, @service
19
- end
20
-
21
- def test_upload_raises_not_implemented_error
22
- assert_raises NotImplementedError do
23
- @service.upload('test_key', StringIO.new('test data'))
24
- end
25
- end
26
-
27
- def test_download_raises_not_implemented_error
28
- assert_raises NotImplementedError do
29
- @service.download('test_key')
30
- end
31
- end
32
-
33
- def test_download_chunk_raises_not_implemented_error
34
- assert_raises NotImplementedError do
35
- @service.download_chunk('test_key', 0..99)
36
- end
37
- end
38
-
39
- def test_delete_raises_not_implemented_error
40
- assert_raises NotImplementedError do
41
- @service.delete('test_key')
42
- end
43
- end
44
-
45
- def test_exist_raises_not_implemented_error
46
- assert_raises NotImplementedError do
47
- @service.exist?('test_key')
48
- end
49
- end
50
-
51
- def test_url_for_direct_upload_raises_not_implemented_error
52
- assert_raises NotImplementedError do
53
- @service.url_for_direct_upload(
54
- 'test_key',
55
- expires_in: 3600,
56
- content_type: 'image/png',
57
- conteont_length: 1024,
58
- checksum: 'test_checksum'
59
- )
60
- end
61
- end
62
-
63
- def test_headers_for_direct_upload_raises_not_implemented_error
64
- assert_raises NotImplementedError do
65
- @service.headers_for_direct_upload(
66
- 'test_key',
67
- content_type: 'image/png',
68
- checksum: 'test_checksum'
69
- )
70
- end
71
- end
72
-
73
- def test_private_url_raises_not_implemented_error
74
- assert_raises NotImplementedError do
75
- @service.send(
76
- :private_url,
77
- 'test_key',
78
- expires_in: 3600,
79
- filename: 'test.png',
80
- content_type: 'image/png',
81
- disposition: :attachment
82
- )
83
- end
84
- end
85
-
86
- def test_public_url_raises_not_implemented_error
87
- assert_raises NotImplementedError do
88
- @service.send(
89
- :public_url,
90
- 'test_key',
91
- filename: 'test.png'
92
- )
93
- end
94
- end
95
- end
96
- end
97
- end
98
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- class ConfigurableTest < Minitest::Test
7
- class TestConfigurable
8
- include Configurable
9
-
10
- def initialize(config = nil)
11
- initialize_config(config)
12
- end
13
- end
14
-
15
- def setup
16
- # NOP
17
- end
18
-
19
- def teardown
20
- # NOP
21
- end
22
-
23
- def test_initialize_config_with_configuration_object
24
- config = Configuration.new(
25
- image_host: 'https://test.example.com',
26
- project_id: 'test_id',
27
- secret_token: 'test_token'
28
- )
29
- obj = TestConfigurable.new(config)
30
-
31
- assert_equal config, obj.config
32
- end
33
-
34
- def test_initialize_config_with_nil_uses_global_configure
35
- Resizing.configure = Configuration.new(
36
- image_host: 'https://global.example.com',
37
- project_id: 'global_id',
38
- secret_token: 'global_token'
39
- )
40
-
41
- obj = TestConfigurable.new(nil)
42
-
43
- assert_equal Resizing.configure.image_host, obj.config.image_host
44
- end
45
-
46
- def test_initialize_config_with_hash
47
- config_hash = {
48
- image_host: 'https://hash.example.com',
49
- project_id: 'hash_id',
50
- secret_token: 'hash_token'
51
- }
52
- obj = TestConfigurable.new(config_hash)
53
-
54
- assert_equal 'https://hash.example.com', obj.config.image_host
55
- assert_equal 'hash_id', obj.config.project_id
56
- end
57
-
58
- def test_config_is_accessible
59
- config = Configuration.new(
60
- image_host: 'https://test.example.com',
61
- project_id: 'test_id',
62
- secret_token: 'test_token'
63
- )
64
- obj = TestConfigurable.new(config)
65
-
66
- assert_instance_of Configuration, obj.config
67
- end
68
-
69
- def test_attr_reader_config_is_defined
70
- config = Configuration.new(
71
- image_host: 'https://test.example.com',
72
- project_id: 'test_id',
73
- secret_token: 'test_token'
74
- )
75
- obj = TestConfigurable.new(config)
76
-
77
- # Verify that config is accessible as a reader
78
- assert obj.respond_to?(:config)
79
- assert !obj.respond_to?(:config=)
80
- end
81
- end
82
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- class ConstantsTest < Minitest::Test
7
- def test_http_status_ok_is_defined
8
- assert_equal 200, Resizing::Constants::HTTP_STATUS_OK
9
- end
10
-
11
- def test_http_status_created_is_defined
12
- assert_equal 201, Resizing::Constants::HTTP_STATUS_CREATED
13
- end
14
-
15
- def test_http_status_not_found_is_defined
16
- assert_equal 404, Resizing::Constants::HTTP_STATUS_NOT_FOUND
17
- end
18
-
19
- def test_constants_are_integers
20
- assert_instance_of Integer, Resizing::Constants::HTTP_STATUS_OK
21
- assert_instance_of Integer, Resizing::Constants::HTTP_STATUS_CREATED
22
- assert_instance_of Integer, Resizing::Constants::HTTP_STATUS_NOT_FOUND
23
- end
24
- end
25
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- class ErrorTest < Minitest::Test
7
- def test_error_is_standard_error_subclass
8
- assert Resizing::Error < StandardError
9
- end
10
-
11
- def test_configuration_error_is_error_subclass
12
- assert Resizing::ConfigurationError < Resizing::Error
13
- end
14
-
15
- def test_api_error_is_error_subclass
16
- assert Resizing::APIError < Resizing::Error
17
- end
18
-
19
- def test_api_error_has_decoded_body_accessor
20
- error = Resizing::APIError.new('test error')
21
-
22
- assert_respond_to error, :decoded_body
23
- assert_respond_to error, :decoded_body=
24
- end
25
-
26
- def test_api_error_decoded_body_defaults_to_empty_hash
27
- error = Resizing::APIError.new('test error')
28
-
29
- assert_equal({}, error.decoded_body)
30
- end
31
-
32
- def test_api_error_decoded_body_can_be_set_with_hash
33
- error = Resizing::APIError.new('test error')
34
- body = { 'error' => 'test', 'code' => 400 }
35
-
36
- error.decoded_body = body
37
-
38
- assert_equal body, error.decoded_body
39
- end
40
-
41
- def test_api_error_decoded_body_raises_argument_error_for_non_hash
42
- error = Resizing::APIError.new('test error')
43
-
44
- assert_raises ArgumentError do
45
- error.decoded_body = 'not a hash'
46
- end
47
- end
48
-
49
- def test_api_error_decoded_body_raises_argument_error_for_array
50
- error = Resizing::APIError.new('test error')
51
-
52
- assert_raises ArgumentError do
53
- error.decoded_body = %w[not a hash]
54
- end
55
- end
56
-
57
- def test_configuration_error_can_be_raised_with_message
58
- error = assert_raises Resizing::ConfigurationError do
59
- raise Resizing::ConfigurationError, 'test configuration error'
60
- end
61
-
62
- assert_equal 'test configuration error', error.message
63
- end
64
-
65
- def test_api_error_can_be_raised_with_message
66
- error = assert_raises Resizing::APIError do
67
- raise Resizing::APIError, 'test api error'
68
- end
69
-
70
- assert_equal 'test api error', error.message
71
- end
72
- end
73
- end