Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated VAProfile::V2::Address to VAProfile::V3::Address #19073

Merged
merged 2 commits into from
Oct 24, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/controllers/concerns/vet360/writeable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def invalidate_cache
def build_record(type, params)
# This needs to be refactored after V2 upgrade is complete
model = if type == 'address' && Flipper.enabled?(:va_v3_contact_information_service, @current_user)
'VAProfile::Models::V2::Address'
'VAProfile::Models::V3::Address'
else
"VAProfile::Models::#{type.capitalize}"
end
Expand Down
6 changes: 3 additions & 3 deletions app/models/va_profile_redis/v2/contact_information.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

require 'va_profile/v2/contact_information/person_response'
require 'va_profile/v2/contact_information/service'
require 'va_profile/models/v2/address'
require 'va_profile/models/v3/address'
require 'va_profile/models/telephone'
require 'common/models/redis_store'
require 'common/models/concerns/cache_aside'
Expand Down Expand Up @@ -53,7 +53,7 @@ def email
def residential_address
return unless @user.loa3?

dig_out('addresses', 'address_pou', VAProfile::Models::V2::Address::RESIDENCE)
dig_out('addresses', 'address_pou', VAProfile::Models::V3::Address::RESIDENCE)
end

# Returns the user's mailing address. In VA Profile, a user can only have one
Expand All @@ -64,7 +64,7 @@ def residential_address
def mailing_address
return unless @user.loa3?

dig_out('addresses', 'address_pou', VAProfile::Models::V2::Address::CORRESPONDENCE)
dig_out('addresses', 'address_pou', VAProfile::Models::V3::Address::CORRESPONDENCE)
end

# Returns the user's home phone. In VA Profile, a user can only have one
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
require 'va_profile/contact_information/service'
require 'va_profile/v2/contact_information/service'
require 'va_profile/models/address'
require 'va_profile/models/v2/address'
require 'va_profile/models/v3/address'
require 'va_profile/models/telephone'
require 'va_profile/models/permission'
require 'common/models/redis_store'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

module VAProfile
module Models
module V2
class Address < V2::BaseAddress
module V3
class Address < V3::BaseAddress
attribute :bad_address, Boolean

validates(:source_date, presence: true)

