mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-06 02:51:34 +00:00
Refactor spec
Linter said module was too big. I agreed, so made it smaller. Best viewed with whitespace ignored.
This commit is contained in:
@@ -2,108 +2,100 @@
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
module Reporting
|
||||
module Reports
|
||||
module OrdersAndDistributors
|
||||
RSpec.describe Base do
|
||||
describe 'orders and distributors report' do
|
||||
it 'should return a header row describing the report' do
|
||||
subject = Base.new nil
|
||||
RSpec.describe Reporting::Reports::OrdersAndDistributors::Base do
|
||||
describe 'orders and distributors report' do
|
||||
subject { described_class.new nil }
|
||||
|
||||
expect(subject.table_headers).to eq(
|
||||
[
|
||||
'Order date', 'Order Id',
|
||||
'Customer Name', 'Customer Email', 'Customer Phone', 'Customer City',
|
||||
'SKU', 'Item name', 'Variant', 'Quantity', 'Max Quantity', 'Cost', 'Shipping Cost',
|
||||
'Payment Method',
|
||||
'Distributor', 'Distributor address', 'Distributor city', 'Distributor postcode',
|
||||
'Shipping Method', 'Shipping instructions'
|
||||
]
|
||||
)
|
||||
end
|
||||
it 'should return a header row describing the report' do
|
||||
expect(subject.table_headers).to eq(
|
||||
[
|
||||
'Order date', 'Order Id',
|
||||
'Customer Name', 'Customer Email', 'Customer Phone', 'Customer City',
|
||||
'SKU', 'Item name', 'Variant', 'Quantity', 'Max Quantity', 'Cost', 'Shipping Cost',
|
||||
'Payment Method',
|
||||
'Distributor', 'Distributor address', 'Distributor city', 'Distributor postcode',
|
||||
'Shipping Method', 'Shipping instructions'
|
||||
]
|
||||
)
|
||||
end
|
||||
|
||||
context 'with completed order' do
|
||||
let(:bill_address) { create(:address) }
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:distributor1) { create(:distributor_enterprise) }
|
||||
let(:product) { create(:product) }
|
||||
let(:shipping_method) { create(:shipping_method) }
|
||||
let(:shipping_instructions) { 'pick up on thursday please!' }
|
||||
let(:order) {
|
||||
create(:order,
|
||||
state: 'complete', completed_at: Time.zone.now,
|
||||
distributor:, bill_address:,
|
||||
special_instructions: shipping_instructions)
|
||||
}
|
||||
let(:payment_method) { create(:payment_method, distributors: [distributor]) }
|
||||
let(:payment) { create(:payment, payment_method:, order:) }
|
||||
let(:line_item) { create(:line_item_with_shipment, product:, order:) }
|
||||
context 'with completed order' do
|
||||
let(:bill_address) { create(:address) }
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:distributor1) { create(:distributor_enterprise) }
|
||||
let(:product) { create(:product) }
|
||||
let(:shipping_method) { create(:shipping_method) }
|
||||
let(:shipping_instructions) { 'pick up on thursday please!' }
|
||||
let(:order) {
|
||||
create(:order,
|
||||
state: 'complete', completed_at: Time.zone.now,
|
||||
distributor:, bill_address:,
|
||||
special_instructions: shipping_instructions)
|
||||
}
|
||||
let(:payment_method) { create(:payment_method, distributors: [distributor]) }
|
||||
let(:payment) { create(:payment, payment_method:, order:) }
|
||||
let(:line_item) { create(:line_item_with_shipment, product:, order:) }
|
||||
subject { described_class.new create(:admin_user) }
|
||||
|
||||
before do
|
||||
order.select_shipping_method(shipping_method.id)
|
||||
order.payments << payment
|
||||
order.line_items << line_item
|
||||
end
|
||||
before do
|
||||
order.select_shipping_method(shipping_method.id)
|
||||
order.payments << payment
|
||||
order.line_items << line_item
|
||||
end
|
||||
|
||||
it 'should denormalise order and distributor details for display as csv' do
|
||||
subject = Base.new create(:admin_user), {}
|
||||
allow(subject).to receive(:unformatted_render?).and_return(true)
|
||||
table = subject.table_rows
|
||||
it 'should denormalise order and distributor details for display as csv' do
|
||||
allow(subject).to receive(:unformatted_render?).and_return(true)
|
||||
table = subject.table_rows
|
||||
|
||||
expect(table.size).to eq 1
|
||||
expect(table[0]).to eq([
|
||||
order.reload.completed_at.strftime("%F %T"),
|
||||
order.id,
|
||||
bill_address.full_name,
|
||||
order.email,
|
||||
bill_address.phone,
|
||||
bill_address.city,
|
||||
line_item.product.sku,
|
||||
line_item.product.name,
|
||||
line_item.options_text,
|
||||
line_item.quantity,
|
||||
line_item.max_quantity,
|
||||
line_item.price * line_item.quantity,
|
||||
line_item.distribution_fee,
|
||||
payment_method.name,
|
||||
distributor.name,
|
||||
distributor.address.address1,
|
||||
distributor.address.city,
|
||||
distributor.address.zipcode,
|
||||
shipping_method.name,
|
||||
shipping_instructions
|
||||
])
|
||||
end
|
||||
expect(table.size).to eq 1
|
||||
expect(table[0]).to eq([
|
||||
order.reload.completed_at.strftime("%F %T"),
|
||||
order.id,
|
||||
bill_address.full_name,
|
||||
order.email,
|
||||
bill_address.phone,
|
||||
bill_address.city,
|
||||
line_item.product.sku,
|
||||
line_item.product.name,
|
||||
line_item.options_text,
|
||||
line_item.quantity,
|
||||
line_item.max_quantity,
|
||||
line_item.price * line_item.quantity,
|
||||
line_item.distribution_fee,
|
||||
payment_method.name,
|
||||
distributor.name,
|
||||
distributor.address.address1,
|
||||
distributor.address.city,
|
||||
distributor.address.zipcode,
|
||||
shipping_method.name,
|
||||
shipping_instructions
|
||||
])
|
||||
end
|
||||
|
||||
it "prints one row per line item" do
|
||||
create(:line_item_with_shipment, order:)
|
||||
it "prints one row per line item" do
|
||||
create(:line_item_with_shipment, order:)
|
||||
|
||||
subject = Base.new(create(:admin_user))
|
||||
table = subject.table_rows
|
||||
expect(table.size).to eq 2
|
||||
end
|
||||
|
||||
table = subject.table_rows
|
||||
expect(table.size).to eq 2
|
||||
end
|
||||
context "filtering by distributor" do
|
||||
it do
|
||||
create(:line_item_with_shipment, order:)
|
||||
|
||||
context "filtering by distributor" do
|
||||
it do
|
||||
create(:line_item_with_shipment, order:)
|
||||
report1 = described_class.new(create(:admin_user), {})
|
||||
table = report1.table_rows
|
||||
expect(table.size).to eq 2
|
||||
|
||||
report1 = Base.new(create(:admin_user), {})
|
||||
table = report1.table_rows
|
||||
expect(table.size).to eq 2
|
||||
report2 = described_class.new(create(:admin_user),
|
||||
{ q: { distributor_id_in: [distributor.id] } })
|
||||
table2 = report2.table_rows
|
||||
expect(table2.size).to eq 2
|
||||
|
||||
report2 = Base.new(create(:admin_user),
|
||||
{ q: { distributor_id_in: [distributor.id] } })
|
||||
table2 = report2.table_rows
|
||||
expect(table2.size).to eq 2
|
||||
|
||||
report3 = Base.new(create(:admin_user),
|
||||
{ q: { distributor_id_in: [distributor1.id] } })
|
||||
table3 = report3.table_rows
|
||||
expect(table3.size).to eq 0
|
||||
end
|
||||
end
|
||||
end
|
||||
report3 = described_class.new(create(:admin_user),
|
||||
{ q: { distributor_id_in: [distributor1.id] } })
|
||||
table3 = report3.table_rows
|
||||
expect(table3.size).to eq 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user