Merge pull request #9110 from georgethoppil/update-subscription-deleted-product

Return if variant is deleted
This commit is contained in:
Filipe
2022-04-28 15:54:51 +01:00
committed by GitHub
3 changed files with 46 additions and 10 deletions

View File

@@ -103,7 +103,11 @@ module OrderManagement
end
def requested_variants_available?
subscription_line_items.each { |sli| verify_availability_of(sli.variant) }
persisting_line_items.each { |sli| verify_availability_of(sli.variant) }
end
def persisting_line_items
subscription_line_items.reject(&:marked_for_destruction?)
end
def verify_availability_of(variant)

View File

@@ -507,15 +507,25 @@ module OrderManagement
end
context "when subscription line items exist" do
let(:variant1) { instance_double(Spree::Variant, id: 1) }
let(:variant1) { instance_double(Spree::Variant, id: 1, deleted_at: nil) }
let(:variant2) { instance_double(Spree::Variant, id: 2) }
let(:variant3) { instance_double(Spree::Variant, id: 1, deleted_at: Time.zone.now ) }
let(:subscription_line_item1) {
instance_double(SubscriptionLineItem, variant: variant1)
instance_double(SubscriptionLineItem,
variant: variant1,
marked_for_destruction?: false)
}
let(:subscription_line_item2) {
instance_double(SubscriptionLineItem, variant: variant2)
instance_double(SubscriptionLineItem,
variant: variant2,
marked_for_destruction?: false)
}
let(:subscription_line_items) { [subscription_line_item1] }
let(:subscription_line_item3) {
instance_double(SubscriptionLineItem,
variant: variant3,
marked_for_destruction?: true)
}
let(:subscription_line_items) { [subscription_line_item1, subscription_line_item3] }
context "but some variants are unavailable" do
let(:product) { instance_double(Spree::Product, name: "some_name") }

View File

@@ -513,7 +513,9 @@ describe 'Subscriptions' do
let!(:customer) { create(:customer, enterprise: shop) }
let!(:credit_card) { create(:stored_credit_card, user: customer.user) }
let!(:shop_product) { create(:product, supplier: shop) }
let!(:shop_product2) { create(:product, supplier: shop) }
let!(:shop_variant) { create(:variant, product: shop_product, unit_value: "2000") }
let!(:shop_variant2) { create(:variant, product: shop_product2, unit_value: "1000") }
let!(:permitted_supplier) do
create(:supplier_enterprise).tap do |supplier|
create(:enterprise_relationship, child: shop, parent: supplier,
@@ -562,13 +564,14 @@ describe 'Subscriptions' do
# Add products
expect(page).to have_content "NAME OR SKU"
add_variant_to_subscription shop_variant, 3
expect_not_in_open_or_upcoming_order_cycle_warning 1
add_variant_to_subscription permitted_supplier_variant, 4
add_variant_to_subscription shop_variant2, 1
expect_not_in_open_or_upcoming_order_cycle_warning 2
add_variant_to_subscription permitted_supplier_variant, 4
expect_not_in_open_or_upcoming_order_cycle_warning 3
add_variant_to_subscription incoming_exchange_variant, 5
expect_not_in_open_or_upcoming_order_cycle_warning 3
expect_not_in_open_or_upcoming_order_cycle_warning 4
add_variant_to_subscription outgoing_exchange_variant, 6
expect_not_in_open_or_upcoming_order_cycle_warning 3
expect_not_in_open_or_upcoming_order_cycle_warning 4
click_button "Next"
# Submit form
@@ -579,7 +582,7 @@ describe 'Subscriptions' do
# Subscription line items are created
subscription = Subscription.last
expect(subscription.subscription_line_items.count).to eq 4
expect(subscription.subscription_line_items.count).to eq 5
# Edit the subscription
visit edit_admin_subscription_path(subscription)
@@ -597,6 +600,25 @@ describe 'Subscriptions' do
# Subscription is saved
visit edit_admin_subscription_path(subscription)
expect(page).to have_selector "#subscription-line-items .item", count: 4
# Delete an existing product
login_as_admin_and_visit spree.admin_products_path
within "#p_#{shop_product2.id}" do
accept_alert { page.find("[data-powertip=Remove]").click }
end
visit edit_admin_subscription_path(subscription)
# Remove deleted shop_variant from the subscription
click_button "edit-products"
within "#sli_0" do
expect(page).to have_selector ".description", text: shop_variant2.name
find("a.delete-item").click
end
click_button "Save Changes"
expect(page).to have_current_path admin_subscriptions_path
visit edit_admin_subscription_path(subscription)
expect(page).to have_selector "#subscription-line-items .item", count: 3
end
end