Style reports spec

This commit is contained in:
Maikel Linke
2019-03-22 12:00:19 +11:00
committed by Kristina Lim
parent 856603cadd
commit fdd8c06823
3 changed files with 115 additions and 87 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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