mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-17 04:34:24 +00:00
Style Metrics/ModuleLength in spec file
This commit is contained in:
@@ -160,7 +160,6 @@ Metrics/ModuleLength:
|
||||
- 'app/helpers/spree/admin/orders_helper.rb'
|
||||
- 'app/models/spree/order/checkout.rb'
|
||||
- 'app/models/spree/payment/processing.rb'
|
||||
- 'engines/order_management/spec/services/order_management/stock/package_spec.rb'
|
||||
- 'engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb'
|
||||
- 'engines/order_management/spec/services/order_management/subscriptions/form_spec.rb'
|
||||
- 'engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb'
|
||||
|
||||
@@ -2,177 +2,173 @@
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
module OrderManagement
|
||||
module Stock
|
||||
RSpec.describe Package do
|
||||
context "base tests" do
|
||||
let(:variant) { build(:variant, weight: 25.0) }
|
||||
let(:distributor) { create(:enterprise) }
|
||||
let(:order) { build(:order, distributor:) }
|
||||
RSpec.describe OrderManagement::Stock::Package do
|
||||
context "base tests" do
|
||||
let(:variant) { build(:variant, weight: 25.0) }
|
||||
let(:distributor) { create(:enterprise) }
|
||||
let(:order) { build(:order, distributor:) }
|
||||
|
||||
subject { Package.new(order) }
|
||||
subject { described_class.new(order) }
|
||||
|
||||
it 'calculates the weight of all the contents' do
|
||||
subject.add variant, 4
|
||||
expect(subject.weight).to eq 100.0
|
||||
end
|
||||
it 'calculates the weight of all the contents' do
|
||||
subject.add variant, 4
|
||||
expect(subject.weight).to eq 100.0
|
||||
end
|
||||
|
||||
it 'filters by on_hand and backordered' do
|
||||
subject.add variant, 4, :on_hand
|
||||
subject.add variant, 3, :backordered
|
||||
expect(subject.on_hand.count).to eq 1
|
||||
expect(subject.backordered.count).to eq 1
|
||||
end
|
||||
it 'filters by on_hand and backordered' do
|
||||
subject.add variant, 4, :on_hand
|
||||
subject.add variant, 3, :backordered
|
||||
expect(subject.on_hand.count).to eq 1
|
||||
expect(subject.backordered.count).to eq 1
|
||||
end
|
||||
|
||||
it 'calculates the quantity by state' do
|
||||
subject.add variant, 4, :on_hand
|
||||
subject.add variant, 3, :backordered
|
||||
it 'calculates the quantity by state' do
|
||||
subject.add variant, 4, :on_hand
|
||||
subject.add variant, 3, :backordered
|
||||
|
||||
expect(subject.quantity).to eq 7
|
||||
expect(subject.quantity(:on_hand)).to eq 4
|
||||
expect(subject.quantity(:backordered)).to eq 3
|
||||
end
|
||||
expect(subject.quantity).to eq 7
|
||||
expect(subject.quantity(:on_hand)).to eq 4
|
||||
expect(subject.quantity(:backordered)).to eq 3
|
||||
end
|
||||
|
||||
it 'returns nil for content item not found' do
|
||||
item = subject.find_item(variant, :on_hand)
|
||||
expect(item).to be_nil
|
||||
end
|
||||
it 'returns nil for content item not found' do
|
||||
item = subject.find_item(variant, :on_hand)
|
||||
expect(item).to be_nil
|
||||
end
|
||||
|
||||
it 'finds content item for a variant' do
|
||||
subject.add variant, 4, :on_hand
|
||||
item = subject.find_item(variant, :on_hand)
|
||||
expect(item.quantity).to eq 4
|
||||
end
|
||||
it 'finds content item for a variant' do
|
||||
subject.add variant, 4, :on_hand
|
||||
item = subject.find_item(variant, :on_hand)
|
||||
expect(item.quantity).to eq 4
|
||||
end
|
||||
|
||||
it 'get flattened contents' do
|
||||
subject.add variant, 4, :on_hand
|
||||
subject.add variant, 2, :backordered
|
||||
flattened = subject.flattened
|
||||
expect(flattened.select { |i| i.state == :on_hand }.size).to eq 4
|
||||
expect(flattened.select { |i| i.state == :backordered }.size).to eq 2
|
||||
end
|
||||
it 'get flattened contents' do
|
||||
subject.add variant, 4, :on_hand
|
||||
subject.add variant, 2, :backordered
|
||||
flattened = subject.flattened
|
||||
expect(flattened.select { |i| i.state == :on_hand }.size).to eq 4
|
||||
expect(flattened.select { |i| i.state == :backordered }.size).to eq 2
|
||||
end
|
||||
|
||||
it 'set contents from flattened' do
|
||||
flattened = [Package::ContentItem.new(variant, 1, :on_hand),
|
||||
Package::ContentItem.new(variant, 1, :on_hand),
|
||||
Package::ContentItem.new(variant, 1, :backordered),
|
||||
Package::ContentItem.new(variant, 1, :backordered)]
|
||||
it 'set contents from flattened' do
|
||||
flattened = [described_class::ContentItem.new(variant, 1, :on_hand),
|
||||
described_class::ContentItem.new(variant, 1, :on_hand),
|
||||
described_class::ContentItem.new(variant, 1, :backordered),
|
||||
described_class::ContentItem.new(variant, 1, :backordered)]
|
||||
|
||||
subject.flattened = flattened
|
||||
expect(subject.on_hand.size).to eq 1
|
||||
expect(subject.on_hand.first.quantity).to eq 2
|
||||
subject.flattened = flattened
|
||||
expect(subject.on_hand.size).to eq 1
|
||||
expect(subject.on_hand.first.quantity).to eq 2
|
||||
|
||||
expect(subject.backordered.size).to eq 1
|
||||
end
|
||||
expect(subject.backordered.size).to eq 1
|
||||
end
|
||||
|
||||
# Contains regression test for #2804
|
||||
it 'builds a list of shipping methods from all categories' do
|
||||
shipping_method1 = create(:shipping_method, distributors: [distributor])
|
||||
shipping_method2 = create(:shipping_method, distributors: [distributor])
|
||||
variant1 = create(:variant,
|
||||
shipping_category: shipping_method1.shipping_categories.first)
|
||||
variant2 = create(:variant,
|
||||
shipping_category: shipping_method2.shipping_categories.first)
|
||||
variant3 = create(:variant, shipping_category: nil)
|
||||
contents = [Package::ContentItem.new(variant1, 1),
|
||||
Package::ContentItem.new(variant1, 1),
|
||||
Package::ContentItem.new(variant2, 1),
|
||||
Package::ContentItem.new(variant3, 1)]
|
||||
# Contains regression test for #2804
|
||||
it 'builds a list of shipping methods from all categories' do
|
||||
shipping_method1 = create(:shipping_method, distributors: [distributor])
|
||||
shipping_method2 = create(:shipping_method, distributors: [distributor])
|
||||
variant1 = create(:variant,
|
||||
shipping_category: shipping_method1.shipping_categories.first)
|
||||
variant2 = create(:variant,
|
||||
shipping_category: shipping_method2.shipping_categories.first)
|
||||
variant3 = create(:variant, shipping_category: nil)
|
||||
contents = [described_class::ContentItem.new(variant1, 1),
|
||||
described_class::ContentItem.new(variant1, 1),
|
||||
described_class::ContentItem.new(variant2, 1),
|
||||
described_class::ContentItem.new(variant3, 1)]
|
||||
|
||||
package = Package.new(order, contents)
|
||||
expect(package.shipping_methods.size).to eq 2
|
||||
end
|
||||
package = described_class.new(order, contents)
|
||||
expect(package.shipping_methods.size).to eq 2
|
||||
end
|
||||
|
||||
it "can convert to a shipment" do
|
||||
flattened = [Package::ContentItem.new(variant, 2, :on_hand),
|
||||
Package::ContentItem.new(variant, 1, :backordered)]
|
||||
subject.flattened = flattened
|
||||
it "can convert to a shipment" do
|
||||
flattened = [described_class::ContentItem.new(variant, 2, :on_hand),
|
||||
described_class::ContentItem.new(variant, 1, :backordered)]
|
||||
subject.flattened = flattened
|
||||
|
||||
shipping_method = build(:shipping_method)
|
||||
subject.shipping_rates = [
|
||||
Spree::ShippingRate.new(shipping_method:, cost: 10.00, selected: true)
|
||||
]
|
||||
shipping_method = build(:shipping_method)
|
||||
subject.shipping_rates = [
|
||||
Spree::ShippingRate.new(shipping_method:, cost: 10.00, selected: true)
|
||||
]
|
||||
|
||||
shipment = subject.to_shipment
|
||||
expect(shipment.order).to eq subject.order
|
||||
expect(shipment.inventory_units.size).to eq 3
|
||||
shipment = subject.to_shipment
|
||||
expect(shipment.order).to eq subject.order
|
||||
expect(shipment.inventory_units.size).to eq 3
|
||||
|
||||
first_unit = shipment.inventory_units.first
|
||||
expect(first_unit.variant).to eq variant
|
||||
expect(first_unit.state).to eq 'on_hand'
|
||||
expect(first_unit.order).to eq subject.order
|
||||
expect(first_unit).to be_pending
|
||||
first_unit = shipment.inventory_units.first
|
||||
expect(first_unit.variant).to eq variant
|
||||
expect(first_unit.state).to eq 'on_hand'
|
||||
expect(first_unit.order).to eq subject.order
|
||||
expect(first_unit).to be_pending
|
||||
|
||||
last_unit = shipment.inventory_units.last
|
||||
expect(last_unit.variant).to eq variant
|
||||
expect(last_unit.state).to eq 'backordered'
|
||||
expect(last_unit.order).to eq subject.order
|
||||
last_unit = shipment.inventory_units.last
|
||||
expect(last_unit.variant).to eq variant
|
||||
expect(last_unit.state).to eq 'backordered'
|
||||
expect(last_unit.order).to eq subject.order
|
||||
|
||||
expect(shipment.shipping_method).to eq shipping_method
|
||||
end
|
||||
expect(shipment.shipping_method).to eq shipping_method
|
||||
end
|
||||
|
||||
describe "#inpsect" do
|
||||
it "prints the package contents" do
|
||||
subject.add variant, 5
|
||||
expect(subject.inspect).to match("#{variant.name} 5")
|
||||
end
|
||||
end
|
||||
describe "#inpsect" do
|
||||
it "prints the package contents" do
|
||||
subject.add variant, 5
|
||||
expect(subject.inspect).to match("#{variant.name} 5")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "#shipping_methods and #shipping_categories" do
|
||||
subject(:package) { described_class.new(order, contents) }
|
||||
|
||||
let(:enterprise) { create(:enterprise) }
|
||||
let(:other_enterprise) { create(:enterprise) }
|
||||
|
||||
let(:order) { build(:order, distributor: enterprise) }
|
||||
|
||||
let(:variant1) do
|
||||
instance_double(
|
||||
Spree::Variant,
|
||||
shipping_category: shipping_method1.shipping_categories.first
|
||||
)
|
||||
end
|
||||
let(:variant2) do
|
||||
instance_double(
|
||||
Spree::Variant,
|
||||
shipping_category: shipping_method2.shipping_categories.first
|
||||
)
|
||||
end
|
||||
let(:variant3) do
|
||||
instance_double(Spree::Variant, shipping_category: nil)
|
||||
end
|
||||
|
||||
let(:contents) do
|
||||
[
|
||||
described_class::ContentItem.new(variant1, 1),
|
||||
described_class::ContentItem.new(variant1, 1),
|
||||
described_class::ContentItem.new(variant2, 1),
|
||||
described_class::ContentItem.new(variant3, 1)
|
||||
]
|
||||
end
|
||||
|
||||
let(:shipping_method1) { create(:shipping_method, distributors: [enterprise]) }
|
||||
let(:shipping_method2) { create(:shipping_method, distributors: [other_enterprise]) }
|
||||
let!(:shipping_method3) {
|
||||
create(:shipping_method, distributors: [enterprise], deleted_at: Time.zone.now)
|
||||
}
|
||||
|
||||
describe "#shipping_methods" do
|
||||
it "does not return shipping methods not used by the package's order distributor" do
|
||||
expect(package.shipping_methods).to eq [shipping_method1]
|
||||
end
|
||||
|
||||
context "#shipping_methods and #shipping_categories" do
|
||||
subject(:package) { Package.new(order, contents) }
|
||||
it "does not return soft-deleted shipping methods" do
|
||||
expect(package.shipping_methods).not_to include shipping_method3
|
||||
end
|
||||
|
||||
let(:enterprise) { create(:enterprise) }
|
||||
let(:other_enterprise) { create(:enterprise) }
|
||||
it "returns an empty array if distributor is nil" do
|
||||
allow(order).to receive(:distributor) { nil }
|
||||
|
||||
let(:order) { build(:order, distributor: enterprise) }
|
||||
|
||||
let(:variant1) do
|
||||
instance_double(
|
||||
Spree::Variant,
|
||||
shipping_category: shipping_method1.shipping_categories.first
|
||||
)
|
||||
end
|
||||
let(:variant2) do
|
||||
instance_double(
|
||||
Spree::Variant,
|
||||
shipping_category: shipping_method2.shipping_categories.first
|
||||
)
|
||||
end
|
||||
let(:variant3) do
|
||||
instance_double(Spree::Variant, shipping_category: nil)
|
||||
end
|
||||
|
||||
let(:contents) do
|
||||
[
|
||||
Package::ContentItem.new(variant1, 1),
|
||||
Package::ContentItem.new(variant1, 1),
|
||||
Package::ContentItem.new(variant2, 1),
|
||||
Package::ContentItem.new(variant3, 1)
|
||||
]
|
||||
end
|
||||
|
||||
let(:shipping_method1) { create(:shipping_method, distributors: [enterprise]) }
|
||||
let(:shipping_method2) { create(:shipping_method, distributors: [other_enterprise]) }
|
||||
let!(:shipping_method3) {
|
||||
create(:shipping_method, distributors: [enterprise], deleted_at: Time.zone.now)
|
||||
}
|
||||
|
||||
describe "#shipping_methods" do
|
||||
it "does not return shipping methods not used by the package's order distributor" do
|
||||
expect(package.shipping_methods).to eq [shipping_method1]
|
||||
end
|
||||
|
||||
it "does not return soft-deleted shipping methods" do
|
||||
expect(package.shipping_methods).not_to include shipping_method3
|
||||
end
|
||||
|
||||
it "returns an empty array if distributor is nil" do
|
||||
allow(order).to receive(:distributor) { nil }
|
||||
|
||||
expect(package.shipping_methods).to eq []
|
||||
end
|
||||
end
|
||||
expect(package.shipping_methods).to eq []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user