Skip to content

Commit

Permalink
Merge pull request #1804 from bbuchalter/fix_1803
Browse files Browse the repository at this point in the history
Fix Spree::Admin::VariantsController#index for deleted products
  • Loading branch information
tvdeyen authored Jun 7, 2017
2 parents 180d84d + f6308b6 commit 567fa49
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 13 deletions.
5 changes: 5 additions & 0 deletions backend/app/controllers/spree/admin/variants_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ def variant_includes
def redirect_on_empty_option_values
redirect_to admin_product_variants_url(params[:product_id]) if @product.empty_option_values?
end

def parent
@parent ||= Spree::Product.with_deleted.find_by(slug: params[:product_id])
@product = @parent
end
end
end
end
52 changes: 39 additions & 13 deletions backend/spec/controllers/spree/admin/variants_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,50 @@ module Admin

describe "#index" do
let(:product) { create(:product) }
let!(:variant_1) { create(:variant, product: product) }
let!(:variant_2) { create(:variant, product: product) }
let(:params) { { product_id: product.slug } }

before { variant_2.destroy }
subject { get :index, params: params }

context "deleted is not requested" do
it "does not assign deleted variants for a requested product" do
get :index, params: { product_id: product.slug }
expect(assigns(:collection)).to include variant_1
expect(assigns(:collection)).not_to include variant_2
context "the value of @parent" do
it "is the product" do
subject
expect(assigns(:parent)).to eq product
end

context "with a deleted product" do
before { product.destroy! }

it "is the product" do
subject
expect(assigns(:parent)).to eq product
end
end
end

context "deleted is requested" do
it "assigns deleted along with non-deleted variants for a requested product" do
get :index, params: { product_id: product.slug, deleted: "on" }
expect(assigns(:collection)).to include variant_1
expect(assigns(:collection)).to include variant_2
context "the value of @collection" do
let!(:variant) { create(:variant, product: product) }
let!(:deleted_variant) { create(:variant, product: product) }

context "with deleted variants" do
before { deleted_variant.destroy }

context "when deleted is not requested" do
it "excludes deleted variants" do
subject
expect(assigns(:collection)).to include variant
expect(assigns(:collection)).not_to include deleted_variant
end
end

context "when deleted is requested" do
let(:params) { { product_id: product.slug, deleted: "on" } }

it "includes deleted variants" do
subject
expect(assigns(:collection)).to include variant
expect(assigns(:collection)).to include deleted_variant
end
end
end
end
end
Expand Down

0 comments on commit 567fa49

Please sign in to comment.