From 676d949972d07180f85fedede8948b47ddd6bf46 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Tue, 10 Mar 2020 12:33:33 +0000 Subject: [PATCH] Make variants collection show deleted again by bypassing the default scope that removed deleted variants --- .../spree/admin/variants_controller.rb | 2 +- .../spree/admin/variants_controller_spec.rb | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/controllers/spree/admin/variants_controller.rb b/app/controllers/spree/admin/variants_controller.rb index 0045ef591c..2e95fc0a9b 100644 --- a/app/controllers/spree/admin/variants_controller.rb +++ b/app/controllers/spree/admin/variants_controller.rb @@ -59,7 +59,7 @@ module Spree @collection ||= if @deleted.blank? super else - Variant.where(product_id: parent.id).deleted + Variant.unscoped.where(product_id: parent.id).deleted end @collection end diff --git a/spec/controllers/spree/admin/variants_controller_spec.rb b/spec/controllers/spree/admin/variants_controller_spec.rb index d88eaf12a4..7163f6f423 100644 --- a/spec/controllers/spree/admin/variants_controller_spec.rb +++ b/spec/controllers/spree/admin/variants_controller_spec.rb @@ -5,7 +5,28 @@ module Spree describe VariantsController, type: :controller do before { login_as_admin } - describe "search action" do + describe "#index" do + describe "deleted variants" do + let(:product) { create(:product, name: 'Product A') } + let(:deleted_variant) do + deleted_variant = product.variants.create(unit_value: "2") + deleted_variant.delete + deleted_variant + end + + it "lists only non-deleted variants with params[:deleted] == off" do + spree_get :index, product_id: product.permalink, deleted: "off" + expect(assigns(:variants)).to eq(product.variants) + end + + it "lists only deleted variants with params[:deleted] == on" do + spree_get :index, product_id: product.permalink, deleted: "on" + expect(assigns(:variants)).to eq([deleted_variant]) + end + end + end + + describe "#search" do let!(:p1) { create(:simple_product, name: 'Product 1') } let!(:p2) { create(:simple_product, name: 'Product 2') } let!(:v1) { p1.variants.first }