shutterstock-v2 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +27 -0
- data/.rspec +3 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +6 -0
- data/Dockerfile +17 -0
- data/Gemfile +3 -0
- data/Guardfile +9 -0
- data/README.md +377 -0
- data/Rakefile +19 -0
- data/lib/client/auth.rb +48 -0
- data/lib/client/categories.rb +11 -0
- data/lib/client/category.rb +16 -0
- data/lib/client/client.rb +72 -0
- data/lib/client/collection.rb +151 -0
- data/lib/client/collections.rb +16 -0
- data/lib/client/configuration.rb +20 -0
- data/lib/client/contributor.rb +15 -0
- data/lib/client/driver.rb +38 -0
- data/lib/client/error.rb +20 -0
- data/lib/client/image.rb +139 -0
- data/lib/client/image_assets.rb +56 -0
- data/lib/client/image_size_details.rb +26 -0
- data/lib/client/images.rb +27 -0
- data/lib/client/license.rb +67 -0
- data/lib/client/licenses.rb +23 -0
- data/lib/client/model.rb +15 -0
- data/lib/client/models.rb +11 -0
- data/lib/client/request.rb +41 -0
- data/lib/client/subscription.rb +35 -0
- data/lib/client/subscription_allotment.rb +19 -0
- data/lib/client/subscription_license_format.rb +16 -0
- data/lib/client/subscription_license_formats.rb +12 -0
- data/lib/client/subscription_price.rb +13 -0
- data/lib/client/subscriptions.rb +37 -0
- data/lib/client/thumbnail.rb +17 -0
- data/lib/client/user.rb +68 -0
- data/lib/client/version.rb +3 -0
- data/lib/shutterstock-v2.rb +31 -0
- data/shutterstock-v2.gemspec +30 -0
- data/spec/cassettes/Shutterstock_Auth_get_access_token/returns_hash_with_access_token.yml +86 -0
- data/spec/cassettes/Shutterstock_Auth_get_authorize_url/returns_URL_to_redirect_user_to_passing_redirect_url_an.yml +48 -0
- data/spec/cassettes/Shutterstock_Categories/parses_params_correctly.yml +53 -0
- data/spec/cassettes/Shutterstock_Categories/returns_all_cats_for_an_image.yml +53 -0
- data/spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_Image_new.yml +48 -0
- data/spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_id.yml +48 -0
- data/spec/cassettes/Shutterstock_Collection/add_image_error_raises_error_if_collection_does_not_exist.yml +52 -0
- data/spec/cassettes/Shutterstock_Collection/create_creates_a_collection.yml +52 -0
- data/spec/cassettes/Shutterstock_Collection/destroy_destroys_a_collection.yml +93 -0
- data/spec/cassettes/Shutterstock_Collection/find_adds_an_image.yml +97 -0
- data/spec/cassettes/Shutterstock_Collection/find_converts_list_to_images.yml +101 -0
- data/spec/cassettes/Shutterstock_Collection/find_finds_a_collection_given_an_id.yml +52 -0
- data/spec/cassettes/Shutterstock_Collection/find_raises_error_for_invalid_collection_id.yml +50 -0
- data/spec/cassettes/Shutterstock_Collection/find_removes_an_image.yml +95 -0
- data/spec/cassettes/Shutterstock_Collection/list_returns_all_collections_for_the_current_user.yml +53 -0
- data/spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_Image_new.yml +46 -0
- data/spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_id.yml +46 -0
- data/spec/cassettes/Shutterstock_Collection/update_changes_the_name_of_a_collection.yml +97 -0
- data/spec/cassettes/Shutterstock_Collections/returns_all_collections_for_current_user.yml +53 -0
- data/spec/cassettes/Shutterstock_Image/fill_fills_all_details_of_current_image.yml +109 -0
- data/spec/cassettes/Shutterstock_Image/fills_all_details_of_current_image.yml +109 -0
- data/spec/cassettes/Shutterstock_Image/find_places_image_data_into_correct_fields.yml +56 -0
- data/spec/cassettes/Shutterstock_Image/find_places_more_image_data_into_correct_fields.yml +53 -0
- data/spec/cassettes/Shutterstock_Image/find_returns_an_Image_object.yml +56 -0
- data/spec/cassettes/Shutterstock_Image/finds_similar_images_given_an_image.yml +125 -0
- data/spec/cassettes/Shutterstock_Image/returns_an_Image_object.yml +56 -0
- data/spec/cassettes/Shutterstock_Image/returns_similar_images.yml +72 -0
- data/spec/cassettes/Shutterstock_Image/search_searches_for_images_based_on_searchterm.yml +73 -0
- data/spec/cassettes/Shutterstock_Image/search_searches_using_more_than_one_parameter.yml +77 -0
- data/spec/cassettes/Shutterstock_Image/searches_for_images_based_on_searchterm.yml +73 -0
- data/spec/cassettes/Shutterstock_Image/searches_using_more_than_one_parameter.yml +77 -0
- data/spec/cassettes/Shutterstock_Image/similar_finds_similar_images_given_an_image.yml +125 -0
- data/spec/cassettes/Shutterstock_Image/similar_returns_similar_images.yml +72 -0
- data/spec/cassettes/Shutterstock_ImageAssets/find_calculates_fields_correctly.yml +53 -0
- data/spec/cassettes/Shutterstock_ImageAssets/find_places_image_data_into_correct_fields.yml +53 -0
- data/spec/cassettes/Shutterstock_Images/fill_fills_details_of_all_images_in_list_all_images_now_have_keywords.yml +1144 -0
- data/spec/cassettes/Shutterstock_Images/returns_similar_images.yml +126 -0
- data/spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_error_if_requesting_an_image.yml +53 -0
- data/spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_licenced_image_if_ed_ack_is_.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_license_from_image_object_sends_editorial_acknowledgement_when.yml +160 -0
- data/spec/cassettes/Shutterstock_License/license_license_from_image_object_using_found_subscription.yml +108 -0
- data/spec/cassettes/Shutterstock_License/license_license_from_image_object_vector_image.yml +108 -0
- data/spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images_from_Image_new.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_multiple_returns_error_in_Licenses_when_incorrect_image_used.yml +53 -0
- data/spec/cassettes/Shutterstock_License/license_single_licencing_same_image_twice_does_not_give_error.yml +101 -0
- data/spec/cassettes/Shutterstock_License/license_single_license_fails_when_subscription_doesn_t_allow.yml +49 -0
- data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_Image_new.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_hash.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image_with_smaller_size.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_single_licenses_vector_image.yml +52 -0
- data/spec/cassettes/Shutterstock_License/license_single_licensing_same_image_twice_does_not_give_error.yml +101 -0
- data/spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_image_used.yml +103 -0
- data/spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_subscription_used.yml +53 -0
- data/spec/cassettes/Shutterstock_Models/parses_params_correctly.yml +53 -0
- data/spec/cassettes/Shutterstock_Models/returns_all_models_for_an_image.yml +53 -0
- data/spec/cassettes/Shutterstock_Subscription/allows_image_size_download_correctly_finds_if_image_size_is_possi.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscription/new_parses_info_on_user_correctly.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscription/new_returns_a_subscription_for_current_user.yml +59 -0
- data/spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_parses_info_correctly.yml +59 -0
- data/spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_returns_a_subscription_license_format_for_curren.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_expired_total_subscriptions.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_returns_only_active_subscriptions.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_downloads_left_only_subscriptions_with_downloads_l.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_expired_returns_only_expired_subscriptions.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_find_subscription_for_image_size_finds_subs_to_use.yml +59 -0
- data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_returns_all_subscriptions_for_current_user.yml +59 -0
- data/spec/cassettes/Shutterstock_User/find_parses_info_on_user_correctly.yml +52 -0
- data/spec/cassettes/Shutterstock_User/find_returns_object_for_current_user.yml +52 -0
- data/spec/client/auth_spec.rb +36 -0
- data/spec/client/categories_spec.rb +26 -0
- data/spec/client/category_spec.rb +16 -0
- data/spec/client/client_spec.rb +32 -0
- data/spec/client/collection_spec.rb +159 -0
- data/spec/client/collections_spec.rb +18 -0
- data/spec/client/configuration_spec.rb +10 -0
- data/spec/client/contributor_spec.rb +14 -0
- data/spec/client/driver_spec.rb +20 -0
- data/spec/client/image_assets_spec.rb +51 -0
- data/spec/client/image_size_details_spec.rb +33 -0
- data/spec/client/image_spec.rb +102 -0
- data/spec/client/images_spec.rb +31 -0
- data/spec/client/license_spec.rb +234 -0
- data/spec/client/model_spec.rb +14 -0
- data/spec/client/models_spec.rb +23 -0
- data/spec/client/request_spec.rb +79 -0
- data/spec/client/subscription_allotment_spec.rb +25 -0
- data/spec/client/subscription_license_format_spec.rb +29 -0
- data/spec/client/subscription_price_spec.rb +17 -0
- data/spec/client/subscription_spec.rb +60 -0
- data/spec/client/subscriptions_spec.rb +54 -0
- data/spec/client/thumbnail_spec.rb +21 -0
- data/spec/client/user_spec.rb +37 -0
- data/spec/spec_helper.rb +88 -0
- metadata +467 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Category do
|
4
|
+
# before do
|
5
|
+
# client
|
6
|
+
# end
|
7
|
+
|
8
|
+
context 'initialize' do
|
9
|
+
it 'initializes with ID and Name from params' do
|
10
|
+
category = Category.new("id" => 1234, "name" => "dog")
|
11
|
+
expect(category.id).to be 1234
|
12
|
+
expect(category.name).to eq "dog"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Client do
|
4
|
+
|
5
|
+
context "#initialize" do
|
6
|
+
it "should require a block" do
|
7
|
+
expect { Client.instance.configure }.to raise_error(AppNotConfigured)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'basic auth' do
|
12
|
+
it 'should raise an exception when client_id is not provided' do
|
13
|
+
expect do
|
14
|
+
Client.instance.configure do |config|
|
15
|
+
config.client_secret = "67890"
|
16
|
+
config.access_token = "abcde"
|
17
|
+
config.api_url = "https://api.shutterstock.com/v2"
|
18
|
+
end
|
19
|
+
end.to raise_error(AppNotConfigured)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should raise an exception when client_secret is not provided' do
|
23
|
+
expect do
|
24
|
+
Client.instance.configure do |config|
|
25
|
+
config.client_id = "12345"
|
26
|
+
end
|
27
|
+
end.to raise_error(AppNotConfigured)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Collection do
|
4
|
+
$new_collection_id = nil
|
5
|
+
|
6
|
+
before do
|
7
|
+
client
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'find' do
|
11
|
+
let(:id) { 23_712_632 }
|
12
|
+
let(:image_id) { 88_028_233 }
|
13
|
+
let(:new_image_id) { 550_104_544 }
|
14
|
+
subject(:collection) { Collection.find(id) }
|
15
|
+
|
16
|
+
it 'finds a collection, given an id' do
|
17
|
+
expect(Collection).to respond_to(:find)
|
18
|
+
|
19
|
+
expect(collection).to_not be_nil
|
20
|
+
expect(collection.id).to eql id
|
21
|
+
expect(collection.name.size).to be > 2
|
22
|
+
expect(collection.total_count).to be > 0
|
23
|
+
expect(collection.items_updated).to be_a DateTime
|
24
|
+
expect(collection.cover_item).to be_a Image
|
25
|
+
expect(collection.cover_item.id).to eq new_image_id
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'converts list to images' do
|
29
|
+
items = collection.items
|
30
|
+
expect(items).to be_kind_of Images
|
31
|
+
expect(items[0]).to be_kind_of Image
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'raises error for invalid collection id' do
|
35
|
+
test_id = 12_345_678
|
36
|
+
expect { Collection.find(test_id) }.to raise_error(FailedResponse)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'adds an image' do
|
40
|
+
expect { collection.add_image(new_image_id) }.not_to raise_error
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'removes an image' do
|
44
|
+
expect { collection.remove_image(new_image_id) }.not_to raise_error
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context do
|
49
|
+
|
50
|
+
context 'create' do
|
51
|
+
|
52
|
+
it 'raises ArgumentError if no collection_name' do
|
53
|
+
expect { Collection.create() }.to raise_error(ArgumentError)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'creates a collection' do
|
57
|
+
collection = Collection.create('test_collection')
|
58
|
+
expect(collection).to be_an_instance_of(Collection)
|
59
|
+
expect(collection.id).to be_an Integer
|
60
|
+
$new_collection_id = collection.id
|
61
|
+
expect(collection.name).to eql 'test_collection'
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'list' do
|
67
|
+
it 'returns all collections for the current user' do
|
68
|
+
result = Collection.list
|
69
|
+
expect(result).to_not be_nil
|
70
|
+
expect(result).to be_kind_of Array
|
71
|
+
expect(result).to be_kind_of Collections
|
72
|
+
expect(result[0]).to be_kind_of Collection
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'raises error on unsuccessful update' do
|
76
|
+
|
77
|
+
test_id = 99999 # creates error in mock
|
78
|
+
expect { Collection.update(id: test_id, name: 'test_collection_new_name') }.to raise_error(FailedResponse)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'update' do
|
83
|
+
it 'raises ArgumentError if no collection_name' do
|
84
|
+
expect { Collection.update() }.to raise_error(ArgumentError)
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'changes the name of a collection' do
|
88
|
+
expect { Collection.update(id: $new_collection_id, name: 'test_collection_new_name') }.not_to raise_error
|
89
|
+
expect(Collection.find($new_collection_id).name).to eq 'test_collection_new_name'
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'raises error on unsuccessful update' do
|
93
|
+
|
94
|
+
test_id = 99999 # creates error in mock
|
95
|
+
expect { Collection.update(id: test_id, name: 'test_collection_new_name') }.to raise_error(FailedResponse)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context 'destroy' do
|
100
|
+
it 'destroys a collection' do
|
101
|
+
expect { Collection.destroy($new_collection_id) }.not_to raise_error
|
102
|
+
expect { Collection.find($new_collection_id) }.to raise_error(FailedResponse)
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'raises error on unsucessful delete' do
|
106
|
+
test_id = 99999
|
107
|
+
expect { Collection.destroy(test_id) }.to raise_error(FailedResponse)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'add_image' do
|
112
|
+
let(:id) { 23_712_632 }
|
113
|
+
let(:bad_collection_id) { 54_321 }
|
114
|
+
let(:image_id) { 123_456_987_654_321 }
|
115
|
+
context 'error' do
|
116
|
+
it 'raises ArgumentError if no collection_id or image_id' do
|
117
|
+
expect { Collection.add_image(image_id: image_id) }.to raise_error(ArgumentError)
|
118
|
+
expect { Collection.add_image(id: bad_collection_id) }.to raise_error(ArgumentError)
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'raises error if collection does not exist' do
|
122
|
+
expect { Collection.add_image(id: bad_collection_id, image_id: image_id) }.to raise_error(FailedResponse)
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'adds image using id' do
|
128
|
+
expect { Collection.add_image(id: id, image_id: image_id) }.not_to raise_error
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'adds image using Image.new' do
|
132
|
+
expect { Collection.add_image(id: id, image_id: Image.new("id" => image_id)) }.not_to raise_error
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context 'remove_image' do
|
137
|
+
let(:id) { 23_712_632 }
|
138
|
+
let(:image_id) { 987_654_321 }
|
139
|
+
|
140
|
+
context 'error' do
|
141
|
+
it 'raises ArgumentError if no collection_id or image_id' do
|
142
|
+
expect { Collection.remove_image(image_id: image_id) }.to raise_error(ArgumentError)
|
143
|
+
expect { Collection.remove_image(id: id) }.to raise_error(ArgumentError)
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'removes image using id' do
|
149
|
+
expect { Collection.remove_image(id: id, image_id: image_id) }.not_to raise_error
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'removes image using Image.new' do
|
153
|
+
expect { Collection.remove_image(id: id, image_id: Image.new("id" => image_id)) }.not_to raise_error
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Collections do
|
4
|
+
before do
|
5
|
+
client
|
6
|
+
end
|
7
|
+
|
8
|
+
subject(:collections) { Collection.list }
|
9
|
+
|
10
|
+
it 'returns all collections for current user' do
|
11
|
+
expect(collections).to_not be_nil
|
12
|
+
expect(collections).to be_kind_of Array
|
13
|
+
expect(collections).to be_kind_of Collections
|
14
|
+
expect(collections[0]).to be_kind_of Collection
|
15
|
+
expect(collections.raw_data).to be_kind_of Hash
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Configuration do
|
4
|
+
subject { Configuration.new }
|
5
|
+
|
6
|
+
it 'should return api_url when set' do
|
7
|
+
subject.api_url = 'https://api.shutterstock.com/newurl'
|
8
|
+
expect(subject.api_url).to eql('https://api.shutterstock.com/newurl')
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Driver do
|
4
|
+
describe "#json_true?" do
|
5
|
+
it "returns true for any truthy json value" do
|
6
|
+
Driver::TRUTHY_JSON_VALUES.each do |value|
|
7
|
+
expect(subject.json_true?(value)).to be true
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
it "returns false for null" do
|
12
|
+
expect(subject.json_true?(nil)).to be false
|
13
|
+
end
|
14
|
+
|
15
|
+
it "return false for non-truthy values" do
|
16
|
+
expect(subject.json_true?("FALSE")).to be false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ImageAssets do
|
4
|
+
before do
|
5
|
+
client
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:id) { 402_160_099 }
|
9
|
+
subject(:assets) { Image.find(id).assets }
|
10
|
+
|
11
|
+
describe "find" do
|
12
|
+
it 'places image data into correct fields' do
|
13
|
+
# Test variables from this specific API call.
|
14
|
+
# Might break if vcr recording is deleted. If so, use new values
|
15
|
+
|
16
|
+
expect(assets.small_jpg).to be_a ImageSizeDetails
|
17
|
+
expect(assets.small_jpg.height).to eq 375
|
18
|
+
expect(assets.medium_jpg).to be_a ImageSizeDetails
|
19
|
+
expect(assets.huge_jpg).to be_a ImageSizeDetails
|
20
|
+
expect(assets.supersize_jpg).to be_a ImageSizeDetails
|
21
|
+
expect(assets.huge_tiff).to be_a ImageSizeDetails
|
22
|
+
expect(assets.supersize_tiff).to be_a ImageSizeDetails
|
23
|
+
expect(assets.vector_eps).to be nil
|
24
|
+
expect(assets.small_thumb).to be_a Thumbnail
|
25
|
+
expect(assets.large_thumb).to be_a Thumbnail
|
26
|
+
expect(assets.preview).to be_a Thumbnail
|
27
|
+
expect(assets.preview_1000).to be nil
|
28
|
+
expect(assets.preview_1500).to be nil
|
29
|
+
|
30
|
+
expect(assets.count).to be 9
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'calculates fields correctly' do
|
35
|
+
|
36
|
+
# Test variables from this specific API call.
|
37
|
+
# Might break if vcr recording is deleted. If so, use new values
|
38
|
+
|
39
|
+
expect(assets.small).to eq assets.small_jpg
|
40
|
+
expect(assets.medium).to eq assets.medium_jpg
|
41
|
+
expect(assets.huge).to eq assets.huge_jpg
|
42
|
+
expect(assets.supersize).to eq assets.supersize_jpg
|
43
|
+
|
44
|
+
expect(assets.largest_jpg).to eq assets.supersize
|
45
|
+
expect(assets.largest_tiff).to eq assets.supersize_tiff
|
46
|
+
expect(assets.largest_preview).to eq assets.preview
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ImageSizeDetails do
|
4
|
+
# before do
|
5
|
+
# client
|
6
|
+
# end
|
7
|
+
|
8
|
+
context 'initialize' do
|
9
|
+
it 'initializes params correctly' do
|
10
|
+
isd = ImageSizeDetails.new({"display_name" => "Huge","dpi" => 300,"file_size" => 1103872,"format" => "jpg","height" => 5000,"is_licensable" => false,"width" => 5000})
|
11
|
+
|
12
|
+
expect(isd.name).to eq "Huge"
|
13
|
+
expect(isd.display_name).to eq "Huge"
|
14
|
+
expect(isd.dpi).to eq 300
|
15
|
+
expect(isd.file_size).to eq 1103872
|
16
|
+
expect(isd.format).to eq "jpg"
|
17
|
+
expect(isd.height).to eq 5000
|
18
|
+
expect(isd.is_licensable).to eq false
|
19
|
+
expect(isd.licensable?).to eq false
|
20
|
+
expect(isd.width).to eq 5000
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'initializes correctly when some params missing' do
|
24
|
+
isd = ImageSizeDetails.new({"display_name" => "Huge","file_size" => 1103872,"format" => "jpg","is_licensable" => false})
|
25
|
+
|
26
|
+
expect(isd.display_name).to eq "Huge"
|
27
|
+
expect(isd.dpi).to be nil
|
28
|
+
expect(isd.height).to be nil
|
29
|
+
expect(isd.width).to be nil
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Image do
|
4
|
+
before do
|
5
|
+
client
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:id) { 118_139_110 }
|
9
|
+
subject(:image) { Image.find(id) }
|
10
|
+
|
11
|
+
describe "find" do
|
12
|
+
it 'returns an Image object' do
|
13
|
+
expect(Image).to respond_to(:find)
|
14
|
+
expect(image).to_not be_nil
|
15
|
+
|
16
|
+
expect(image.id).to eql id
|
17
|
+
expect(image.assets).to be_a ImageAssets
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'places image data into correct fields' do
|
21
|
+
# Test variables from this specific API call.
|
22
|
+
# Might break if vcr recording is deleted. If so, use new values
|
23
|
+
expect(image.added).to eq DateTime.parse("2012-11-09T00:00:00+00:00")
|
24
|
+
expect(image.adult?).to eq false
|
25
|
+
expect(image.aspect).to eq 1.5
|
26
|
+
expect(image.assets.count).to eq 9
|
27
|
+
expect(image.assets.preview).to be_a Thumbnail
|
28
|
+
expect(image.assets.small).to be_a ImageSizeDetails
|
29
|
+
expect(image.assets.preview.url).to match /118139110/
|
30
|
+
expect(image.categories).to be_a Categories
|
31
|
+
expect(image.categories[0]).to be_a Category
|
32
|
+
expect(image.categories[0].id).to eq 1
|
33
|
+
expect(image.contributor).to be_a Contributor
|
34
|
+
expect(image.contributor.id).to eq 1306729
|
35
|
+
expect(image.description).to eq "Adorable Labrador Puppy Playing with a Chew Toy on White Backdrop"
|
36
|
+
expect(image.editorial?).to eq false
|
37
|
+
expect(image.illustration?).to eq false
|
38
|
+
expect(image.image_type).to eq "photo"
|
39
|
+
expect(image.keywords).to be_a Array
|
40
|
+
expect(image.keywords.count).to eq 20
|
41
|
+
expect(image.media_type).to eq "image"
|
42
|
+
expect(image.model_release?).to eq false
|
43
|
+
expect(image.model_releases).to eq nil
|
44
|
+
expect(image.models).to eq nil
|
45
|
+
expect(image.property_release?).to eq false
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'places more image data into correct fields' do
|
49
|
+
# Tests model releases
|
50
|
+
# Might break if vcr recording is deleted. If so, use new values
|
51
|
+
another = Image.find(356308322)
|
52
|
+
expect(another.model_release?).to eq true
|
53
|
+
expect(another.model_releases).to eq nil
|
54
|
+
expect(another.models).to be_a Models
|
55
|
+
expect(another.models[0]).to be_a Model
|
56
|
+
expect(another.models[0].id).to eq 17856134
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "similar" do
|
62
|
+
it 'returns similar images' do
|
63
|
+
result = Image.similar(id)
|
64
|
+
expect(result).to_not be_nil
|
65
|
+
expect(result).to be_kind_of Array
|
66
|
+
expect(result).to be_kind_of Images
|
67
|
+
expect(result[0]).to be_kind_of Image
|
68
|
+
expect(result.raw_data).to be_kind_of Hash
|
69
|
+
expect(result.page).to be 1
|
70
|
+
expect(result.total_count).to eq 200
|
71
|
+
expect(result.search_id).to_not be_nil
|
72
|
+
|
73
|
+
# ["count", "page", "sort_method", "search_id", "data"]
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'finds similar images, given an image' do
|
77
|
+
expect(image.similar).to be_kind_of Images
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "search" do
|
82
|
+
it 'searches for images based on searchterm' do
|
83
|
+
results = Image.search('purple cat')
|
84
|
+
expect(results).to be_kind_of Images
|
85
|
+
expect(results.size).to be > 1
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'searches using more than one parameter' do
|
89
|
+
results = Image.search({query: 'laughing', people_age: 'teenagers', sort: 'popular'})
|
90
|
+
expect(results).to be_kind_of Images
|
91
|
+
expect(results.size).to be > 1
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "fill" do
|
96
|
+
it 'fills all details of current image' do
|
97
|
+
unfilled = Image.new("id" => 118_139_110)
|
98
|
+
unfilled.fill
|
99
|
+
expect(unfilled.description).to eq subject.description
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|