diff --git a/lib/solidus_importer/processors/variant.rb b/lib/solidus_importer/processors/variant.rb index ab263ff1..8c9147a5 100644 --- a/lib/solidus_importer/processors/variant.rb +++ b/lib/solidus_importer/processors/variant.rb @@ -15,14 +15,14 @@ def call(context) private def prepare_variant + return product.master if master_variant? + @prepare_variant ||= Spree::Variant.find_or_initialize_by(sku: sku) do |variant| variant.product = product end end def process_variant - return product.master if master_variant? - prepare_variant.tap do |variant| # Apply the row attributes variant.weight = @data['Variant Weight'] unless @data['Variant Weight'].nil? diff --git a/spec/lib/solidus_importer/processors/variant_spec.rb b/spec/lib/solidus_importer/processors/variant_spec.rb index 87df43b8..03080971 100644 --- a/spec/lib/solidus_importer/processors/variant_spec.rb +++ b/spec/lib/solidus_importer/processors/variant_spec.rb @@ -23,7 +23,7 @@ { data: data, product: product } end let(:data) { build(:solidus_importer_row_variant, :with_import).data } - let(:product) { build_stubbed(:product, slug: data['Handle']) } + let(:product) { create(:product, slug: data['Handle']) } before do allow(product).to receive(:touch) @@ -38,6 +38,7 @@ it 'creates a new variant' do expect { described_method }.to change { Spree::Variant.count }.by(1) expect(described_method).to eq(result) + expect(result[:variant].weight).to eq 20.0 end end @@ -49,6 +50,7 @@ it 'updates master variant' do expect { described_method }.not_to(change { Spree::Variant.count }) expect(described_method).to eq(result) + expect(result[:variant].weight).to eq 20.0 end end @@ -60,6 +62,7 @@ it 'updates master variant' do expect { described_method }.not_to(change { Spree::Variant.count }) expect(described_method).to eq(result) + expect(result[:variant].weight).to eq 20.0 end end