|
11 | 11 | TEST_TRANSFOMATION = "c_scale,w_#{TEST_WIDTH}"
|
12 | 12 | PUBLIC_ID_BACKUP_1 = "#{prefix}backup_1#{Time.now.to_i}"
|
13 | 13 | PUBLIC_ID_BACKUP_2 = "#{prefix}backup_2#{Time.now.to_i}"
|
| 14 | + METADATA_EXTERNAL_ID = "#{prefix}_metadata_external_id_#{UNIQUE_TEST_ID}" |
| 15 | + METADATA_DEFAULT_VALUE = "#{prefix}_metadata_default_value_#{UNIQUE_TEST_ID}" |
| 16 | + UNIQUE_CONTEXT_KEY = "#{prefix}_context_key_#{UNIQUE_TEST_ID}" |
| 17 | + UNIQUE_CONTEXT_VALUE = "#{prefix}_context_value_#{UNIQUE_TEST_ID}" |
| 18 | + UNIQUE_CONTEXT = "#{UNIQUE_CONTEXT_KEY}=#{UNIQUE_CONTEXT_VALUE}" |
| 19 | + UNIQUE_TEST_TAG_TO_ONE_IMAGE_ASSET = "#{prefix}_unique_tag_to_one_image_asset_#{UNIQUE_TEST_ID}" |
14 | 20 |
|
15 | 21 | test_id_1 = "#{prefix}_1"
|
16 | 22 | test_id_2 = "#{prefix}_2"
|
17 | 23 | test_id_3 = "#{prefix}_3"
|
18 | 24 | test_key = "test_key_#{SUFFIX}"
|
19 |
| - before(:all) do |
20 | 25 |
|
| 26 | + before(:all) do |
21 | 27 | @api = Cloudinary::Api
|
| 28 | + |
| 29 | + @api.add_metadata_field( |
| 30 | + :external_id => METADATA_EXTERNAL_ID, |
| 31 | + :label => METADATA_EXTERNAL_ID, |
| 32 | + :type => "string", |
| 33 | + :default_value => METADATA_DEFAULT_VALUE |
| 34 | + ) |
| 35 | + |
22 | 36 | Cloudinary::Uploader.upload(TEST_IMG, :public_id => test_id_1, :tags => [TEST_TAG, TIMESTAMP_TAG], :context => "key=value", :eager =>[:width =>TEST_WIDTH, :crop =>:scale])
|
23 | 37 | Cloudinary::Uploader.upload(TEST_IMG, :public_id => test_id_2, :tags => [TEST_TAG, TIMESTAMP_TAG], :context => "key=value", :eager =>[:width =>TEST_WIDTH, :crop =>:scale])
|
24 | 38 | Cloudinary::Uploader.upload(TEST_IMG, :public_id => test_id_3, :tags => [TEST_TAG, TIMESTAMP_TAG], :context => "key=value", :eager =>[:width =>TEST_WIDTH, :crop =>:scale])
|
25 | 39 | Cloudinary::Uploader.upload(TEST_IMG, :public_id => test_id_1, :tags => [TEST_TAG, TIMESTAMP_TAG], :context => "#{test_key}=test", :eager =>[:width =>TEST_WIDTH, :crop =>:scale])
|
26 | 40 | Cloudinary::Uploader.upload(TEST_IMG, :public_id => test_id_3, :tags => [TEST_TAG, TIMESTAMP_TAG], :context => "#{test_key}=tasty", :eager =>[:width =>TEST_WIDTH, :crop =>:scale])
|
| 41 | + Cloudinary::Uploader.upload(TEST_IMG, :tags => [UNIQUE_TEST_TAG_TO_ONE_IMAGE_ASSET, TEST_TAG, TIMESTAMP_TAG], :context => UNIQUE_CONTEXT, :moderation => :manual) |
27 | 42 | end
|
28 | 43 |
|
29 | 44 | after(:all) do
|
| 45 | + @api.delete_metadata_field(METADATA_EXTERNAL_ID) |
30 | 46 | # in addition to "cleanup" context
|
31 | 47 | unless Cloudinary.config.keep_test_products
|
32 | 48 | up = Cloudinary::Api.upload_presets max_results: 500
|
|
114 | 130 | @api.resources(:type=>"upload", :start_at=>start_at, :direction => "asc")
|
115 | 131 | end
|
116 | 132 |
|
| 133 | + describe "structured metadata" do |
| 134 | + matcher :have_metadata do |
| 135 | + match do |expected| |
| 136 | + expect(expected["resources"]).to be_present |
| 137 | + |
| 138 | + expected["resources"].each do |resource| |
| 139 | + expect(resource).to have_key("metadata") |
| 140 | + end |
| 141 | + end |
| 142 | + |
| 143 | + match_when_negated do |expected| |
| 144 | + expect(expected["resources"]).to be_present |
| 145 | + |
| 146 | + expected["resources"].each do |resource| |
| 147 | + expect(resource).to_not have_key("metadata") |
| 148 | + end |
| 149 | + end |
| 150 | + end |
| 151 | + |
| 152 | + it "should return structured metadata in the response of the resources API response" do |
| 153 | + result = @api.resources(:prefix => test_id_1, :type => "upload", :metadata => true) |
| 154 | + expect(result).to have_metadata |
| 155 | + |
| 156 | + result = @api.resources(:prefix => test_id_1, :type => "upload", :metadata => false) |
| 157 | + expect(result).to_not have_metadata |
| 158 | + end |
| 159 | + |
| 160 | + it "should return structured metadata in the response of the resources by tag API" do |
| 161 | + result = @api.resources_by_tag(UNIQUE_TEST_TAG_TO_ONE_IMAGE_ASSET, :metadata => true) |
| 162 | + expect(result).to have_metadata |
| 163 | + |
| 164 | + result = @api.resources_by_tag(UNIQUE_TEST_TAG_TO_ONE_IMAGE_ASSET, :metadata => false) |
| 165 | + expect(result).to_not have_metadata |
| 166 | + end |
| 167 | + |
| 168 | + it "should return structured metadata in the response of the resources by context API" do |
| 169 | + result = @api.resources_by_context(UNIQUE_CONTEXT_KEY, UNIQUE_CONTEXT_VALUE, :metadata => true) |
| 170 | + expect(result).to have_metadata |
| 171 | + |
| 172 | + result = @api.resources_by_context(UNIQUE_CONTEXT_KEY, UNIQUE_CONTEXT_VALUE, :metadata => false) |
| 173 | + expect(result).to_not have_metadata |
| 174 | + end |
| 175 | + |
| 176 | + it "should return structured metadata in the response of the resources by moderation API" do |
| 177 | + result = @api.resources_by_moderation(:manual, :pending, :metadata => true) |
| 178 | + expect(result).to have_metadata |
| 179 | + |
| 180 | + result = @api.resources_by_moderation(:manual, :pending, :metadata => false) |
| 181 | + expect(result).to_not have_metadata |
| 182 | + end |
| 183 | + end |
| 184 | + |
117 | 185 | describe ":direction" do
|
118 | 186 |
|
119 | 187 | it "should accept a string 'desc' and 'asc'" do
|
|
0 commit comments