From 239b6e75775517f0ca801d46f7a13014f6310a0a Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 00:43:49 -0500 Subject: [PATCH 01/10] Replace `create` with `build_stubbed` in variant override model specs --- spec/models/variant_override_spec.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/spec/models/variant_override_spec.rb b/spec/models/variant_override_spec.rb index c6620351a2..678ccdfee9 100644 --- a/spec/models/variant_override_spec.rb +++ b/spec/models/variant_override_spec.rb @@ -54,7 +54,7 @@ describe VariantOverride do let(:count_on_hand) { nil } it "is valid" do - expect(variant_override.save).to be_truthy + expect(variant_override).to be_valid end end @@ -77,7 +77,7 @@ describe VariantOverride do let(:count_on_hand) { nil } it "is valid" do - expect(variant_override.save).to be_truthy + expect(variant_override).to be_valid end end @@ -85,7 +85,7 @@ describe VariantOverride do let(:count_on_hand) { 1 } it "is invalid" do - expect(variant_override.save).to be_falsey + expect(variant_override).not_to be_valid error_message = I18n.t("on_demand_but_count_on_hand_set", scope: [i18n_scope_for_error, "count_on_hand"]) expect(variant_override.errors[:count_on_hand]).to eq([error_message]) @@ -100,7 +100,7 @@ describe VariantOverride do let(:count_on_hand) { nil } it "is invalid" do - expect(variant_override.save).to be_falsey + expect(variant_override).not_to be_valid error_message = I18n.t("limited_stock_but_no_count_on_hand", scope: [i18n_scope_for_error, "count_on_hand"]) expect(variant_override.errors[:count_on_hand]).to eq([error_message]) @@ -111,7 +111,7 @@ describe VariantOverride do let(:count_on_hand) { 1 } it "is valid" do - expect(variant_override.save).to be_truthy + expect(variant_override).to be_valid end end end @@ -139,7 +139,7 @@ describe VariantOverride do end describe "with price" do - let(:variant_override) { create(:variant_override, variant: variant, hub: hub, price: 12.34) } + let(:variant_override) { build_stubbed(:variant_override, variant: variant, hub: hub, price: 12.34) } it "returns the numeric price" do expect(variant_override.price).to eq(12.34) @@ -147,7 +147,7 @@ describe VariantOverride do end describe "with nil count on hand" do - let(:variant_override) { create(:variant_override, variant: variant, hub: hub, count_on_hand: nil, on_demand: true) } + let(:variant_override) { build_stubbed(:variant_override, variant: variant, hub: hub, count_on_hand: nil, on_demand: true) } describe "stock_overridden?" do it "returns false" do @@ -196,12 +196,12 @@ describe VariantOverride do describe "checking default stock value is present" do it "returns true when a default stock level has been set" do - vo = create(:variant_override, variant: variant, hub: hub, count_on_hand: 12, default_stock: 20) + vo = build_stubbed(:variant_override, variant: variant, hub: hub, count_on_hand: 12, default_stock: 20) expect(vo.default_stock?).to be true end it "returns false when the override has no default stock level" do - vo = create(:variant_override, variant: variant, hub: hub, count_on_hand: 12, default_stock: nil) + vo = build_stubbed(:variant_override, variant: variant, hub: hub, count_on_hand: 12, default_stock: nil) expect(vo.default_stock?).to be false end end From 289fd09e20de8f53b5ab8dce73d23435bbb823d0 Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 00:55:41 -0500 Subject: [PATCH 02/10] Remove unnecessary create call in tag rule model specs --- spec/models/tag_rule_spec.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spec/models/tag_rule_spec.rb b/spec/models/tag_rule_spec.rb index 06dac64194..995864ef9a 100644 --- a/spec/models/tag_rule_spec.rb +++ b/spec/models/tag_rule_spec.rb @@ -1,11 +1,9 @@ require 'spec_helper' describe TagRule, type: :model do - let!(:tag_rule) { create(:tag_rule) } - describe "validations" do it "requires a enterprise" do - expect(tag_rule).to validate_presence_of :enterprise + expect(subject).to validate_presence_of(:enterprise) end end end From 317618595c91e802913b20352fb4d17f108d5bcb Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 01:15:10 -0500 Subject: [PATCH 03/10] Replace `create` with `build_stubbed` in coordinator model specs --- .../services/order_management/stock/coordinator_spec.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb b/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb index c2ab44e5f7..ee93585dd6 100644 --- a/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb @@ -5,7 +5,12 @@ require 'spec_helper' module OrderManagement module Stock describe Coordinator do - let!(:order) { create(:order_with_line_items, distributor: create(:distributor_enterprise)) } + let!(:order) do + build_stubbed( + :order_with_line_items, + distributor: build_stubbed(:distributor_enterprise) + ) + end subject { Coordinator.new(order) } From f7a9cc63a7832dae8e76c241738c73977e86575a Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 20:37:32 -0500 Subject: [PATCH 04/10] Replace `create` with `build_stubbed` in shipping rate model specs --- spec/models/spree/shipping_rate_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/spree/shipping_rate_spec.rb b/spec/models/spree/shipping_rate_spec.rb index e7e9dce5e6..03871722fe 100644 --- a/spec/models/spree/shipping_rate_spec.rb +++ b/spec/models/spree/shipping_rate_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe Spree::ShippingRate do let(:shipment) { create(:shipment) } - let(:shipping_method) { create(:shipping_method) } + let(:shipping_method) { build_stubbed(:shipping_method) } let(:shipping_rate) { Spree::ShippingRate.new(shipment: shipment, shipping_method: shipping_method, From c098ba0ce364dbd84d91633e858379763673ee74 Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 20:46:35 -0500 Subject: [PATCH 05/10] Replace `create` with `build_stubbed` in calculator weight model specs --- spec/models/calculator/weight_spec.rb | 38 ++++++++++++++------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/spec/models/calculator/weight_spec.rb b/spec/models/calculator/weight_spec.rb index 311e09775e..c3ace02bf9 100644 --- a/spec/models/calculator/weight_spec.rb +++ b/spec/models/calculator/weight_spec.rb @@ -19,8 +19,8 @@ describe Calculator::Weight do end describe "line item with variant_unit weight and variant unit_value" do - let(:variant) { create(:variant, unit_value: 10_000) } - let(:line_item) { create(:line_item, variant: variant, quantity: 2) } + let(:variant) { build_stubbed(:variant, unit_value: 10_000) } + let(:line_item) { build_stubbed(:line_item, variant: variant, quantity: 2) } before { subject.set_preference(:per_kg, 5) } @@ -29,7 +29,9 @@ describe Calculator::Weight do end describe "and with final_weight_volume defined" do - before { line_item.update_attribute :final_weight_volume, '18000' } + before do + line_item.final_weight_volume = '18000' + end it "computes fee using final_weight_volume, not the variant weight" do expect(subject.compute(line_item)).to eq(90) # 18 * 5 @@ -37,8 +39,8 @@ describe Calculator::Weight do context "where variant unit is not weight" do it "uses both final_weight_volume and weight to calculate fee" do - line_item.variant.update_attribute :weight, 7 - line_item.variant.product.update_attribute :variant_unit, 'items' + line_item.variant.weight = 7 + line_item.variant.product.variant_unit = 'items' expect(subject.compute(line_item)).to eq(63) # 7 * (18000/10000) * 5 end end @@ -46,11 +48,11 @@ describe Calculator::Weight do end it "computes shipping cost for an object with an order" do - variant1 = create(:variant, unit_value: 10_000) - variant2 = create(:variant, unit_value: 20_000) + variant1 = build_stubbed(:variant, unit_value: 10_000) + variant2 = build_stubbed(:variant, unit_value: 20_000) - line_item1 = create(:line_item, variant: variant1, quantity: 1) - line_item2 = create(:line_item, variant: variant2, quantity: 2) + line_item1 = build_stubbed(:line_item, variant: variant1, quantity: 1) + line_item2 = build_stubbed(:line_item, variant: variant2, quantity: 2) order = double(:order, line_items: [line_item1, line_item2]) object_with_order = double(:object_with_order, order: order) @@ -60,12 +62,12 @@ describe Calculator::Weight do end context "when line item final_weight_volume is set" do - let!(:product) { create(:product, product_attributes) } - let!(:variant) { create(:variant, variant_attributes.merge(product: product)) } + let!(:product) { build_stubbed(:product, product_attributes) } + let!(:variant) { build_stubbed(:variant, variant_attributes.merge(product: product)) } let(:calculator) { described_class.new(preferred_per_kg: 6) } let(:line_item) do - create(:line_item, variant: variant, quantity: 2).tap do |object| + build_stubbed(:line_item, variant: variant, quantity: 2).tap do |object| object.send(:calculate_final_weight_volume) end end @@ -176,14 +178,14 @@ describe Calculator::Weight do context "when variant_unit is 'items'" do let(:product) { - create(:product, variant_unit: 'items', variant_unit_scale: nil, variant_unit_name: "bunch") + build_stubbed(:product, variant_unit: 'items', variant_unit_scale: nil, variant_unit_name: "bunch") } - let(:line_item) { create(:line_item, variant: variant, quantity: 1) } + let(:line_item) { build_stubbed(:line_item, variant: variant, quantity: 1) } before { subject.set_preference(:per_kg, 5) } context "when unit_value is zero variant.weight is present" do - let(:variant) { create(:variant, product: product, unit_value: 0, weight: 10.0) } + let(:variant) { build_stubbed(:variant, product: product, unit_value: 0, weight: 10.0) } it "uses the variant weight" do expect(subject.compute(line_item)).to eq 50.0 @@ -191,7 +193,7 @@ describe Calculator::Weight do end context "when unit_value is zero variant.weight is nil" do - let(:variant) { create(:variant, product: product, unit_value: 0, weight: nil) } + let(:variant) { build_stubbed(:variant, product: product, unit_value: 0, weight: nil) } it "uses zero weight" do expect(subject.compute(line_item)).to eq 0 @@ -200,7 +202,7 @@ describe Calculator::Weight do context "when unit_value is nil and variant.weight is present" do let(:variant) { - create(:variant, product: product, unit_description: "bunches", unit_value: nil, weight: 10.0) + build_stubbed(:variant, product: product, unit_description: "bunches", unit_value: nil, weight: 10.0) } it "uses the variant weight" do @@ -212,7 +214,7 @@ describe Calculator::Weight do context "when unit_value is nil and variant.weight is nil" do let(:variant) { - create(:variant, product: product, unit_description: "bunches", unit_value: nil, weight: nil) + build_stubbed(:variant, product: product, unit_description: "bunches", unit_value: nil, weight: nil) } it "uses zero weight" do From 231fbcd11a67ad370c5e49ed0bd4281d3b01c40c Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 21:04:12 -0500 Subject: [PATCH 06/10] Replace `build` with `build_stubbed` in flat percent item total specs --- spec/models/calculator/flat_percent_item_total_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/calculator/flat_percent_item_total_spec.rb b/spec/models/calculator/flat_percent_item_total_spec.rb index b0ee8f1aa0..37e6e41d1f 100644 --- a/spec/models/calculator/flat_percent_item_total_spec.rb +++ b/spec/models/calculator/flat_percent_item_total_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' describe Calculator::FlatPercentItemTotal do let(:calculator) { Calculator::FlatPercentItemTotal.new } - let(:line_item) { build(:line_item, price: 10, quantity: 1) } + let(:line_item) { build_stubbed(:line_item, price: 10, quantity: 1) } before { allow(calculator).to receive_messages preferred_flat_percent: 10 } From a257a9e9d2a042055dd5eab74ab877943330051f Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 21:11:49 -0500 Subject: [PATCH 07/10] Replace `build` with `build_stubbed` in calculator weight model specs --- spec/models/calculator/weight_spec.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/models/calculator/weight_spec.rb b/spec/models/calculator/weight_spec.rb index c3ace02bf9..2359b28e09 100644 --- a/spec/models/calculator/weight_spec.rb +++ b/spec/models/calculator/weight_spec.rb @@ -4,13 +4,13 @@ describe Calculator::Weight do it_behaves_like "a model using the LocalizedNumber module", [:preferred_per_kg] it "computes shipping cost for an order by total weight" do - variant1 = build(:variant, unit_value: 10_000) - variant2 = build(:variant, unit_value: 20_000) - variant3 = build(:variant, unit_value: nil) + variant1 = build_stubbed(:variant, unit_value: 10_000) + variant2 = build_stubbed(:variant, unit_value: 20_000) + variant3 = build_stubbed(:variant, unit_value: nil) - line_item1 = build(:line_item, variant: variant1, quantity: 1) - line_item2 = build(:line_item, variant: variant2, quantity: 3) - line_item3 = build(:line_item, variant: variant3, quantity: 5) + line_item1 = build_stubbed(:line_item, variant: variant1, quantity: 1) + line_item2 = build_stubbed(:line_item, variant: variant2, quantity: 3) + line_item3 = build_stubbed(:line_item, variant: variant3, quantity: 5) order = double(:order, line_items: [line_item1, line_item2, line_item3]) From 698d8b35faf63da5e1f7c75e75686aa99222c8bb Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 21:18:32 -0500 Subject: [PATCH 08/10] Replace `build` with `build_stubbed` in price sack model specs --- spec/models/calculator/price_sack_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/calculator/price_sack_spec.rb b/spec/models/calculator/price_sack_spec.rb index 83a6ae84fb..2f8cd8f22d 100644 --- a/spec/models/calculator/price_sack_spec.rb +++ b/spec/models/calculator/price_sack_spec.rb @@ -8,7 +8,7 @@ describe Calculator::PriceSack do calculator.preferred_discount_amount = 1 calculator end - let(:line_item) { build(:line_item, price: price, quantity: 2) } + let(:line_item) { build_stubbed(:line_item, price: price, quantity: 2) } context 'when the order amount is below preferred minimal' do let(:price) { 2 } From 38ab95a9a4fa8c42a525c1ec2f8cab1c58ecc0e2 Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 21:22:59 -0500 Subject: [PATCH 09/10] Replace `build` with `build_stubbed` in flexi rate model specs --- spec/models/calculator/flexi_rate_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/calculator/flexi_rate_spec.rb b/spec/models/calculator/flexi_rate_spec.rb index 9192aecdb5..8890a1847d 100644 --- a/spec/models/calculator/flexi_rate_spec.rb +++ b/spec/models/calculator/flexi_rate_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Calculator::FlexiRate do - let(:line_item) { build(:line_item, quantity: quantity) } + let(:line_item) { build_stubbed(:line_item, quantity: quantity) } let(:calculator) do Calculator::FlexiRate.new( preferred_first_item: 2, From bc77b8bcb2cdc663a8fb2d68ab0b4e03e8091e20 Mon Sep 17 00:00:00 2001 From: Arun Kumar Mohan Date: Mon, 21 Sep 2020 21:24:38 -0500 Subject: [PATCH 10/10] Replace `build` with `build_stubbed` in per item model specs --- spec/models/calculator/per_item_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/calculator/per_item_spec.rb b/spec/models/calculator/per_item_spec.rb index 7ce41251f4..279447edae 100644 --- a/spec/models/calculator/per_item_spec.rb +++ b/spec/models/calculator/per_item_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe Calculator::PerItem do let(:calculator) { Calculator::PerItem.new(preferred_amount: 10) } let(:shipping_calculable) { double(:calculable) } - let(:line_item) { build(:line_item, quantity: 5) } + let(:line_item) { build_stubbed(:line_item, quantity: 5) } it "correctly calculates on a single line item object" do allow(calculator).to receive_messages(calculable: shipping_calculable)