resizing 0.3.2 → 0.5.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +141 -0
- data/bin/generate-changelog +3 -0
- data/lib/resizing.rb +10 -1
- data/lib/resizing/carrier_wave.rb +44 -10
- data/lib/resizing/carrier_wave/storage/file.rb +44 -39
- data/lib/resizing/carrier_wave/storage/remote.rb +8 -1
- data/lib/resizing/client.rb +52 -17
- data/lib/resizing/configuration.rb +4 -2
- data/lib/resizing/mock_client.rb +24 -4
- data/lib/resizing/public_id.rb +50 -0
- data/lib/resizing/version.rb +1 -1
- data/test/resizing/carrier_wave_test.rb +61 -12
- data/test/resizing/client_test.rb +37 -11
- data/test/resizing/public_id_test.rb +41 -0
- data/test/test_helper.rb +47 -3
- data/test/vcr/carrier_wave_test/remove_resizing_picture.yml +8 -10
- data/test/vcr/carrier_wave_test/save.yml +12 -14
- data/test/vcr/client/metadata.yml +47 -0
- data/test/vcr/client/post.yml +10 -12
- data/test/vcr/client/put.yml +10 -12
- metadata +7 -2
@@ -69,9 +69,11 @@ module Resizing
|
|
69
69
|
# たぶんここにおくものではない
|
70
70
|
# もしくはキャッシュしない
|
71
71
|
def generate_identifier
|
72
|
-
|
72
|
+
"/projects/#{project_id}/upload/images/#{generate_image_id}"
|
73
|
+
end
|
73
74
|
|
74
|
-
|
75
|
+
def generate_image_id
|
76
|
+
::SecureRandom.uuid
|
75
77
|
end
|
76
78
|
|
77
79
|
def ==(other)
|
data/lib/resizing/mock_client.rb
CHANGED
@@ -3,17 +3,37 @@
|
|
3
3
|
module Resizing
|
4
4
|
class MockClient
|
5
5
|
def post(file_or_binary, options = {})
|
6
|
-
load_yaml('test/vcr/client/post.yml')
|
6
|
+
r = load_yaml('test/vcr/client/post.yml')
|
7
|
+
JSON.parse(r['string'])
|
7
8
|
end
|
8
9
|
|
9
10
|
def put(name, file_or_binary, options)
|
10
|
-
load_yaml('test/vcr/client/put.yml')
|
11
|
+
r = load_yaml('test/vcr/client/put.yml')
|
12
|
+
result = JSON.parse(r['string'])
|
13
|
+
# replace name, public_id and version by name argument
|
14
|
+
result['id'] = name
|
15
|
+
result['public_id'].gsub!(/AWEaewfAreaweFAFASfwe/, name)
|
16
|
+
result['public_id'].gsub!(/v6Ew3HmDAYfb3NMRdLxR45i_gXMbLlGyi/, "v#{Time.now.to_f}")
|
17
|
+
result
|
11
18
|
end
|
12
19
|
|
13
20
|
def delete(name)
|
14
|
-
load_yaml('test/vcr/client/delete.yml')
|
21
|
+
r = load_yaml('test/vcr/client/delete.yml')
|
22
|
+
result = JSON.parse(r['string'])
|
23
|
+
# replace name and public_id by name argument
|
24
|
+
result['id'] = name
|
25
|
+
result['public_id'].gsub!(/28c49144-c00d-4cb5-8619-98ce95977b9c/, name)
|
26
|
+
result
|
15
27
|
end
|
16
28
|
|
29
|
+
def metadata(name)
|
30
|
+
r = load_yaml('test/vcr/client/metadata.yml')
|
31
|
+
result = JSON.parse(r['string'])
|
32
|
+
# replace name and public_id by name argument
|
33
|
+
result['id'] = name
|
34
|
+
result['public_id'].gsub!(/bfdaf2b3-7ec5-41f4-9caa-d53247dd9666/, name)
|
35
|
+
result
|
36
|
+
end
|
17
37
|
private
|
18
38
|
|
19
39
|
def load_yaml filename
|
@@ -22,7 +42,7 @@ module Resizing
|
|
22
42
|
end
|
23
43
|
|
24
44
|
def library_root
|
25
|
-
File.
|
45
|
+
@library_root ||= File.expand_path('../../../', __FILE__)
|
26
46
|
end
|
27
47
|
end
|
28
48
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Resizing
|
2
|
+
class PublicId
|
3
|
+
def initialize public_id
|
4
|
+
@public_id = public_id
|
5
|
+
parsed
|
6
|
+
end
|
7
|
+
|
8
|
+
def empty?
|
9
|
+
@public_id.to_s.empty?
|
10
|
+
end
|
11
|
+
|
12
|
+
def image_id
|
13
|
+
parsed[:image_id] if parsed
|
14
|
+
end
|
15
|
+
|
16
|
+
def project_id
|
17
|
+
parsed[:project_id] if parsed
|
18
|
+
end
|
19
|
+
|
20
|
+
def version
|
21
|
+
parsed[:version] if parsed
|
22
|
+
end
|
23
|
+
|
24
|
+
# temporary
|
25
|
+
def filename
|
26
|
+
image_id
|
27
|
+
end
|
28
|
+
|
29
|
+
def identifier
|
30
|
+
"/projects/#{project_id}/upload/images/#{image_id}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s
|
34
|
+
@public_id.to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def parsed
|
40
|
+
return nil if @public_id.nil?
|
41
|
+
unless defined? @parsed
|
42
|
+
@parsed = Resizing.separate_public_id(@public_id)
|
43
|
+
raise "type error #{@public_id}" if @parsed == nil
|
44
|
+
end
|
45
|
+
@parsed
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
end
|
50
|
+
end
|
data/lib/resizing/version.rb
CHANGED
@@ -6,11 +6,12 @@ module Resizing
|
|
6
6
|
class CarrierWaveTest < Minitest::Test
|
7
7
|
def setup
|
8
8
|
TestModel.delete_all
|
9
|
+
TestJPGModel.delete_all
|
9
10
|
|
10
11
|
@configuration_template = {
|
11
12
|
host: 'http://192.168.56.101:5000',
|
12
|
-
project_id: '
|
13
|
-
secret_token: '
|
13
|
+
project_id: 'e06e710d-f026-4dcf-b2c0-eab0de8bb83f',
|
14
|
+
secret_token: 'ewbym2r1pk49x1d2lxdbiiavnqp25j2kh00hsg3koy0ppm620x5mhlmgl3rq5ci8',
|
14
15
|
open_timeout: 10,
|
15
16
|
response_timeout: 20
|
16
17
|
}
|
@@ -20,7 +21,7 @@ module Resizing
|
|
20
21
|
def teardown; end
|
21
22
|
|
22
23
|
def test_remove_resizing_picture
|
23
|
-
model = prepare_model
|
24
|
+
model = prepare_model TestModel
|
24
25
|
|
25
26
|
VCR.use_cassette 'carrier_wave_test/remove_resizing_picture' do
|
26
27
|
SecureRandom.stub :uuid, '28c49144-c00d-4cb5-8619-98ce95977b9c' do
|
@@ -32,7 +33,7 @@ module Resizing
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def test_do_not_raise_if_empty_column_is_removed
|
35
|
-
model = prepare_model
|
36
|
+
model = prepare_model TestModel
|
36
37
|
|
37
38
|
VCR.use_cassette 'carrier_wave_test/remove_resizing_picture' do
|
38
39
|
SecureRandom.stub :uuid, '28c49144-c00d-4cb5-8619-98ce95977b9c' do
|
@@ -42,23 +43,60 @@ module Resizing
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def test_picture_url_return_correct_value_and_when_model_reloaded
|
45
|
-
model = prepare_model
|
46
|
+
model = prepare_model TestModel
|
46
47
|
model.save!
|
47
|
-
assert_equal(expect_url, model.resizing_picture_url)
|
48
|
+
assert_equal("#{expect_url}/", model.resizing_picture_url)
|
48
49
|
|
49
50
|
model.reload
|
50
|
-
assert_equal(expect_url, model.resizing_picture_url)
|
51
|
+
assert_equal("#{expect_url}/", model.resizing_picture_url)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_picture_url_return_with_transform_strings
|
55
|
+
model = prepare_model TestModel
|
56
|
+
model.save!
|
57
|
+
assert_equal("#{expect_url}/c_fill,w_40,h_40", model.resizing_picture_url(:small))
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_format_method_is_callable
|
61
|
+
model = prepare_model TestModel
|
62
|
+
model.save!
|
63
|
+
assert_nil model.resizing_picture.format
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_format_method_is_return_jpg_with_overriden
|
67
|
+
model = prepare_model TestJPGModel
|
68
|
+
model.save!
|
69
|
+
model.resizing_picture.format
|
70
|
+
assert_equal('jpg', model.resizing_picture.format)
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_url_is_return_default_url_as_nil
|
74
|
+
model = TestModel.new
|
75
|
+
model.save!
|
76
|
+
assert_nil model.resizing_picture_url
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_url_is_return_default_url
|
80
|
+
model = TestModelWithDefaultURL.new
|
81
|
+
model.save!
|
82
|
+
assert_equal('http://example.com/test.jpg', model.resizing_picture_url)
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_is_successful
|
86
|
+
model = prepare_model_with_tempfile TestModel
|
87
|
+
model.save!
|
88
|
+
# assert_equal('http://192.168.56.101:5000/projects/098a2a0d-c387-4135-a071-1254d6d7e70a/upload/images/28c49144-c00d-4cb5-8619-98ce95977b9c/v1Id850__tqNsnoGWWUibtIBZ5NgjV45M/', model.resizing_picture_url)
|
51
89
|
end
|
52
90
|
|
53
91
|
def expect_url
|
54
|
-
'http://192.168.56.101:5000/projects/
|
55
|
-
'upload/images/
|
92
|
+
'http://192.168.56.101:5000/projects/e06e710d-f026-4dcf-b2c0-eab0de8bb83f/'+
|
93
|
+
'upload/images/14ea7aac-a194-4330-931f-6b562aec413d/v_8c5lEhDB5RT3PZp1Fn5PYGm9YVx_x0e'
|
56
94
|
end
|
57
95
|
|
58
|
-
def prepare_model
|
59
|
-
VCR.use_cassette 'carrier_wave_test/save' do
|
96
|
+
def prepare_model model
|
97
|
+
VCR.use_cassette 'carrier_wave_test/save', record: :once do
|
60
98
|
SecureRandom.stub :uuid, '28c49144-c00d-4cb5-8619-98ce95977b9c' do
|
61
|
-
model =
|
99
|
+
model = model.new
|
62
100
|
file = File.open('test/data/images/sample1.jpg', 'r')
|
63
101
|
uploaded_file = ActionDispatch::Http::UploadedFile.new(
|
64
102
|
filename: File.basename(file.path),
|
@@ -71,5 +109,16 @@ module Resizing
|
|
71
109
|
end
|
72
110
|
end
|
73
111
|
end
|
112
|
+
|
113
|
+
def prepare_model_with_tempfile model
|
114
|
+
VCR.use_cassette 'carrier_wave_test/save', record: :once do
|
115
|
+
SecureRandom.stub :uuid, '28c49144-c00d-4cb5-8619-98ce95977b9c' do
|
116
|
+
model = model.new
|
117
|
+
file = File.open('test/data/images/sample1.jpg', 'r')
|
118
|
+
model.resizing_picture = file
|
119
|
+
return model
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
74
123
|
end
|
75
124
|
end
|
@@ -8,8 +8,8 @@ module Resizing
|
|
8
8
|
# NOP
|
9
9
|
@configuration_template = {
|
10
10
|
host: 'http://192.168.56.101:5000',
|
11
|
-
project_id: '
|
12
|
-
secret_token: '
|
11
|
+
project_id: 'e06e710d-f026-4dcf-b2c0-eab0de8bb83f',
|
12
|
+
secret_token: 'ewbym2r1pk49x1d2lxdbiiavnqp25j2kh00hsg3koy0ppm620x5mhlmgl3rq5ci8',
|
13
13
|
open_timeout: 10,
|
14
14
|
response_timeout: 20
|
15
15
|
}
|
@@ -19,7 +19,7 @@ module Resizing
|
|
19
19
|
# NOP
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def test_is_initialized
|
23
23
|
Resizing.configure = @configuration_template
|
24
24
|
|
25
25
|
client = Resizing::Client.new
|
@@ -27,36 +27,37 @@ module Resizing
|
|
27
27
|
assert_equal(client.config, Resizing.configure)
|
28
28
|
end
|
29
29
|
|
30
|
-
def
|
30
|
+
def test_is_initialized_with_configuration
|
31
31
|
config = Resizing::Configuration.new(@configuration_template)
|
32
32
|
client = Resizing::Client.new(config)
|
33
33
|
assert(!client.config.nil?)
|
34
34
|
assert_equal(client.config, config)
|
35
35
|
end
|
36
36
|
|
37
|
-
def
|
37
|
+
def test_is_postable_file
|
38
38
|
Resizing.configure = @configuration_template
|
39
39
|
|
40
40
|
client = Resizing::Client.new
|
41
|
-
VCR.use_cassette 'client/post' do
|
41
|
+
VCR.use_cassette 'client/post', record: :once do
|
42
42
|
f = File.open('test/data/images/sample1.jpg', 'r')
|
43
43
|
r = client.post(f, content_type: 'image/jpeg')
|
44
|
-
assert_equal(r['id'], '
|
44
|
+
assert_equal(r['id'], '87263920-2081-498e-a107-9625f4fde01b')
|
45
45
|
assert_equal(r['project_id'], Resizing.configure.project_id)
|
46
46
|
assert_equal(r['content_type'], 'image/jpeg')
|
47
47
|
assert(!r['latest_version_id'].nil?)
|
48
48
|
assert(!r['latest_etag'].nil?)
|
49
49
|
assert(!r['created_at'].nil?)
|
50
50
|
assert(!r['updated_at'].nil?)
|
51
|
-
assert_equal(r['public_id'], '/projects/
|
51
|
+
assert_equal(r['public_id'], '/projects/e06e710d-f026-4dcf-b2c0-eab0de8bb83f/upload/images/87263920-2081-498e-a107-9625f4fde01b/vHg9VFvdI6HRzLFbV495VdwVmHIspLRCo')
|
52
|
+
assert_equal(r['filename'], 'sample1.jpg')
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
55
|
-
def
|
56
|
+
def test_is_putable_file
|
56
57
|
Resizing.configure = @configuration_template
|
57
58
|
|
58
59
|
client = Resizing::Client.new
|
59
|
-
VCR.use_cassette 'client/put' do
|
60
|
+
VCR.use_cassette 'client/put', record: :once do
|
60
61
|
f = File.open('test/data/images/sample1.jpg', 'r')
|
61
62
|
name = 'AWEaewfAreaweFAFASfwe'
|
62
63
|
r = client.put(name, f, content_type: 'image/jpeg')
|
@@ -69,7 +70,32 @@ module Resizing
|
|
69
70
|
assert(!r['updated_at'].nil?)
|
70
71
|
assert_equal(
|
71
72
|
r['public_id'],
|
72
|
-
"/projects/
|
73
|
+
"/projects/e06e710d-f026-4dcf-b2c0-eab0de8bb83f/upload/images/#{name}/vfztekhN_WoeXo8ZkCZ4i5jcQvmPpZewR"
|
74
|
+
)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_get_the_metadata
|
79
|
+
# TODO
|
80
|
+
|
81
|
+
Resizing.configure = @configuration_template
|
82
|
+
|
83
|
+
client = Resizing::Client.new
|
84
|
+
VCR.use_cassette 'client/metadata', record: :once do
|
85
|
+
name = '87263920-2081-498e-a107-9625f4fde01b'
|
86
|
+
r = client.metadata(name)
|
87
|
+
assert_equal(r['id'], name)
|
88
|
+
assert_equal(r['project_id'], Resizing.configure.project_id)
|
89
|
+
assert_equal(r['content_type'], 'image/jpeg')
|
90
|
+
assert(!r['latest_version_id'].nil?)
|
91
|
+
assert(!r['latest_etag'].nil?)
|
92
|
+
assert(!r['created_at'].nil?)
|
93
|
+
assert(!r['updated_at'].nil?)
|
94
|
+
assert(!r['height'].nil?)
|
95
|
+
assert(!r['width'].nil?)
|
96
|
+
assert_equal(
|
97
|
+
r['public_id'],
|
98
|
+
"/projects/e06e710d-f026-4dcf-b2c0-eab0de8bb83f/upload/images/87263920-2081-498e-a107-9625f4fde01b/vHg9VFvdI6HRzLFbV495VdwVmHIspLRCo"
|
73
99
|
)
|
74
100
|
end
|
75
101
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
module Resizing
|
6
|
+
class PublicIdTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
@project_id = '098a2a0d-c387-4135-a071-1254d6d7e70a'
|
9
|
+
@image_id = '28c49144-c00d-4cb5-8619-98ce95977b9c'
|
10
|
+
@version = '1Id850q34fgsaer23w'
|
11
|
+
@public_id_as_string = "/projects/#{@project_id}/upload/images/#{@image_id}/v#{@version}"
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown; end
|
15
|
+
|
16
|
+
def test_expect_equal_project_id
|
17
|
+
public_id = Resizing::PublicId.new @public_id_as_string
|
18
|
+
assert_equal @project_id, public_id.project_id
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_expect_equal_image_id
|
22
|
+
public_id = Resizing::PublicId.new @public_id_as_string
|
23
|
+
assert_equal @image_id, public_id.image_id
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_expect_equal_version
|
27
|
+
public_id = Resizing::PublicId.new @public_id_as_string
|
28
|
+
assert_equal @version, public_id.version
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_expect_equal_identifier
|
32
|
+
public_id = Resizing::PublicId.new @public_id_as_string
|
33
|
+
assert_equal @public_id_as_string.gsub(/\/v.*$/, ''), public_id.identifier
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_expect_equal_public_id
|
37
|
+
public_id = Resizing::PublicId.new @public_id_as_string
|
38
|
+
assert_equal @public_id_as_string, public_id.to_s
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -32,17 +32,49 @@ ActiveRecord::Base.establish_connection(
|
|
32
32
|
|
33
33
|
ActiveRecord::Schema.define do
|
34
34
|
self.verbose = false
|
35
|
-
connection.execute 'drop table if exists test_models'
|
36
35
|
|
37
|
-
|
38
|
-
|
36
|
+
%i(test_models test_jpg_models test_model_with_default_urls).each do |model_name|
|
37
|
+
connection.execute "drop table if exists #{model_name}"
|
38
|
+
|
39
|
+
create_table model_name do |t|
|
40
|
+
t.string :resizing_picture, null: true, default: nil
|
41
|
+
end
|
39
42
|
end
|
40
43
|
end
|
41
44
|
|
42
45
|
class ResizingUploader < CarrierWave::Uploader::Base
|
43
46
|
include Resizing::CarrierWave
|
44
47
|
|
48
|
+
version :small do
|
49
|
+
process resize_to_fill: [40, 40]
|
50
|
+
end
|
51
|
+
|
52
|
+
process resize_to_limit: [1000]
|
53
|
+
end
|
54
|
+
|
55
|
+
class ResizingJPGUploader < CarrierWave::Uploader::Base
|
56
|
+
include Resizing::CarrierWave
|
57
|
+
|
45
58
|
process resize_to_limit: [1000]
|
59
|
+
|
60
|
+
# override Resizing::CarrierWave#default_format
|
61
|
+
def default_format
|
62
|
+
'jpg'
|
63
|
+
end
|
64
|
+
|
65
|
+
def default_url
|
66
|
+
'http://example.com/test.jpg'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
class ResizingUploaderWithDefaultURL < CarrierWave::Uploader::Base
|
71
|
+
include Resizing::CarrierWave
|
72
|
+
|
73
|
+
process resize_to_limit: [1000]
|
74
|
+
|
75
|
+
def default_url
|
76
|
+
'http://example.com/test.jpg'
|
77
|
+
end
|
46
78
|
end
|
47
79
|
|
48
80
|
class TestModel < ::ActiveRecord::Base
|
@@ -50,3 +82,15 @@ class TestModel < ::ActiveRecord::Base
|
|
50
82
|
|
51
83
|
mount_uploader :resizing_picture, ResizingUploader
|
52
84
|
end
|
85
|
+
|
86
|
+
class TestJPGModel < ::ActiveRecord::Base
|
87
|
+
extend CarrierWave::Mount
|
88
|
+
|
89
|
+
mount_uploader :resizing_picture, ResizingJPGUploader
|
90
|
+
end
|
91
|
+
|
92
|
+
class TestModelWithDefaultURL < ::ActiveRecord::Base
|
93
|
+
extend CarrierWave::Mount
|
94
|
+
|
95
|
+
mount_uploader :resizing_picture, ResizingUploaderWithDefaultURL
|
96
|
+
end
|