require 'test_helper'
require 'deserializers/xml/contact'
class DeserializersXmlContactTest < ActiveSupport::TestCase
def test_trims_empty_values
xml_string = <<-XML
XML
nokogiri_frame = Nokogiri::XML(xml_string).remove_namespaces!
instance = ::Deserializers::Xml::Contact.new(nokogiri_frame)
assert_equal instance.call, {}
end
def test_handles_update
xml_string = <<-XML
john-001
new name
Org
+123.4
new-email@inbox.test
XML
nokogiri_frame = Nokogiri::XML(xml_string).remove_namespaces!
instance = ::Deserializers::Xml::Contact.new(nokogiri_frame)
assert_equal instance.call, { name: 'new name',
org_name: 'Org',
email: 'new-email@inbox.test',
phone: '+123.4' }
end
def test_handles_create
name = 'new'
email = 'new@registrar.test'
phone = '+1.2'
xml_string = <<-XML
#{name}
#{phone}
#{email}
any
XML
nokogiri_frame = Nokogiri::XML(xml_string).remove_namespaces!
instance = ::Deserializers::Xml::Contact.new(nokogiri_frame)
assert_equal instance.call, { name: 'new', email: 'new@registrar.test', phone: '+1.2' }
end
def test_handles_statuses
xml_string = <<-XML
john-001
new name
+123.4
new-email@inbox.test
Payment overdue.
XML
nokogiri_frame = Nokogiri::XML(xml_string).remove_namespaces!
instance = ::Deserializers::Xml::Contact.new(nokogiri_frame)
assert_equal instance.call, { name: 'new name',
email: 'new-email@inbox.test',
phone: '+123.4',
statuses_to_add: ['clientDeleteProhibited',
'clientUpdateProhibited'],
statuses_to_remove: ['pendingDelete']
}
end
end