diff --git a/test/fixtures/files/dan-gold@2x.jpeg b/test/fixtures/files/dan-gold@2x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..fa7d780d32b9b1fe005c1c8b5095c73b5e7b8f16 Binary files /dev/null and b/test/fixtures/files/dan-gold@2x.jpeg differ diff --git a/test/fixtures/files/dan-gold_1000x500_crop_left.jpeg b/test/fixtures/files/dan-gold_1000x500_crop_left.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f4a61171a60daed86d1e30ad8cfab794972d1b73 Binary files /dev/null and b/test/fixtures/files/dan-gold_1000x500_crop_left.jpeg differ diff --git a/test/fixtures/files/dan-gold_200x300_crop_top.jpeg b/test/fixtures/files/dan-gold_200x300_crop_top.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7c88f0b7c3efb649d9c21bc5983f5fe999571877 Binary files /dev/null and b/test/fixtures/files/dan-gold_200x300_crop_top.jpeg differ diff --git a/test/fixtures/files/dan-gold_250x250@3x.jpeg b/test/fixtures/files/dan-gold_250x250@3x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ecc69a63b3d8e104ab12b87e560301ed0f177f1b Binary files /dev/null and b/test/fixtures/files/dan-gold_250x250@3x.jpeg differ diff --git a/test/fixtures/files/dan-gold_250x250_crop_left@2x.jpeg b/test/fixtures/files/dan-gold_250x250_crop_left@2x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..333f56f1e55a10803a34c3f5a7212fcc8ce59dc7 Binary files /dev/null and b/test/fixtures/files/dan-gold_250x250_crop_left@2x.jpeg differ diff --git a/test/fixtures/files/dan-gold_300x200_crop_right@2x.jpeg b/test/fixtures/files/dan-gold_300x200_crop_right@2x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..913a88e31bee7ab83a4015c905a6c479a41a6f47 Binary files /dev/null and b/test/fixtures/files/dan-gold_300x200_crop_right@2x.jpeg differ diff --git a/test/fixtures/files/dan-gold_500x.jpeg b/test/fixtures/files/dan-gold_500x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f76faa7f34bce93604f1214aa829cb0c859877d8 Binary files /dev/null and b/test/fixtures/files/dan-gold_500x.jpeg differ diff --git a/test/fixtures/files/dan-gold_500x500.jpeg b/test/fixtures/files/dan-gold_500x500.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f76faa7f34bce93604f1214aa829cb0c859877d8 Binary files /dev/null and b/test/fixtures/files/dan-gold_500x500.jpeg differ diff --git a/test/fixtures/files/dan-gold_500x500@2x.jpeg b/test/fixtures/files/dan-gold_500x500@2x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..cd36765b3ca370b2308f01a665fa47b87022a87e Binary files /dev/null and b/test/fixtures/files/dan-gold_500x500@2x.jpeg differ diff --git a/test/fixtures/files/dan-gold_500x500_crop_left.jpeg b/test/fixtures/files/dan-gold_500x500_crop_left.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..333f56f1e55a10803a34c3f5a7212fcc8ce59dc7 Binary files /dev/null and b/test/fixtures/files/dan-gold_500x500_crop_left.jpeg differ diff --git a/test/fixtures/files/dan-gold_crop_left.jpeg b/test/fixtures/files/dan-gold_crop_left.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..fa7d780d32b9b1fe005c1c8b5095c73b5e7b8f16 Binary files /dev/null and b/test/fixtures/files/dan-gold_crop_left.jpeg differ diff --git a/test/fixtures/files/dan-gold_crop_left@2x.jpeg b/test/fixtures/files/dan-gold_crop_left@2x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..fa7d780d32b9b1fe005c1c8b5095c73b5e7b8f16 Binary files /dev/null and b/test/fixtures/files/dan-gold_crop_left@2x.jpeg differ diff --git a/test/fixtures/files/dan-gold_x500.jpeg b/test/fixtures/files/dan-gold_x500.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f14613500c3afad6097982cd8b5d8d15fe3a1bf3 Binary files /dev/null and b/test/fixtures/files/dan-gold_x500.jpeg differ diff --git a/test/models/variant_service_test.rb b/test/models/variant_service_test.rb index 378d957b58ca3d38ec0e0ba3d0e50b8287e1bbf1..c3054492f0f55cb2f058d4b76a54bfd0b58120d7 100644 --- a/test/models/variant_service_test.rb +++ b/test/models/variant_service_test.rb @@ -143,106 +143,212 @@ class VariantServiceTest < ActiveSupport::TestCase # Transformations tests - # test "transformations for dan-gold.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = {} - # variant_service = VariantService.compute(blob, 'dan-gold', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold.webp" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = { format: 'webp' } - # variant_service = VariantService.compute(blob, 'dan-gold', 'webp') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold_500x500.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = { resize_to_limit: [500, 500] } - # variant_service = VariantService.compute(blob, 'dan-gold_500x500', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold_500x.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = { resize_to_limit: [500, nil] } - # variant_service = VariantService.compute(blob, 'dan-gold_500x', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold_x500.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = { resize_to_limit: [nil, 836] } - # variant_service = VariantService.compute(blob, 'dan-gold_x500', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold_500x500_crop_left.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = { - # resize_to_fill: [500, 836, { gravity: 'West' }], - # crop: '500x836+0+0' - # } - # variant_service = VariantService.compute(blob, 'dan-gold_500x500_crop_left', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold_500x500_crop_left@2x.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = { - # resize_to_fill: [2000, 836, { gravity: 'West' }], - # crop: '2000x2000+0+0' - # } - # variant_service = VariantService.compute(blob, 'dan-gold_500x500_crop_left@2x', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold_crop_left.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = {} - # variant_service = VariantService.compute(blob, 'dan-gold_crop_left', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold@2x.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = {} - # variant_service = VariantService.compute(blob, 'dan-gold@2x', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end - # - # test "transformations for dan-gold_crop_left@2x.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # expected_transformations = {} - # variant_service = VariantService.compute(blob, 'dan-gold_crop_left@2x', 'jpeg') - # assert_equal expected_transformations, variant_service.transformations - # end + test "transformations for dan-gold.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = {} + variant_service = VariantService.compute(blob, 'dan-gold', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold.webp" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { format: 'webp' } + variant_service = VariantService.compute(blob, 'dan-gold', 'webp') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_500x500.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { resize_to_limit: [500, 500] } + variant_service = VariantService.compute(blob, 'dan-gold_500x500', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_500x.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { resize_to_limit: [500, nil] } + variant_service = VariantService.compute(blob, 'dan-gold_500x', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_x500.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { resize_to_limit: [nil, 500] } + variant_service = VariantService.compute(blob, 'dan-gold_x500', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_crop_left.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = {} + variant_service = VariantService.compute(blob, 'dan-gold_crop_left', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold@2x.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = {} + variant_service = VariantService.compute(blob, 'dan-gold@2x', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_500x500_crop_left.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { + resize_to_fill: [500, 500, { gravity: 'West' }], + crop: '500x500+0+0' + } + variant_service = VariantService.compute(blob, 'dan-gold_500x500_crop_left', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_500x500@2x.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { resize_to_limit: [1000, 1000] } + variant_service = VariantService.compute(blob, 'dan-gold_500x500@2x', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_250x250@3x.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { resize_to_limit: [750, 750] } + variant_service = VariantService.compute(blob, 'dan-gold_250x250@3x', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_crop_left@2x.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = {} + variant_service = VariantService.compute(blob, 'dan-gold_crop_left@2x', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_250x250_crop_left@2x.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { + resize_to_fill: [500, 500, { gravity: 'West' }], + crop: '500x500+0+0' + } + variant_service = VariantService.compute(blob, 'dan-gold_250x250_crop_left@2x', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_200x300_crop_top.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { + resize_to_fill: [200, 300, { gravity: 'North' }], + crop: '200x300+0+0' + } + variant_service = VariantService.compute(blob, 'dan-gold_200x300_crop_top', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_300x200_crop_right@2x.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { + resize_to_fill: [600, 400, { gravity: 'East' }], + crop: '600x400+0+0' + } + variant_service = VariantService.compute(blob, 'dan-gold_300x200_crop_right@2x', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end + + test "transformations for dan-gold_1000x500_crop_left.jpeg" do + blob = create_file_blob(filename: "dan-gold.jpeg") + expected_transformations = { + resize_to_fill: [1000, 500, { gravity: 'West' }], + crop: '1000x500+0+0' + } + variant_service = VariantService.compute(blob, 'dan-gold_1000x500_crop_left', 'jpeg') + assert_equal expected_transformations, variant_service.transformations + end # Variants tests test "variant for dan-gold.webp" do expected_blob = create_file_blob(filename: "dan-gold.webp") + image = load_image_from_variant_name(expected_blob.filename.base, format: 'webp') + assert_equal "WEBP", image.type + assert_equal expected_blob.checksum, image_checksum(image) + end - blob = create_file_blob(filename: "dan-gold.jpeg") - variant_service = VariantService.compute(blob, 'dan-gold', 'webp') - variant = blob.variant(variant_service.transformations).processed - image = read_image(variant) + test "variant for dan-gold_500x500.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_500x500.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end - assert_equal "WEBP", image.type - assert_equal 1486, image.width - assert_equal 836, image.height + test "variant for dan-gold_500x.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_500x.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) assert_equal expected_blob.checksum, image_checksum(image) end - # test "variant for dan-gold_500x500.jpeg" do - # blob = create_file_blob(filename: "dan-gold.jpeg") - # variant_service = VariantService.compute(blob, 'dan-gold_500x500', 'jpeg') - # variant = blob.variant(variant_service.transformations).processed - # image = read_image(variant) - # assert_equal 500, image.width - # assert_equal 563, image.height - # end + test "variant for dan-gold_x500.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_x500.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_crop_left.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_crop_left.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold@2x.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold@2x.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_500x500_crop_left.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_500x500_crop_left.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_500x500@2x.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_500x500@2x.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_250x250@3x.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_250x250@3x.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_crop_left@2x.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_crop_left@2x.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_250x250_crop_left@2x.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_250x250_crop_left@2x.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_200x300_crop_top.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_200x300_crop_top.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_300x200_crop_right@2x.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_300x200_crop_right@2x.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end + + test "variant for dan-gold_1000x500_crop_left.jpeg" do + expected_blob = create_file_blob(filename: "dan-gold_1000x500_crop_left.jpeg") + image = load_image_from_variant_name(expected_blob.filename.base) + assert_equal expected_blob.checksum, image_checksum(image) + end private @@ -254,6 +360,14 @@ class VariantServiceTest < ActiveSupport::TestCase MiniMagick::Image.open blob_or_variant.service.send(:path_for, blob_or_variant.key) end + def load_image_from_variant_name(variant_name, format: 'jpeg') + blob = create_file_blob(filename: "dan-gold.jpeg") + variant_service = VariantService.compute(blob, variant_name, format) + transformations = variant_service.transformations + blob_or_variant = transformations.empty? ? blob : blob.variant(variant_service.transformations).processed + read_image(blob_or_variant) + end + def image_checksum(image) OpenSSL::Digest::MD5.base64digest(image.to_blob) end