diff --git a/app/controllers/admin/variant_overrides_controller.rb b/app/controllers/admin/variant_overrides_controller.rb index f7145e84c7..a989d2e72b 100644 --- a/app/controllers/admin/variant_overrides_controller.rb +++ b/app/controllers/admin/variant_overrides_controller.rb @@ -77,6 +77,7 @@ module Admin def collection @variant_overrides = VariantOverride.for_hubs(params[:hub_id] || @hubs) + @variant_overrides.select { |vo| vo.variant.present? } end def collection_actions diff --git a/spec/controllers/admin/variant_overrides_controller_spec.rb b/spec/controllers/admin/variant_overrides_controller_spec.rb index 3bd2632979..b62da38678 100644 --- a/spec/controllers/admin/variant_overrides_controller_spec.rb +++ b/spec/controllers/admin/variant_overrides_controller_spec.rb @@ -68,6 +68,21 @@ describe Admin::VariantOverridesController, type: :controller do expect(VariantOverride.find_by_id(variant_override.id)).to be_nil end end + + context "and there is a variant override for a deleted variant" do + let(:deleted_variant) { create(:variant) } + let!(:variant_override_of_deleted_variant) { create(:variant_override, hub: hub, variant: deleted_variant) } + + it "allows to update other variant overrides" do + deleted_variant.update_attribute :deleted_at, Time.zone.now + + spree_put :bulk_update, format: format, variant_overrides: variant_override_params + + expect(response).to_not redirect_to spree.unauthorized_path + variant_override.reload + expect(variant_override.price).to eq 123.45 + end + end end end end