mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Style reports spec
This commit is contained in:
committed by
Kristina Lim
parent
856603cadd
commit
fdd8c06823
@@ -317,7 +317,6 @@ Metrics/LineLength:
|
||||
- spec/lib/open_food_network/order_cycle_form_applicator_spec.rb
|
||||
- spec/lib/open_food_network/order_cycle_permissions_spec.rb
|
||||
- spec/lib/open_food_network/order_grouper_spec.rb
|
||||
- spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb
|
||||
- spec/lib/open_food_network/packing_report_spec.rb
|
||||
- spec/lib/open_food_network/permissions_spec.rb
|
||||
- spec/lib/open_food_network/products_and_inventory_report_spec.rb
|
||||
|
||||
@@ -736,7 +736,6 @@ Layout/SpaceInsideBlockBraces:
|
||||
- 'spec/jobs/update_billable_periods_spec.rb'
|
||||
- 'spec/lib/open_food_network/order_cycle_form_applicator_spec.rb'
|
||||
- 'spec/lib/open_food_network/order_grouper_spec.rb'
|
||||
- 'spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/products_renderer_spec.rb'
|
||||
- 'spec/lib/open_food_network/tag_rule_applicator_spec.rb'
|
||||
- 'spec/models/column_preference_spec.rb'
|
||||
@@ -1077,7 +1076,6 @@ Lint/Void:
|
||||
- 'spec/lib/open_food_network/enterprise_fee_calculator_spec.rb'
|
||||
- 'spec/lib/open_food_network/enterprise_issue_validator_spec.rb'
|
||||
- 'spec/lib/open_food_network/group_buy_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/packing_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/reports/report_spec.rb'
|
||||
- 'spec/lib/open_food_network/reports/rule_spec.rb'
|
||||
@@ -2000,7 +1998,6 @@ Style/MixinUsage:
|
||||
- 'spec/features/admin/orders_spec.rb'
|
||||
- 'spec/lib/open_food_network/bulk_coop_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/order_cycle_management_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/packing_report_spec.rb'
|
||||
|
||||
# Offense count: 4
|
||||
|
||||
@@ -1,106 +1,138 @@
|
||||
require 'spec_helper'
|
||||
|
||||
include AuthenticationWorkflow
|
||||
describe OpenFoodNetwork::OrdersAndFulfillmentsReport do
|
||||
include AuthenticationWorkflow
|
||||
|
||||
module OpenFoodNetwork
|
||||
describe OrdersAndFulfillmentsReport do
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:order_cycle) { create(:simple_order_cycle) }
|
||||
let(:order) { create(:order, completed_at: 1.day.ago, order_cycle: order_cycle, distributor: distributor) }
|
||||
let(:line_item) { build(:line_item) }
|
||||
let(:user) { create(:user)}
|
||||
let(:admin_user) { create(:admin_user)}
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:order_cycle) { create(:simple_order_cycle) }
|
||||
let(:order) {
|
||||
create(
|
||||
:order,
|
||||
completed_at: 1.day.ago,
|
||||
order_cycle: order_cycle,
|
||||
distributor: distributor
|
||||
)
|
||||
}
|
||||
let(:line_item) { build(:line_item) }
|
||||
let(:user) { create(:user) }
|
||||
let(:admin_user) { create(:admin_user) }
|
||||
|
||||
before { order.line_items << line_item }
|
||||
before { order.line_items << line_item }
|
||||
|
||||
describe "fetching orders" do
|
||||
context "as a site admin" do
|
||||
subject { OrdersAndFulfillmentsReport.new admin_user, {}, true }
|
||||
describe "fetching orders" do
|
||||
context "as a site admin" do
|
||||
subject { described_class.new admin_user, {}, true }
|
||||
|
||||
it "fetches completed orders" do
|
||||
o2 = create(:order)
|
||||
o2.line_items << build(:line_item)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
it "fetches completed orders" do
|
||||
o2 = create(:order)
|
||||
o2.line_items << build(:line_item)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
|
||||
it "does not show cancelled orders" do
|
||||
o2 = create(:order, state: "canceled", completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
end
|
||||
|
||||
context "as a manager of a supplier" do
|
||||
subject { described_class.new user, {}, true }
|
||||
|
||||
let(:s1) { create(:supplier_enterprise) }
|
||||
|
||||
before do
|
||||
s1.enterprise_roles.create!(user: user)
|
||||
end
|
||||
|
||||
context "that has granted P-OC to the distributor" do
|
||||
let(:o2) {
|
||||
create(
|
||||
:order,
|
||||
distributor: distributor,
|
||||
completed_at: 1.day.ago,
|
||||
bill_address: create(:address),
|
||||
ship_address: create(:address)
|
||||
)
|
||||
}
|
||||
let(:li2) { build(:line_item, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
o2.line_items << li2
|
||||
create(
|
||||
:enterprise_relationship,
|
||||
parent: s1,
|
||||
child: distributor,
|
||||
permissions_list: [:add_to_order_cycle]
|
||||
)
|
||||
end
|
||||
|
||||
it "does not show cancelled orders" do
|
||||
o2 = create(:order, state: "canceled", completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
expect(subject.table_items).to eq([li2])
|
||||
expect(subject.table_items.first.order.bill_address.firstname).to eq("HIDDEN")
|
||||
end
|
||||
end
|
||||
|
||||
context "as a manager of a supplier" do
|
||||
subject { OrdersAndFulfillmentsReport.new user, {}, true }
|
||||
|
||||
let(:s1) { create(:supplier_enterprise) }
|
||||
context "that has not granted P-OC to the distributor" do
|
||||
let(:o2) {
|
||||
create(
|
||||
:order,
|
||||
distributor: distributor,
|
||||
completed_at: 1.day.ago,
|
||||
bill_address: create(:address),
|
||||
ship_address: create(:address)
|
||||
)
|
||||
}
|
||||
let(:li2) { build(:line_item, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
s1.enterprise_roles.create!(user: user)
|
||||
o2.line_items << li2
|
||||
end
|
||||
|
||||
context "that has granted P-OC to the distributor" do
|
||||
let(:o2) { create(:order, distributor: distributor, completed_at: 1.day.ago, bill_address: create(:address), ship_address: create(:address)) }
|
||||
let(:li2) { build(:line_item, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
o2.line_items << li2
|
||||
create(:enterprise_relationship, parent: s1, child: distributor, permissions_list: [:add_to_order_cycle])
|
||||
end
|
||||
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
expect(subject.table_items).to eq([li2])
|
||||
expect(subject.table_items.first.order.bill_address.firstname).to eq("HIDDEN")
|
||||
end
|
||||
end
|
||||
|
||||
context "that has not granted P-OC to the distributor" do
|
||||
let(:o2) { create(:order, distributor: distributor, completed_at: 1.day.ago, bill_address: create(:address), ship_address: create(:address)) }
|
||||
let(:li2) { build(:line_item, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
o2.line_items << li2
|
||||
end
|
||||
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
expect(subject.table_items).to eq([])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "as a manager of a distributor" do
|
||||
subject { OrdersAndFulfillmentsReport.new user, {}, true }
|
||||
|
||||
before do
|
||||
distributor.enterprise_roles.create!(user: user)
|
||||
end
|
||||
|
||||
it "only shows line items distributed by enterprises managed by the current user" do
|
||||
d2 = create(:distributor_enterprise)
|
||||
d2.enterprise_roles.create!(user: create(:user))
|
||||
o2 = create(:order, distributor: d2, completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
|
||||
it "only shows the selected order cycle" do
|
||||
oc2 = create(:simple_order_cycle)
|
||||
o2 = create(:order, distributor: distributor, order_cycle: oc2)
|
||||
o2.line_items << build(:line_item)
|
||||
allow(subject).to receive(:params).and_return(order_cycle_id_in: order_cycle.id)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
expect(subject.table_items).to eq([])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "columns are aligned" do
|
||||
it 'has aligned columsn' do
|
||||
report_types = ["", "order_cycle_supplier_totals", "order_cycle_supplier_totals_by_distributor", "order_cycle_distributor_totals_by_supplier", "order_cycle_customer_totals"]
|
||||
context "as a manager of a distributor" do
|
||||
subject { described_class.new user, {}, true }
|
||||
|
||||
report_types.each do |report_type|
|
||||
report = OrdersAndFulfillmentsReport.new admin_user, report_type: report_type
|
||||
expect(report.header.size).to eq(report.columns.size)
|
||||
end
|
||||
before do
|
||||
distributor.enterprise_roles.create!(user: user)
|
||||
end
|
||||
|
||||
it "only shows line items distributed by enterprises managed by the current user" do
|
||||
d2 = create(:distributor_enterprise)
|
||||
d2.enterprise_roles.create!(user: create(:user))
|
||||
o2 = create(:order, distributor: d2, completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
|
||||
it "only shows the selected order cycle" do
|
||||
oc2 = create(:simple_order_cycle)
|
||||
o2 = create(:order, distributor: distributor, order_cycle: oc2)
|
||||
o2.line_items << build(:line_item)
|
||||
allow(subject).to receive(:params).and_return(order_cycle_id_in: order_cycle.id)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "columns are aligned" do
|
||||
it 'has aligned columsn' do
|
||||
report_types = [
|
||||
"",
|
||||
"order_cycle_supplier_totals",
|
||||
"order_cycle_supplier_totals_by_distributor",
|
||||
"order_cycle_distributor_totals_by_supplier",
|
||||
"order_cycle_customer_totals"
|
||||
]
|
||||
|
||||
report_types.each do |report_type|
|
||||
report = described_class.new admin_user, report_type: report_type
|
||||
expect(report.header.size).to eq(report.columns.size)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user