# Converts a decoded JSON response from VAProfile to an instance of the Address model
# @param body [Hash] the decoded response body from VAProfile
# @return [VAProfile::Models::V2::Address] the model built from the response body
# @return [VAProfile::Models::V3::Address] the model built from the response body
# rubocop:disable Metrics/MethodLength
def in_json
address_attributes = {
Expand Down Expand Up @@ -58,10 +58,10 @@ def in_json

# Converts a decoded JSON response from VAProfile to an instance of the Address model
# @param body [Hash] the decoded response body from VAProfile
# @return [VAProfile::Models::V2::Address] the model built from the response body
# @return [VAProfile::Models::V3::Address] the model built from the response body
# rubocop:disable Metrics/MethodLength
def self.build_from(body)
VAProfile::Models::V2::Address.new(
VAProfile::Models::V3::Address.new(
address_line1: body['address_line1'],
address_line2: body['address_line2'],
address_line3: body['address_line3'],
Expand Down Expand Up @@ -96,7 +96,7 @@ def self.build_from(body)
# rubocop:enable Metrics/MethodLength

def correspondence?
@address_pou == VAProfile::Models::V2::Address::CORRESPONDENCE
@address_pou == VAProfile::Models::V3::Address::CORRESPONDENCE
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

module VAProfile
module Models
module V2
module V3
class BaseAddress < Base
include VAProfile::Concerns::Defaultable
include VAProfile::Concerns::Expirable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

module VAProfile
module Models
module V2
module V3
class Person < Base
attribute :addresses, Array[Address]
attribute :created_at, Common::ISO8601Time
Expand All @@ -24,12 +24,12 @@ class Person < Base
# @return [VAProfile::Models::Person] the model built from the response body
def self.build_from(body)
body ||= {}
addresses = body['addresses']&.map { |a| VAProfile::Models::V2::Address.build_from(a) }
addresses = body['addresses']&.map { |a| VAProfile::Models::V3::Address.build_from(a) }
emails = body['emails']&.map { |e| VAProfile::Models::Email.build_from(e) }
telephones = body['telephones']&.map { |t| VAProfile::Models::Telephone.build_from(t) }
body['permissions']&.map { |t| VAProfile::Models::Permission.build_from(t) }

VAProfile::Models::V2::Person.new(
VAProfile::Models::V3::Person.new(
created_at: body['create_date'],
source_date: body['source_date'],
updated_at: body['update_date'],
Expand Down
6 changes: 3 additions & 3 deletions lib/va_profile/v2/contact_information/person_response.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# frozen_string_literal: true

require 'va_profile/response'
require 'va_profile/models/v2/person'
require 'va_profile/models/v3/person'

module VAProfile
module V2
module ContactInformation
class PersonResponse < VAProfile::Response
attribute :person, VAProfile::Models::V2::Person
attribute :person, VAProfile::Models::V3::Person

attr_reader :response_body

Expand All @@ -16,7 +16,7 @@ def self.from(raw_response = nil)

new(
raw_response&.status,
person: VAProfile::Models::V2::Person.build_from(response_body&.dig('bio'))
person: VAProfile::Models::V3::Person.build_from(response_body&.dig('bio'))
)
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def save!(http_method, resource_type, params)

def build_record(type, params)
if type == :address && Flipper.enabled?(:va_v3_contact_information_service, @user)
'VAProfile::Models::V2::Address'
'VAProfile::Models::V3::Address'
.constantize
.new(params)
.set_defaults(@user)
Expand Down
2 changes: 1 addition & 1 deletion modules/mobile/spec/services/sync_update_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@

# let(:user) { create(:user, :api_auth_v2) }

# let(:params) { build(:va_profile_address_v2, :override, validation_key: nil) }
# let(:params) { build(:va_profile_v3_address, :override, validation_key: nil) }

# context 'when it succeeds' do
# let(:transaction) do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

# This will be removed after ContactInformation has been updated
FactoryBot.define do
factory :va_profile_address_v2, class: 'VAProfile::Models::V2::Address' do
factory :va_profile_v3_address, class: 'VAProfile::Models::V3::Address' do
address_line1 { '140 Rock Creek Rd' }
address_pou { VAProfile::Models::V2::Address::RESIDENCE }
address_type { VAProfile::Models::V2::Address::DOMESTIC }
address_pou { VAProfile::Models::V3::Address::RESIDENCE }
address_type { VAProfile::Models::V3::Address::DOMESTIC }
bad_address { true }
city { 'Washington' }
country_name { 'USA' }
Expand All @@ -23,23 +23,23 @@
vet360_id { '1781151' }

trait :mailing do
address_pou { VAProfile::Models::V2::Address::CORRESPONDENCE }
address_pou { VAProfile::Models::V3::Address::CORRESPONDENCE }
address_line1 { '1515 Broadway' }
end

trait :domestic do
address_type { VAProfile::Models::V2::Address::DOMESTIC }
address_type { VAProfile::Models::V3::Address::DOMESTIC }
end

trait :international do
address_type { VAProfile::Models::V2::Address::INTERNATIONAL }
address_type { VAProfile::Models::V3::Address::INTERNATIONAL }
international_postal_code { '100-0001' }
state_code { nil }
zip_code { nil }
end

trait :military_overseas do
address_type { VAProfile::Models::V2::Address::MILITARY }
address_type { VAProfile::Models::V3::Address::MILITARY }
end

trait :multiple_matches do
Expand All @@ -50,7 +50,7 @@
end

trait :override do
address_pou { VAProfile::Models::V2::Address::CORRESPONDENCE }
address_pou { VAProfile::Models::V3::Address::CORRESPONDENCE }
address_line1 { '1494 Martin Luther King Rd' }
address_line2 { 'null' }
city { 'Fulton' }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# frozen_string_literal: true

FactoryBot.define do
factory :person_v2, class: 'VAProfile::Models::V2::Person' do
addresses { [FactoryBot.build(:va_profile_address_v2), FactoryBot.build(:va_profile_address_v2, :mailing)] }
factory :person_v2, class: 'VAProfile::Models::V3::Person' do
addresses { [FactoryBot.build(:va_profile_v3_address), FactoryBot.build(:va_profile_v3_address, :mailing)] }
emails { [FactoryBot.build(:email, :contact_info_v2)] }
telephones { [FactoryBot.build(:telephone, :contact_info_v2)] }
source_date { '2018-04-09T11:52:03-06:00' }
Expand Down
2 changes: 1 addition & 1 deletion spec/lib/common/models/concerns/cache_aside_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@

before do
Flipper.enable(:va_v3_contact_information_service)
allow(VAProfile::Models::V2::Person).to receive(:build_from).and_return(person)
allow(VAProfile::Models::V3::Person).to receive(:build_from).and_return(person)
end

describe '#do_cached_with', :initiate_vaprofile, :skip_vet360 do
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# frozen_string_literal: true

require 'rails_helper'
require 'va_profile/models/v2/address'
require 'va_profile/models/v3/address'

describe VAProfile::Models::V2::Address do
let(:address) { build(:va_profile_address_v2) }
describe VAProfile::Models::V3::Address do
let(:address) { build(:va_profile_v3_address) }

describe 'geolocation' do
it 'returns gelocation information' do
Expand Down Expand Up @@ -107,7 +107,7 @@
end

context 'when address_type is domestic' do
let(:address) { build(:va_profile_address_v2, :domestic) }
let(:address) { build(:va_profile_v3_address, :domestic) }

it 'city must only have US-ASCII characters' do
address.city = '12-34 2nd & 31st Street!'
Expand Down Expand Up @@ -142,7 +142,7 @@
end

context 'when address_type is international' do
let(:address) { build(:va_profile_address_v2, :international) }
let(:address) { build(:va_profile_v3_address, :international) }

it 'province must only have US-ASCII characters' do
address.province = '12-34 2nd & 31st Street!'
Expand Down Expand Up @@ -204,7 +204,7 @@
end

context 'when address_type is military' do
let(:address) { build(:va_profile_address_v2, :military_overseas) }
let(:address) { build(:va_profile_v3_address, :military_overseas) }

it 'state_code is required' do
expect(address.valid?).to eq(true)
Expand Down Expand Up @@ -233,25 +233,25 @@

context 'when address pou is correspondence' do
it 'correspondence? is true' do
address.address_pou = VAProfile::Models::V2::Address::CORRESPONDENCE
address.address_pou = VAProfile::Models::V3::Address::CORRESPONDENCE
expect(address.correspondence?).to eq(true)
end

it 'bad address is false' do
address.address_pou = VAProfile::Models::V2::Address::CORRESPONDENCE
address.address_pou = VAProfile::Models::V3::Address::CORRESPONDENCE
json = JSON.parse(address.in_json)
expect(json['bio']['badAddress']).to eq(false)
end
end

context 'when address pou is residence' do
it 'correspondence? is false' do
address.address_pou = VAProfile::Models::V2::Address::RESIDENCE
address.address_pou = VAProfile::Models::V3::Address::RESIDENCE
expect(address.correspondence?).to eq(false)
end

it 'bad address is nil' do
address.address_pou = VAProfile::Models::V2::Address::RESIDENCE
address.address_pou = VAProfile::Models::V3::Address::RESIDENCE
json = JSON.parse(address.in_json)
expect(json['bio']['badAddress']).to eq(nil)
end
Expand Down
12 changes: 6 additions & 6 deletions spec/lib/va_profile/v2/contact_information/service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
VCR.use_cassette('va_profile/v2/contact_information/person', VCR::MATCH_EVERYTHING) do
response = subject.get_person
expect(response).to be_ok
expect(response.person).to be_a(VAProfile::Models::V2::Person)
expect(response.person).to be_a(VAProfile::Models::V3::Person)
end
end

Expand All @@ -50,7 +50,7 @@
VCR.use_cassette('va_profile/v2/contact_information/person_without_data', VCR::MATCH_EVERYTHING) do
response = subject.get_person
expect(response).to be_ok
expect(response.person).to be_a(VAProfile::Models::V2::Person)
expect(response.person).to be_a(VAProfile::Models::V3::Person)
end
end
end
Expand Down Expand Up @@ -154,7 +154,7 @@

describe '#post_address' do
let(:address) do
build(:va_profile_address_v2, vet360_id: user.vet360_id, source_system_user: user.icn)
build(:va_profile_v3_address, vet360_id: user.vet360_id, source_system_user: user.icn)
end

context 'when successful' do
Expand Down Expand Up @@ -191,7 +191,7 @@

describe '#put_address' do
let(:address) do
build(:va_profile_address_v2, :override, vet360_id: user.vet360_id, source_system_user: user.icn)
build(:va_profile_v3_address, :override, vet360_id: user.vet360_id, source_system_user: user.icn)
end

context 'when successful' do
Expand All @@ -214,7 +214,7 @@

context 'with a validation key' do
let(:address) do
build(:va_profile_address_v2, :override, country_name: nil)
build(:va_profile_v3_address, :override, country_name: nil)
end

it 'overrides the address error', run_at: '2020-02-14T00:19:15.000Z' do
Expand Down Expand Up @@ -318,7 +318,7 @@
[
{
model_name: 'address',
factory: 'va_profile_address_v2',
factory: 'va_profile_v3_address',
trait: 'contact_info_v2',
attr: 'residential_address',
id: 577_127
Expand Down
2 changes: 1 addition & 1 deletion spec/models/async_transaction/va_profile/base_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ def last_transactions_by_class

let(:user) { build(:user, :loa3) }
let!(:user_verification) { create(:user_verification, idme_uuid: user.idme_uuid) }
let(:address) { build(:va_profile_address_v2, vet360_id: user.vet360_id, source_system_user: user.icn) }
let(:address) { build(:va_profile_v3_address, vet360_id: user.vet360_id, source_system_user: user.icn) }

it 'returns an instance with the user uuid', :aggregate_failures do
VCR.use_cassette('va_profile/v2/contact_information/post_address_success', VCR::MATCH_EVERYTHING) do
Expand Down
2 changes: 1 addition & 1 deletion spec/models/async_transaction/vet360/base_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@
let(:user) { build(:user, :loa3) }
let!(:user_verification) { create(:user_verification, idme_uuid: user.idme_uuid) }

let(:address) { build(:va_profile_address_v2, vet360_id: user.vet360_id, source_system_user: user.icn) }
let(:address) { build(:va_profile_v3_address, vet360_id: user.vet360_id, source_system_user: user.icn) }

it 'returns an instance with the user uuid', :aggregate_failures do
VCR.use_cassette('va_profile/v2/contact_information/post_address_success', VCR::MATCH_EVERYTHING) do
Expand Down
Loading
Loading