Refactor spec

This commit is contained in:
David Cook
2025-03-05 16:13:42 +11:00
parent 98ab910fb4
commit b05a42f3bb

View File

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