require 'test_helper' module SsciInc class RequestTest < Test::Unit::TestCase subject do request = Request.new(TEST_HASH) request.alias do |a| a.given_name = "Steve" a.family_name = "Jobs" end request.criminal_county_screen do |screen| screen.region = "WA" screen.county = "KING" end request end context "#as_xml" do should "be correctly structured nokogiri builder object" do root_node = subject.as_xml.parent # this is seeing if there is an attribute "somewhere" inside # the document that matches this name and value assert_xml_attr_equal root_node, :user_name, :userId assert_xml_attr_equal root_node, :password assert_xml_attr_equal root_node, :ssn_country_code, :countryCode assert_xml_attr_equal root_node, :issuing_authority, :issuingAuthority assert_xml_text_equal root_node, :reference_id assert_xml_text_equal root_node, :reference assert_xml_text_equal root_node, :email_address assert_xml_text_equal root_node, :telephone assert_xml_text_equal root_node, :given_name assert_xml_text_equal root_node, :middle_name assert_xml_text_equal root_node, :family_name assert_xml_text_equal root_node, :government_id assert_xml_text_equal root_node, :date_of_birth assert_xml_text_equal root_node, :country_code assert_xml_text_equal root_node, :postal_code assert_xml_text_equal root_node, :region assert_xml_text_equal root_node, :municipality assert_xml_text_equal root_node, :address_line assert_xml_text_equal root_node, :street_name item_nodes = root_node.xpath("//AdditionalItems") subject.additional_items.each do |k,v| next if v.nil? attr_name = "x:#{k}" item_node = item_nodes.at("[@type='#{attr_name}']") assert_not_nil item_node assert_equal v.to_s, item_node.at(".//Text").try(:text) end region = root_node.at("//Screening//Region").text county = root_node.at("//Screening//County").text assert_equal "WA", region assert_equal "KING", county alias_given_name = root_node.at("//Aliases//PersonName//GivenName").text alias_family_name = root_node.at("//Aliases//PersonName//FamilyName").text assert_equal "Steve", alias_given_name assert_equal "Jobs", alias_family_name end end context "#submit" do should "send a post request and wrap the response" do response = mock request_xml = "request xml" response_xml = "reponse_xml" http_response = mock(:parsed_response => response_xml) subject.expects(:to_xml).returns(request_xml) HTTParty::Request.any_instance.stubs(perform: http_response) Response.expects(:new).with(response_xml).returns(response) assert_equal response, subject.submit end end should_have_attr_accessor :config, :base_uri, :user_name, :password should_have_attr_accessor :action, :type, :reference_id, :reference should_have_attr_accessor :email_address, :telephone should_have_attr_accessor :given_name, :middle_name, :family_name should_have_attr_accessor :government_id, :ssn_country_code, :issuing_authority, :date_of_birth, :country_code, :postal_code, :region, :municipality, :address_line, :street_name should_have_attr_accessor :use_defaults should_have_attr_accessor *Request::ADDITIONAL_ITEMS end end