From f4860f95061852ae0a0215b29a89f526bf538c1a Mon Sep 17 00:00:00 2001 From: Jozef Vaclavik Date: Fri, 6 Sep 2024 05:09:56 +0000 Subject: [PATCH] feat: add breaking specs for references_many deserialization where attribute is missing --- spec/deserializer_spec.rb | 53 +++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/spec/deserializer_spec.rb b/spec/deserializer_spec.rb index 6cf219b0..684d85b1 100644 --- a/spec/deserializer_spec.rb +++ b/spec/deserializer_spec.rb @@ -108,22 +108,49 @@ expect(dresource.ledger_class.ledger_id).to eq('asdf2') end - it 'allows references many' do - resource = LedgerSync::Ledgers::TestLedger::Customer.new + context 'allows references many' do + it 'with hash including list with values' do + resource = LedgerSync::Ledgers::TestLedger::Customer.new - deserializer_class = LedgerSync::Ledgers::TestLedger::Customer::Deserializer + deserializer_class = LedgerSync::Ledgers::TestLedger::Customer::Deserializer - h = { - 'subsidiaries' => [ - { - 'name' => 'adsf1' - } - ] - } + h = { + 'subsidiaries' => [ + { + 'name' => 'adsf1' + } + ] + } + + dresource = deserializer_class.new.deserialize(hash: h, resource: resource) + expect(dresource.subsidiaries.count).to eq(1) + expect(dresource.subsidiaries.first.name).to eq('adsf1') + end + + it 'with hash including empty list' do + resource = LedgerSync::Ledgers::TestLedger::Customer.new + + deserializer_class = LedgerSync::Ledgers::TestLedger::Customer::Deserializer + + h = { + 'subsidiaries' => [] + } + + dresource = deserializer_class.new.deserialize(hash: h, resource: resource) + expect(dresource.subsidiaries.count).to eq(0) + end + + it 'with hash missing values' do + resource = LedgerSync::Ledgers::TestLedger::Customer.new + + deserializer_class = LedgerSync::Ledgers::TestLedger::Customer::Deserializer + + h = {} + + dresource = deserializer_class.new.deserialize(hash: h, resource: resource) + expect(dresource.subsidiaries.count).to eq(0) + end - dresource = deserializer_class.new.deserialize(hash: h, resource: resource) - expect(dresource.subsidiaries.count).to eq(1) - expect(dresource.subsidiaries.first.name).to eq('adsf1') end context 'with custom attributes' do