From ffe2a3076c4d99047e65ba698e0e4cc9dc5d434e Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 3 Mar 2022 22:52:23 +0000 Subject: [PATCH 1/8] Cleans up helper file and spec --- spec/support/split_checkout_helper.rb | 13 +++++++++---- spec/system/consumer/split_checkout_spec.rb | 11 ++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/spec/support/split_checkout_helper.rb b/spec/support/split_checkout_helper.rb index 24a80c50d6..bcaf1cec4c 100644 --- a/spec/support/split_checkout_helper.rb +++ b/spec/support/split_checkout_helper.rb @@ -9,10 +9,6 @@ module SplitCheckoutHelper click_button "Checkout as guest" end - def place_order - find("button", text: "Complete order").click - end - def fill_out_details fill_in "First Name", with: "Will" fill_in "Last Name", with: "Marshall" @@ -52,5 +48,14 @@ module SplitCheckoutHelper expect(page).to have_selector("div.checkout-tab.selected", text: "1 - Your details") expect(page).to have_content("2 - Payment method") expect(page).to have_content("3 - Order summary") + + def proceed_to_summary + click_on "Next - Order summary" + expect(page).to have_button("Complete order") + end + + def place_order + click_on "Complete order" + expect(page).to have_content "Back To Store" end end diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index be816b5ae3..e4cdcd9b1b 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -438,11 +438,9 @@ describe "As a consumer, I want to checkout my order", js: true do it "proceeds to the summary step and completes the order" do choose pay_method.to_s - click_on "Next - Order summary" - expect(page).to have_content "Shopping @ #{distributor.name}" + proceed_to_summary - click_on "Complete order" - expect(page).to have_content "Back To Store" + place_order expect(page).to have_content "Paying via: #{pay_method}" expect(order.reload.state).to eq "complete" end @@ -457,8 +455,7 @@ describe "As a consumer, I want to checkout my order", js: true do it "selects Stripe SCA and proceeds to the summary step" do choose pay_method.to_s fill_out_card_details - click_on "Next - Order summary" - expect(page).to have_content "Shopping @ #{distributor.name}" + proceed_to_summary end end end @@ -513,7 +510,7 @@ describe "As a consumer, I want to checkout my order", js: true do expect(page).to have_content "Shopping @ #{distributor.name}" - click_on "Complete order" + place_order expect(page).to have_content "Back To Store" expect(order.reload.state).to eq "complete" From 4877f96b4b7c785873045bde2d17225e728a54f0 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 4 Mar 2022 12:44:13 +0000 Subject: [PATCH 2/8] Adds coverage on default billing address checkbox --- spec/support/split_checkout_helper.rb | 1 + spec/system/consumer/split_checkout_spec.rb | 54 ++++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/spec/support/split_checkout_helper.rb b/spec/support/split_checkout_helper.rb index bcaf1cec4c..d624178b6c 100644 --- a/spec/support/split_checkout_helper.rb +++ b/spec/support/split_checkout_helper.rb @@ -48,6 +48,7 @@ module SplitCheckoutHelper expect(page).to have_selector("div.checkout-tab.selected", text: "1 - Your details") expect(page).to have_content("2 - Payment method") expect(page).to have_content("3 - Order summary") + end def proceed_to_summary click_on "Next - Order summary" diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index e4cdcd9b1b..01dac4247b 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -194,6 +194,7 @@ describe "As a consumer, I want to checkout my order", js: true do end context "details step" do + context "when form is submitted but invalid" do it "display the checkbox about shipping address same as billing address when selecting a shipping method that requires ship address" do choose free_shipping_with_required_address.name @@ -207,12 +208,63 @@ describe "As a consumer, I want to checkout my order", js: true do end end - describe "filling out delivery details" do + describe "filling out order details" do + before do fill_out_details fill_out_billing_address end + context "billing address" do + describe "checking the default address box" do + before do + order.update(user_id: user.id) + check "order_save_bill_address" + choose free_shipping.name + proceed_to_payment + end + + it "before saving has no default address" do + expect(user.bill_address).to be_nil + expect(order.bill_address).to be_nil + end + + context "as a first time customer" do + it "creates a new default bill address" do + expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" + expect(order.customer.bill_address.address1).to eq "Rue de la Vie, 77" + expect(user.reload.bill_address.address1).to eq "Rue de la Vie, 77" + end + end + end + + describe "unchecking the default address box" do + before do + order.update(user_id: user.id) + uncheck "order_save_bill_address" + choose free_shipping.name + end + + context "as an existing customer" do + let(:existing_address) { create(:address) } + + before do + user.bill_address = existing_address + user.ship_address = existing_address + proceed_to_payment + end + it "updates the bill address of the order and customer" do + pending("issue #8958") + # it should change the order address - OK + expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" + # it should not change the default address for customer and user - pending #8958 + expect(order.customer.bill_address.address1).to eq(existing_address.address1) + expect(user.reload.bill_address.address1).to eq(existing_address.address1) + end + end + end + end + describe "selecting a pick-up shipping method and submiting the form" do before do choose free_shipping.name From 6ba351f68f643ccef37496ad39a6607be34cd465 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 14 Mar 2022 12:47:11 +0000 Subject: [PATCH 3/8] Updates spec to consider bug fix #8958 --- spec/system/consumer/split_checkout_spec.rb | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index 01dac4247b..19a14e293c 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -194,7 +194,6 @@ describe "As a consumer, I want to checkout my order", js: true do end context "details step" do - context "when form is submitted but invalid" do it "display the checkbox about shipping address same as billing address when selecting a shipping method that requires ship address" do choose free_shipping_with_required_address.name @@ -209,16 +208,15 @@ describe "As a consumer, I want to checkout my order", js: true do end describe "filling out order details" do - before do fill_out_details fill_out_billing_address + order.update(user_id: user.id) end context "billing address" do describe "checking the default address box" do before do - order.update(user_id: user.id) check "order_save_bill_address" choose free_shipping.name proceed_to_payment @@ -240,7 +238,6 @@ describe "As a consumer, I want to checkout my order", js: true do describe "unchecking the default address box" do before do - order.update(user_id: user.id) uncheck "order_save_bill_address" choose free_shipping.name end @@ -254,12 +251,9 @@ describe "As a consumer, I want to checkout my order", js: true do proceed_to_payment end it "updates the bill address of the order and customer" do - pending("issue #8958") - # it should change the order address - OK expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" - # it should not change the default address for customer and user - pending #8958 - expect(order.customer.bill_address.address1).to eq(existing_address.address1) - expect(user.reload.bill_address.address1).to eq(existing_address.address1) + expect(order.customer.bill_address.address1).to eq "Rue de la Vie, 77" + expect(user.bill_address.address1).to eq(existing_address.address1) end end end From 13b7d8063273c28b4849acd867311b7cad552ca8 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 14 Mar 2022 13:14:11 +0000 Subject: [PATCH 4/8] Saves address for user --- spec/system/consumer/split_checkout_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index 19a14e293c..6922f1e72b 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -247,13 +247,13 @@ describe "As a consumer, I want to checkout my order", js: true do before do user.bill_address = existing_address - user.ship_address = existing_address + user.save proceed_to_payment end it "updates the bill address of the order and customer" do expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" expect(order.customer.bill_address.address1).to eq "Rue de la Vie, 77" - expect(user.bill_address.address1).to eq(existing_address.address1) + expect(user.reload.bill_address.address1).to eq(existing_address.address1) end end end From f09f6df181cc1ea3e79c70a51eb2ef3aa3978a3d Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 14 Mar 2022 13:49:32 +0000 Subject: [PATCH 5/8] Adds coverage on shipping address --- spec/system/consumer/split_checkout_spec.rb | 55 ++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index 6922f1e72b..94330104ff 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -219,7 +219,6 @@ describe "As a consumer, I want to checkout my order", js: true do before do check "order_save_bill_address" choose free_shipping.name - proceed_to_payment end it "before saving has no default address" do @@ -228,6 +227,9 @@ describe "As a consumer, I want to checkout my order", js: true do end context "as a first time customer" do + before do + proceed_to_payment + end it "creates a new default bill address" do expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" expect(order.customer.bill_address.address1).to eq "Rue de la Vie, 77" @@ -259,6 +261,57 @@ describe "As a consumer, I want to checkout my order", js: true do end end + context "shipping address" do + describe "checking the default address box" do + before do + choose free_shipping_with_required_address.name + uncheck "ship_address_same_as_billing" + fill_out_shipping_address + check "order_save_ship_address" + end + + it "before saving has no default address" do + expect(user.ship_address).to be_nil + expect(order.ship_address).to be_nil + end + + context "as a first time customer" do + before do + proceed_to_payment + end + it "creates a new default ship address" do + expect(order.reload.ship_address.address1).to eq "Rue de la Vie, 66" + expect(order.customer.ship_address.address1).to eq "Rue de la Vie, 66" + expect(user.reload.ship_address.address1).to eq "Rue de la Vie, 66" + end + end + end + + describe "unchecking the default address box" do + before do + choose free_shipping_with_required_address.name + uncheck "ship_address_same_as_billing" + fill_out_shipping_address + uncheck "order_save_ship_address" + end + + context "as an existing customer" do + let(:existing_address) { create(:address) } + + before do + user.ship_address = existing_address + user.save + proceed_to_payment + end + it "updates the ship address of the order and customer" do + expect(order.reload.ship_address.address1).to eq "Rue de la Vie, 66" + expect(order.customer.ship_address.address1).to eq "Rue de la Vie, 66" + expect(user.reload.ship_address.address1).to eq(existing_address.address1) + end + end + end + end + describe "selecting a pick-up shipping method and submiting the form" do before do choose free_shipping.name From ba5bdf688cb846a93f3d684f11f6e5fd74f965ff Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 15 Mar 2022 16:14:44 +0000 Subject: [PATCH 6/8] Removes new address assignment; uses change helper --- spec/system/consumer/split_checkout_spec.rb | 26 +++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index 94330104ff..00ca74972a 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -230,6 +230,7 @@ describe "As a consumer, I want to checkout my order", js: true do before do proceed_to_payment end + it "creates a new default bill address" do expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" expect(order.customer.bill_address.address1).to eq "Rue de la Vie, 77" @@ -245,17 +246,17 @@ describe "As a consumer, I want to checkout my order", js: true do end context "as an existing customer" do - let(:existing_address) { create(:address) } - before do - user.bill_address = existing_address - user.save - proceed_to_payment + expect { + proceed_to_payment + }.to_not change { + user.reload.bill_address + } end + it "updates the bill address of the order and customer" do expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" expect(order.customer.bill_address.address1).to eq "Rue de la Vie, 77" - expect(user.reload.bill_address.address1).to eq(existing_address.address1) end end end @@ -279,6 +280,7 @@ describe "As a consumer, I want to checkout my order", js: true do before do proceed_to_payment end + it "creates a new default ship address" do expect(order.reload.ship_address.address1).to eq "Rue de la Vie, 66" expect(order.customer.ship_address.address1).to eq "Rue de la Vie, 66" @@ -296,17 +298,17 @@ describe "As a consumer, I want to checkout my order", js: true do end context "as an existing customer" do - let(:existing_address) { create(:address) } - before do - user.ship_address = existing_address - user.save - proceed_to_payment + expect { + proceed_to_payment + }.to_not change { + user.reload.ship_address + } end + it "updates the ship address of the order and customer" do expect(order.reload.ship_address.address1).to eq "Rue de la Vie, 66" expect(order.customer.ship_address.address1).to eq "Rue de la Vie, 66" - expect(user.reload.ship_address.address1).to eq(existing_address.address1) end end end From 4bdce596485069c5f3a766749d808d66ab817d05 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 15 Mar 2022 16:23:06 +0000 Subject: [PATCH 7/8] Clarifies context --- spec/system/consumer/split_checkout_spec.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index 00ca74972a..cb04cf7f07 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -226,7 +226,7 @@ describe "As a consumer, I want to checkout my order", js: true do expect(order.bill_address).to be_nil end - context "as a first time customer" do + context "proceeding to payment" do before do proceed_to_payment end @@ -245,7 +245,7 @@ describe "As a consumer, I want to checkout my order", js: true do choose free_shipping.name end - context "as an existing customer" do + context "proceeding to payment" do before do expect { proceed_to_payment @@ -276,11 +276,11 @@ describe "As a consumer, I want to checkout my order", js: true do expect(order.ship_address).to be_nil end - context "as a first time customer" do + context "proceeding to payment" do before do proceed_to_payment end - + it "creates a new default ship address" do expect(order.reload.ship_address.address1).to eq "Rue de la Vie, 66" expect(order.customer.ship_address.address1).to eq "Rue de la Vie, 66" @@ -297,15 +297,15 @@ describe "As a consumer, I want to checkout my order", js: true do uncheck "order_save_ship_address" end - context "as an existing customer" do + context "proceeding to payment" do before do - expect { + expect { proceed_to_payment }.to_not change { - user.reload.ship_address - } + user.reload.ship_address + } end - + it "updates the ship address of the order and customer" do expect(order.reload.ship_address.address1).to eq "Rue de la Vie, 66" expect(order.customer.ship_address.address1).to eq "Rue de la Vie, 66" From 7bdf814d7dac8986dd540bcb22261841266ce929 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 16 Mar 2022 12:28:21 +0000 Subject: [PATCH 8/8] Uses change helper to remove before block; Adds a & - Safe Navigation Operator - to the customer object --- spec/system/consumer/split_checkout_spec.rb | 54 +++++++++++---------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index cb04cf7f07..0a5b589e47 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -221,21 +221,21 @@ describe "As a consumer, I want to checkout my order", js: true do choose free_shipping.name end - it "before saving has no default address" do - expect(user.bill_address).to be_nil - expect(order.bill_address).to be_nil - end - - context "proceeding to payment" do - before do + it "creates a new default bill address" do + expect { proceed_to_payment - end - - it "creates a new default bill address" do - expect(order.reload.bill_address.address1).to eq "Rue de la Vie, 77" - expect(order.customer.bill_address.address1).to eq "Rue de la Vie, 77" - expect(user.reload.bill_address.address1).to eq "Rue de la Vie, 77" - end + order.reload + user.reload + }.to change { + order.bill_address&.address1 + }.from(nil).to("Rue de la Vie, 77") + .and change { + order.customer&.bill_address&.address1 + }.from(nil).to("Rue de la Vie, 77") + .and change { + order.bill_address&.address1 + } + .from(nil).to("Rue de la Vie, 77") end end @@ -271,20 +271,22 @@ describe "As a consumer, I want to checkout my order", js: true do check "order_save_ship_address" end - it "before saving has no default address" do - expect(user.ship_address).to be_nil - expect(order.ship_address).to be_nil - end - context "proceeding to payment" do - before do - proceed_to_payment - end - it "creates a new default ship address" do - expect(order.reload.ship_address.address1).to eq "Rue de la Vie, 66" - expect(order.customer.ship_address.address1).to eq "Rue de la Vie, 66" - expect(user.reload.ship_address.address1).to eq "Rue de la Vie, 66" + expect { + proceed_to_payment + order.reload + user.reload + }.to change { + order.ship_address&.address1 + }.from(nil).to("Rue de la Vie, 66") + .and change { + order.customer&.ship_address&.address1 + }.from(nil).to("Rue de la Vie, 66") + .and change { + order.ship_address&.address1 + } + .from(nil).to("Rue de la Vie, 66") end end end