From fdd8c06823d319afee2f7d4e96026ee1af4a203c Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Mar 2019 12:00:19 +1100 Subject: [PATCH] Style reports spec --- .rubocop_manual_todo.yml | 1 - .rubocop_todo.yml | 3 - .../orders_and_fulfillments_report_spec.rb | 198 ++++++++++-------- 3 files changed, 115 insertions(+), 87 deletions(-) diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 659745078f..937d2ff90a 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -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 diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index b0c7a07457..3df9808e33 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -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 diff --git a/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb b/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb index b6d810758f..7571651a86 100644 --- a/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb +++ b/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb @@ -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