diff --git a/lib/carma/models/metadata.rb b/lib/carma/models/metadata.rb index be24af77ebf..bbbe17cd514 100644 --- a/lib/carma/models/metadata.rb +++ b/lib/carma/models/metadata.rb @@ -8,12 +8,14 @@ module CARMA module Models class Metadata < Base request_payload_key :claim_id, + :claim_guid, :veteran, :primary_caregiver, :secondary_caregiver_one, :secondary_caregiver_two - attr_accessor :claim_id + attr_accessor :claim_id, + :claim_guid attr_reader :veteran, :primary_caregiver, @@ -22,6 +24,7 @@ class Metadata < Base def initialize(args = {}) @claim_id = args[:claim_id] + @claim_guid = args[:claim_guid] self.veteran = args[:veteran] || {} self.primary_caregiver = args[:primary_caregiver] || {} diff --git a/lib/carma/models/submission.rb b/lib/carma/models/submission.rb index 0c9dd19707a..84035db41f0 100644 --- a/lib/carma/models/submission.rb +++ b/lib/carma/models/submission.rb @@ -31,7 +31,7 @@ def clear_veteran_icn(data) def self.from_claim(claim, metadata = {}) new( data: claim.parsed_form, - metadata: metadata.merge(claim_id: claim.id) + metadata: metadata.merge(claim_id: claim.id, claim_guid: claim.guid) ) end diff --git a/spec/lib/carma/models/metadata_spec.rb b/spec/lib/carma/models/metadata_spec.rb index 00368bb5ffb..21af4e63cb9 100644 --- a/spec/lib/carma/models/metadata_spec.rb +++ b/spec/lib/carma/models/metadata_spec.rb @@ -10,6 +10,13 @@ end end + describe '#claim_guid' do + it 'is accessible' do + subject.claim_guid = 'my-uuid' + expect(subject.claim_guid).to eq('my-uuid') + end + end + describe '#veteran' do it 'is accessible' do subject.veteran = { icn: 'ABCD1234', is_veteran: true } @@ -78,6 +85,7 @@ it 'accepts :claim_id, :veteran, :primary_caregiver, :secondary_caregiver_one, :secondary_caregiver_two' do subject = described_class.new( claim_id: 123, + claim_guid: 'my-uuid', veteran: { icn: 'VET1234', is_veteran: true @@ -94,6 +102,7 @@ ) expect(subject.claim_id).to eq(123) + expect(subject.claim_guid).to eq('my-uuid') expect(subject.veteran.icn).to eq('VET1234') expect(subject.veteran.is_veteran).to eq(true) expect(subject.primary_caregiver.icn).to eq('PC1234') @@ -111,6 +120,7 @@ expect(described_class.request_payload_keys).to eq( %i[ claim_id + claim_guid veteran primary_caregiver secondary_caregiver_one @@ -123,11 +133,12 @@ describe '#to_request_payload' do describe 'can receive :to_request_payload' do it 'with a minimal data set' do - subject = described_class.new claim_id: 123 + subject = described_class.new claim_id: 123, claim_guid: 'my-uuid' expect(subject.to_request_payload).to eq( { 'claimId' => 123, + 'claimGuid' => 'my-uuid', 'veteran' => { 'icn' => nil, 'isVeteran' => nil @@ -144,6 +155,7 @@ it 'with a maximum data set' do subject = described_class.new( claim_id: 123, + claim_guid: 'my-uuid', veteran: { icn: 'VET1234', is_veteran: true @@ -162,6 +174,7 @@ expect(subject.to_request_payload).to eq( { 'claimId' => 123, + 'claimGuid' => 'my-uuid', 'veteran' => { 'icn' => 'VET1234', 'isVeteran' => true diff --git a/spec/lib/carma/models/submission_spec.rb b/spec/lib/carma/models/submission_spec.rb index 36a2242a27f..f07c33d521a 100644 --- a/spec/lib/carma/models/submission_spec.rb +++ b/spec/lib/carma/models/submission_spec.rb @@ -50,6 +50,7 @@ it 'is accessible' do subject.metadata = { claim_id: 123, + claim_guid: 'my-uuid', veteran: { icn: 'VET1234', is_veteran: true @@ -68,6 +69,7 @@ # metadata expect(subject.metadata).to be_instance_of(CARMA::Models::Metadata) expect(subject.metadata.claim_id).to eq(123) + expect(subject.metadata.claim_guid).to eq('my-uuid') # metadata.veteran expect(subject.metadata.veteran).to be_instance_of(CARMA::Models::Veteran) expect(subject.metadata.veteran.icn).to eq('VET1234') @@ -92,6 +94,7 @@ # metadata expect(subject.metadata).to be_instance_of(CARMA::Models::Metadata) expect(subject.metadata.claim_id).to eq(nil) + expect(subject.metadata.claim_guid).to eq(nil) # metadata.veteran expect(subject.metadata.veteran).to be_instance_of(CARMA::Models::Veteran) expect(subject.metadata.veteran.icn).to eq(nil) @@ -120,6 +123,7 @@ data: expected[:data], metadata: { claim_id: 123, + claim_guid: 'my-uuid', veteran: { icn: 'VET1234', is_veteran: true @@ -142,6 +146,7 @@ # metadata expect(subject.metadata).to be_instance_of(CARMA::Models::Metadata) expect(subject.metadata.claim_id).to eq(123) + expect(subject.metadata.claim_guid).to eq('my-uuid') # metadata.veteran expect(subject.metadata.veteran).to be_instance_of(CARMA::Models::Veteran) expect(subject.metadata.veteran.icn).to eq('VET1234') @@ -171,6 +176,7 @@ expect(submission.metadata).to be_instance_of(CARMA::Models::Metadata) expect(submission.metadata.claim_id).to eq(claim.id) + expect(submission.metadata.claim_guid).to eq(claim.guid) end it 'will override :claim_id when passed in metadata and use claim.id instead' do @@ -186,6 +192,21 @@ expect(submission.metadata).to be_instance_of(CARMA::Models::Metadata) expect(submission.metadata.claim_id).to eq(claim.id) end + + it 'will override :claim_guid when passed in metadata and use claim.guid instead' do + claim = build(:caregivers_assistance_claim) + + submission = described_class.from_claim(claim, claim_guid: 'not-this-claims-guid') + + expect(submission).to be_instance_of(described_class) + expect(submission.data).to eq(claim.parsed_form) + expect(submission.carma_case_id).to eq(nil) + expect(submission.submitted_at).to eq(nil) + + expect(submission.metadata).to be_instance_of(CARMA::Models::Metadata) + expect(submission.metadata.claim_guid).not_to eq('not-this-claims-guid') + expect(submission.metadata.claim_guid).to eq(claim.guid) + end end describe '::request_payload_keys' do @@ -206,6 +227,7 @@ }, metadata: { claim_id: 123, + claim_guid: 'my-uuid', veteran: { icn: 'VET1234', is_veteran: true @@ -229,6 +251,7 @@ }, 'metadata' => { 'claimId' => 123, + 'claimGuid' => 'my-uuid', 'veteran' => { 'icn' => 'VET1234', 'isVeteran' => true @@ -255,6 +278,7 @@ }, metadata: { claim_id: 123, + claim_guid: 'my-uuid', veteran: { icn: 'VET1234', is_veteran: false @@ -278,6 +302,7 @@ }, 'metadata' => { 'claimId' => 123, + 'claimGuid' => 'my-uuid', 'veteran' => { 'icn' => nil, 'isVeteran' => false