require 'test_helper' module Workarea module Admin class VariantsIntegrationTest < Workarea::IntegrationTest include Admin::IntegrationTest setup :set_product def set_product @product = create_product(variants: []) end def test_can_create_a_variant post admin.catalog_product_variants_path(@product), params: { variant: { name: 'Test Asset', sku: 'SKU1234' }, new_details: %w(Color Red) } @product.reload assert_equal(@product.variants.length, 1) assert_equal(@product.variants.first.sku, 'SKU1234') assert_equal(@product.variants.first.name, 'Test Asset') assert_equal(@product.variants.first.details['Color'], ['Red']) end def test_can_update_a_variant variant = @product.variants.create!( name: 'Test', sku: 'SKU1234', details: { 'Color' => 'Red' } ) patch admin.catalog_product_variant_path(@product, variant), params: { variant: { name: 'New Name', sku: 'SKU5678' }, details: %w(Color Blue), new_details: %w(Size Large) } @product.reload assert_equal(@product.variants.length, 1) assert_equal(@product.variants.first.sku, 'SKU5678') assert_equal(@product.variants.first.name, 'New Name') assert_equal(@product.variants.first.details['Color'], ['Blue']) assert_equal(@product.variants.first.details['Size'], ['Large']) end def test_can_destroy_an_asset variant = @product.variants.create!(sku: 'SKU1234') delete admin.catalog_product_variant_path(@product, variant) @product.reload assert(@product.variants.empty?) end def test_moving variant_one = @product.variants.create!(sku: '1') variant_two = @product.variants.create!(sku: '2') variant_three = @product.variants.create!(sku: '3') post admin.move_catalog_product_variants_path(@product), params: { positions: { variant_three.id => 0, variant_two.id => 1, variant_one.id => 2 } } assert_equal(0, variant_three.reload.position) assert_equal(1, variant_two.reload.position) assert_equal(2, variant_one.reload.position) end end end end