diff --git a/spec/services/orders/mask_data_service_spec.rb b/spec/services/orders/mask_data_service_spec.rb index aed4ba48a8..17c41fc3a8 100644 --- a/spec/services/orders/mask_data_service_spec.rb +++ b/spec/services/orders/mask_data_service_spec.rb @@ -7,14 +7,37 @@ RSpec.describe Orders::MaskDataService do let(:distributor) { create(:enterprise) } let(:order) { create(:order, distributor:, ship_address: create(:address)) } - context 'when displaying customer names is allowed' do - before { distributor.show_customer_names_to_suppliers = true } - - it 'masks personal addresses and email' do + shared_examples "mask customer name" do + it 'masks the full name' do + described_class.new(order).call + + expect(order.bill_address.attributes).to include( + 'firstname' => 'HIDDEN', + 'lastname' => '' + ) + expect(order.ship_address.attributes).to include( + 'firstname' => 'HIDDEN', + 'lastname' => '' + ) + end + end + + shared_examples "mask customer contact data" do + it 'masks personal phone and email' do + described_class.new(order).call + + expect(order.bill_address.attributes).to include('phone' => '') + expect(order.ship_address.attributes).to include('phone' => '') + + expect(order.email).to eq('HIDDEN') + end + end + + shared_examples "mask customer address" do + it 'masks personal addresses' do described_class.new(order).call expect(order.bill_address.attributes).to include( - 'phone' => '', 'address1' => '', 'address2' => '', 'city' => '', @@ -23,16 +46,20 @@ RSpec.describe Orders::MaskDataService do ) expect(order.ship_address.attributes).to include( - 'phone' => '', 'address1' => '', 'address2' => '', 'city' => '', 'zipcode' => '', 'state_id' => nil ) - - expect(order.email).to eq('HIDDEN') end + end + + context 'when displaying customer names is allowed' do + before { distributor.show_customer_names_to_suppliers = true } + + include_examples "mask customer contact data" + include_examples "mask customer address" it 'does not mask the full name' do described_class.new(order).call @@ -51,42 +78,9 @@ RSpec.describe Orders::MaskDataService do context 'when displaying customer names is not allowed' do before { distributor.show_customer_names_to_suppliers = false } - it 'masks personal addresses and email' do - described_class.new(order).call - - expect(order.bill_address.attributes).to include( - 'phone' => '', - 'address1' => '', - 'address2' => '', - 'city' => '', - 'zipcode' => '', - 'state_id' => nil - ) - - expect(order.ship_address.attributes).to include( - 'phone' => '', - 'address1' => '', - 'address2' => '', - 'city' => '', - 'zipcode' => '', - 'state_id' => nil - ) - - expect(order.email).to eq('HIDDEN') - end - - it 'masks the full name' do - described_class.new(order).call - - expect(order.bill_address.attributes).to include( - 'firstname' => 'HIDDEN', - 'lastname' => '' - ) - expect(order.ship_address.attributes).to include( - 'firstname' => 'HIDDEN', - 'lastname' => '' - ) - end + include_examples "mask customer name" + include_examples "mask customer contact data" + include_examples "mask customer address" end end end