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 +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', 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