diff --git a/app/services/orders/mask_data_service.rb b/app/services/orders/mask_data_service.rb index 3ce4612b79..78761d3087 100644 --- a/app/services/orders/mask_data_service.rb +++ b/app/services/orders/mask_data_service.rb @@ -8,7 +8,7 @@ module Orders def call mask_customer_names unless customer_names_allowed? - mask_contact_data + mask_contact_data unless cutomer_contacts_allowed? mask_address end @@ -27,6 +27,10 @@ module Orders lastname: "") end + def cutomer_contacts_allowed? + order.distributor.show_customer_contacts_to_suppliers + end + def mask_contact_data order.bill_address&.assign_attributes(phone: "") order.ship_address&.assign_attributes(phone: "") diff --git a/spec/lib/reports/orders_and_distributors_report_spec.rb b/spec/lib/reports/orders_and_distributors_report_spec.rb index c4cd520f15..b8a6e4e50c 100644 --- a/spec/lib/reports/orders_and_distributors_report_spec.rb +++ b/spec/lib/reports/orders_and_distributors_report_spec.rb @@ -134,6 +134,17 @@ RSpec.describe Reporting::Reports::OrdersAndDistributors::Base do expect(row[2..5]).to eq [bill_address.full_name, "HIDDEN", "", ""] end end + + context "where the distributor allows suppliers to see customer phone and email" do + before do + distributor.update_columns show_customer_contacts_to_suppliers: true + end + + it "shows line items supplied by my producers, with only contact details shown" do + expect(row).not_to include("FirstName LastName", "City") + expect(row[2..5]).to eq ["HIDDEN", order.email, "123-456", ""] + end + end end it "minimises database queries" do diff --git a/spec/services/orders/mask_data_service_spec.rb b/spec/services/orders/mask_data_service_spec.rb index 17c41fc3a8..c4ad1d74b0 100644 --- a/spec/services/orders/mask_data_service_spec.rb +++ b/spec/services/orders/mask_data_service_spec.rb @@ -82,5 +82,29 @@ RSpec.describe Orders::MaskDataService do include_examples "mask customer contact data" include_examples "mask customer address" end + + context 'when displaying customer contact data is allowed' do + before { distributor.show_customer_contacts_to_suppliers = true } + + include_examples "mask customer name" + include_examples "mask customer address" + + it 'does not mask the phone or email' do + described_class.new(order).call + + expect(order.bill_address.attributes).not_to include('phone' => '') + expect(order.ship_address.attributes).not_to include('phone' => '') + + expect(order.email).not_to eq('HIDDEN') + end + end + + context 'when displaying customer contact data is not allowed' do + before { distributor.show_customer_contacts_to_suppliers = false } + + include_examples "mask customer name" + include_examples "mask customer contact data" + include_examples "mask customer address" + end end end