ssci_inc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/.octopolo.yml +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +22 -0
- data/CHANGELOG.markdown +0 -0
- data/Gemfile +3 -0
- data/README.md +66 -0
- data/Rakefile +26 -0
- data/lib/ssci_inc/configuration.rb +62 -0
- data/lib/ssci_inc/dsl.rb +30 -0
- data/lib/ssci_inc/person_name.rb +29 -0
- data/lib/ssci_inc/request.rb +196 -0
- data/lib/ssci_inc/response.rb +44 -0
- data/lib/ssci_inc/screening/civil_county.rb +17 -0
- data/lib/ssci_inc/screening/credit.rb +16 -0
- data/lib/ssci_inc/screening/criminal_county.rb +17 -0
- data/lib/ssci_inc/screening/criminal_federal.rb +17 -0
- data/lib/ssci_inc/screening/criminal_security.rb +12 -0
- data/lib/ssci_inc/screening/criminal_state.rb +16 -0
- data/lib/ssci_inc/screening/eviction.rb +16 -0
- data/lib/ssci_inc/screening/model.rb +27 -0
- data/lib/ssci_inc/screening/person_search.rb +16 -0
- data/lib/ssci_inc/version.rb +3 -0
- data/lib/ssci_inc.rb +19 -0
- data/ssci_inc.gemspec +32 -0
- data/test/integration/initial_request_test.rb +21 -0
- data/test/test-updated.xml +113 -0
- data/test/test_helper.rb +120 -0
- data/test/unit/request_test.rb +93 -0
- data/test/unit/response_test.rb +68 -0
- data/test/unit/screening/civil_county_test.rb +12 -0
- data/test/unit/screening/credit_test.rb +12 -0
- data/test/unit/screening/criminal_county_test.rb +12 -0
- data/test/unit/screening/criminal_federal_test.rb +12 -0
- data/test/unit/screening/criminal_security_test.rb +11 -0
- data/test/unit/screening/criminal_state_test.rb +12 -0
- data/test/unit/screening/eviction_test.rb +11 -0
- data/test/unit/screening/model_test.rb +37 -0
- data/test/unit/screening/person_search_test.rb +11 -0
- metadata +233 -0
data/lib/ssci_inc.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'active_support/all'
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'httparty'
|
4
|
+
|
5
|
+
require 'ssci_inc/configuration'
|
6
|
+
require 'ssci_inc/dsl'
|
7
|
+
require 'ssci_inc/person_name'
|
8
|
+
require 'ssci_inc/request'
|
9
|
+
require 'ssci_inc/response'
|
10
|
+
|
11
|
+
require 'ssci_inc/screening/model'
|
12
|
+
require 'ssci_inc/screening/civil_county'
|
13
|
+
require 'ssci_inc/screening/credit'
|
14
|
+
require 'ssci_inc/screening/criminal_county'
|
15
|
+
require 'ssci_inc/screening/criminal_federal'
|
16
|
+
require 'ssci_inc/screening/criminal_security'
|
17
|
+
require 'ssci_inc/screening/criminal_state'
|
18
|
+
require 'ssci_inc/screening/eviction'
|
19
|
+
require 'ssci_inc/screening/person_search'
|
data/ssci_inc.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ssci_inc/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "ssci_inc"
|
7
|
+
s.version = SsciInc::VERSION
|
8
|
+
s.authors = ["Jon Karna", "Jon Alme"]
|
9
|
+
s.email = ["jon.karna@sportsengine.com", "jonathan.alme@sportsengine.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Submit background checks to SSCI, Inc}
|
12
|
+
s.description = %q{The ssci_inc gem is a ruby gem used for
|
13
|
+
submitting background check requests to SSCI}
|
14
|
+
|
15
|
+
s.rubyforge_project = "ssci_inc"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_runtime_dependency "httparty"
|
23
|
+
s.add_runtime_dependency "nokogiri"
|
24
|
+
s.add_runtime_dependency "activesupport", ['> 3.0.0', '< 5.0']
|
25
|
+
s.add_runtime_dependency "i18n"
|
26
|
+
|
27
|
+
s.add_development_dependency "pry"
|
28
|
+
s.add_development_dependency "rake"
|
29
|
+
s.add_development_dependency "shoulda", "~> 3.0"
|
30
|
+
s.add_development_dependency "mocha", "~> 0.10"
|
31
|
+
s.add_development_dependency "test-unit"
|
32
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SsciInc
|
4
|
+
class InitialRequestTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
context "#submit" do
|
7
|
+
context "with no credentials" do
|
8
|
+
subject { Request.new(user_name: 'test') }
|
9
|
+
|
10
|
+
should "get an error response" do
|
11
|
+
response = subject.submit
|
12
|
+
assert_equal "x:error", response.order_status
|
13
|
+
assert_equal "120", response.error_code
|
14
|
+
assert_equal "Invalid login transaction. Bad credentials.",
|
15
|
+
response.error_description
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<BackgroundCheck password="" userId="">
|
3
|
+
<BackgroundSearchPackage action="submit" type="TST Media">
|
4
|
+
<ReferenceId>112233</ReferenceId>
|
5
|
+
<Reference>ABC Company Inc.</Reference>
|
6
|
+
<PersonalData>
|
7
|
+
<EmailAddresss></EmailAddresss>
|
8
|
+
<Telephone></Telephone>
|
9
|
+
<PersonName>
|
10
|
+
<GivenName>HANK</GivenName>
|
11
|
+
<MiddleName></MiddleName>
|
12
|
+
<FamilyName>MESS</FamilyName>
|
13
|
+
</PersonName>
|
14
|
+
<DemographicDetail>
|
15
|
+
<GovernmentId countryCode="US" issuingAuthority="SSN">333-22-1111</GovernmentId>
|
16
|
+
</DemographicDetail>
|
17
|
+
<PostalAddress>
|
18
|
+
<CountryCode>US</CountryCode>
|
19
|
+
<PostalCode>60750</PostalCode>
|
20
|
+
<Region>IL</Region>
|
21
|
+
<Municipality>FANTASY ISLAND</Municipality>
|
22
|
+
<DeliveryAddress>
|
23
|
+
<AddressLine>899</AddressLine>
|
24
|
+
<StreetName>LINCOLN RD</StreetName>
|
25
|
+
</DeliveryAddress>
|
26
|
+
</PostalAddress>
|
27
|
+
</PersonalData>
|
28
|
+
<Screenings useConfigurationDefaults="no">
|
29
|
+
<!-- Person Search / SSN verification -->
|
30
|
+
<Screening type="personsearch">
|
31
|
+
</Screening>
|
32
|
+
<!-- County Criminal -->
|
33
|
+
<Screening type="criminal" qualifier="county">
|
34
|
+
</Screening>
|
35
|
+
<!-- Federal Criminal -->
|
36
|
+
<Screening type="criminal" qualifier="federal">
|
37
|
+
</Screening>
|
38
|
+
<!-- Instant Nationwide DB check -->
|
39
|
+
<Screening type="criminal" qualifier="national">
|
40
|
+
</Screening>
|
41
|
+
<!-- Manual Statewide Criminal -->
|
42
|
+
<Screening type="criminal" qualifier="statewide">
|
43
|
+
</Screening>
|
44
|
+
<!-- Employment Verification -->
|
45
|
+
<Screening type="employment" verify="yes">
|
46
|
+
<OrganizationName>Burger Shack</OrganizationName>
|
47
|
+
<Title>Fry Cook</Title>
|
48
|
+
<StartDate>2005-05-05</StartDate>
|
49
|
+
<EndDate>2005-06-16</EndDate>
|
50
|
+
<Compensation>6.50/hr</Compensation>
|
51
|
+
<ContactInfo>
|
52
|
+
<PersonName>
|
53
|
+
<FormattedName>Susan Boss</FormattedName>
|
54
|
+
</PersonName>
|
55
|
+
<Telephone>801-123-4567</Telephone>
|
56
|
+
<Fax>801-999-9999</Fax>
|
57
|
+
<EmailAddress>susan@example.com</EmailAddress>
|
58
|
+
<PostalAddress>
|
59
|
+
<PostalCode>84020</PostalCode>
|
60
|
+
<Region>UT</Region>
|
61
|
+
<Municipality>Draper</Municipality>
|
62
|
+
<DeliveryAddress>
|
63
|
+
<AddressLine>1192</AddressLine>
|
64
|
+
<StreetName>Draper Parkway #401</StreetName>
|
65
|
+
</DeliveryAddress>
|
66
|
+
</PostalAddress>
|
67
|
+
</ContactInfo>
|
68
|
+
</Screening>
|
69
|
+
<!-- Education Verification -->
|
70
|
+
<Screening type="education">
|
71
|
+
<Region>UT</Region>
|
72
|
+
<EducationHistory>
|
73
|
+
<SchoolOrInstitution schoolType="university">
|
74
|
+
<SchoolName>UNIVERSITY OF UTAH</SchoolName>
|
75
|
+
<LocationSummary>
|
76
|
+
<Municipality>SALT LAKE CITY</Municipality>
|
77
|
+
<Region>UT</Region>
|
78
|
+
</LocationSummary>
|
79
|
+
<Degree degreeType="bachelors">
|
80
|
+
<DegreeName>COMMUNICATIONS</DegreeName>
|
81
|
+
</Degree>
|
82
|
+
<DatesOfAttendance>
|
83
|
+
<StartDate>
|
84
|
+
<StringDate>2002-09 TO 2006-01</StringDate>
|
85
|
+
</StartDate>
|
86
|
+
</DatesOfAttendance>
|
87
|
+
</SchoolOrInstitution>
|
88
|
+
</EducationHistory>
|
89
|
+
</Screening>
|
90
|
+
<!-- Instant Driving Records -->
|
91
|
+
<Screening type="license" qualifier="imvPersonal">
|
92
|
+
<Region>UT</Region>
|
93
|
+
<SearchLicense>
|
94
|
+
<License>
|
95
|
+
<LicenseNumber>123456789</LicenseNumber>
|
96
|
+
<LicensingAgency>UT</LicensingAgency>
|
97
|
+
<LicenseName>mvPersonal</LicenseName>
|
98
|
+
</License>
|
99
|
+
</SearchLicense>
|
100
|
+
</Screening>
|
101
|
+
|
102
|
+
<AdditionalItems type="x:postback_username">
|
103
|
+
<Text>user</Text>
|
104
|
+
</AdditionalItems>
|
105
|
+
<AdditionalItems type="x:postback_password">
|
106
|
+
<Text>secret</Text>
|
107
|
+
</AdditionalItems>
|
108
|
+
<AdditionalItems type="x:postback_url">
|
109
|
+
<Text>http://127.0.0.1/listen.php</Text>
|
110
|
+
</AdditionalItems>
|
111
|
+
</Screenings>
|
112
|
+
</BackgroundSearchPackage>
|
113
|
+
</BackgroundCheck>
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'mocha'
|
5
|
+
require 'ssci_inc'
|
6
|
+
|
7
|
+
class Test::Unit::TestCase
|
8
|
+
|
9
|
+
def self.should_have_attr_accessor(*args)
|
10
|
+
should "have attr_accessor for #{args.inspect}" do
|
11
|
+
args.each do |a|
|
12
|
+
assert_respond_to subject, a
|
13
|
+
assert_respond_to subject, "#{a}="
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.should_have_attr_reader(*args)
|
19
|
+
should "have attr_reader for #{args.inspect}" do
|
20
|
+
args.each do |a|
|
21
|
+
assert_respond_to subject, a
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.should_call_builder_with(*args)
|
27
|
+
should "should set type and qualifier attributes" do
|
28
|
+
node = mock
|
29
|
+
subject.expects(:builder).
|
30
|
+
with(*args).
|
31
|
+
returns(node)
|
32
|
+
assert_equal node, subject.as_xml
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def assert_xml_attr_equal(node, method_name, attribute_name=method_name)
|
37
|
+
assert_equal subject.send(method_name).to_s,
|
38
|
+
node.at("//@#{attribute_name}").value
|
39
|
+
end
|
40
|
+
|
41
|
+
def assert_xml_text_equal(node, method_name, attribute_name=method_name.to_s.camelize)
|
42
|
+
expected = subject.send(method_name).to_s
|
43
|
+
actual = node.at("//#{attribute_name}").try(:text).to_s
|
44
|
+
#puts "for #{method_name}, assert_equal #{expected}, #{actual}"
|
45
|
+
assert_equal expected, actual
|
46
|
+
end
|
47
|
+
|
48
|
+
TEST_HASH = {
|
49
|
+
:user_name => "username",
|
50
|
+
:password => "password",
|
51
|
+
:type => "My Package",
|
52
|
+
:reference_id => 112233,
|
53
|
+
:reference => "ABC Company Inc.",
|
54
|
+
:given_name => "HANK",
|
55
|
+
:family_name => "MESS",
|
56
|
+
:ssn => "333-22-1111",
|
57
|
+
:date_of_birth => "1960-01-01",
|
58
|
+
:country_code => "US",
|
59
|
+
:postal_code => "60750",
|
60
|
+
:region => "IL",
|
61
|
+
:municipality => "FANTASY ISLAND",
|
62
|
+
:address_line => 899,
|
63
|
+
:street_name => "LINCOLN RD",
|
64
|
+
:postback_url => "http://127.0.0.1/listen.php",
|
65
|
+
:postback_username => "user",
|
66
|
+
:postback_password => "secret",
|
67
|
+
:use_defaults => true
|
68
|
+
}
|
69
|
+
|
70
|
+
TEST_ERROR_RESPONSE = %Q{
|
71
|
+
<BackgroundReports>
|
72
|
+
<BackgroundReportPackage>
|
73
|
+
<ReferenceId>some_id_value</ReferenceId>
|
74
|
+
<Reference>ABC Company Inc.</Reference>
|
75
|
+
<ScreeningStatus>
|
76
|
+
<OrderStatus>x:error</OrderStatus>
|
77
|
+
</ScreeningStatus>
|
78
|
+
<ErrorReport>
|
79
|
+
<ErrorCode>4</ErrorCode>
|
80
|
+
<ErrorDescription>Invalid username and/or password.</ErrorDescription>
|
81
|
+
</ErrorReport>
|
82
|
+
</BackgroundReportPackage>
|
83
|
+
</BackgroundReports>
|
84
|
+
}
|
85
|
+
|
86
|
+
TEST_PENDING_RESPONSE = %Q{
|
87
|
+
<BackgroundReports>
|
88
|
+
<BackgroundReportPackage>
|
89
|
+
<ReferenceId>some_id_value</ReferenceId>
|
90
|
+
<Reference>ABC Company Inc.</Reference>
|
91
|
+
<OrderId>12358</OrderId>
|
92
|
+
<ScreeningStatus>
|
93
|
+
<OrderStatus>x:pending</OrderStatus>
|
94
|
+
</ScreeningStatus>
|
95
|
+
</BackgroundReportPackage>
|
96
|
+
</BackgroundReports>
|
97
|
+
}
|
98
|
+
|
99
|
+
TEST_CALLBACK_RESPONSE = %Q{
|
100
|
+
<BackgroundReports userId="username" password="password">
|
101
|
+
<BackgroundReportPackage>
|
102
|
+
<ReferenceId>some_id_value</ReferenceId>
|
103
|
+
<Reference>ABC Company Inc.</Reference>
|
104
|
+
<OrderId>12358</OrderId>
|
105
|
+
<ScreeningStatus>
|
106
|
+
<OrderStatus flag="FALSE">x:ready</OrderStatus>
|
107
|
+
<ResultStatus>Pass</ResultStatus>
|
108
|
+
</ScreeningStatus>
|
109
|
+
<Screenings>
|
110
|
+
<Screening>
|
111
|
+
<ScreeningResults type="result" mediaType="html" resultType="report">
|
112
|
+
<InternetWebAddress>display.php</InternetWebAddress>
|
113
|
+
</ScreeningResults>
|
114
|
+
</Screening>
|
115
|
+
</Screenings>
|
116
|
+
</BackgroundReportPackage>
|
117
|
+
</BackgroundReports>
|
118
|
+
}
|
119
|
+
|
120
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SsciInc
|
4
|
+
class RequestTest < Test::Unit::TestCase
|
5
|
+
subject do
|
6
|
+
request = Request.new(TEST_HASH)
|
7
|
+
request.alias do |a|
|
8
|
+
a.given_name = "Steve"
|
9
|
+
a.family_name = "Jobs"
|
10
|
+
end
|
11
|
+
request.criminal_county_screen do |screen|
|
12
|
+
screen.region = "WA"
|
13
|
+
screen.county = "KING"
|
14
|
+
end
|
15
|
+
request
|
16
|
+
end
|
17
|
+
|
18
|
+
context "#as_xml" do
|
19
|
+
should "be correctly structured nokogiri builder object" do
|
20
|
+
root_node = subject.as_xml.parent
|
21
|
+
|
22
|
+
# this is seeing if there is an attribute "somewhere" inside
|
23
|
+
# the document that matches this name and value
|
24
|
+
assert_xml_attr_equal root_node, :user_name, :userId
|
25
|
+
assert_xml_attr_equal root_node, :password
|
26
|
+
assert_xml_attr_equal root_node, :type
|
27
|
+
assert_xml_attr_equal root_node, :action
|
28
|
+
assert_xml_attr_equal root_node, :ssn_country_code, :countryCode
|
29
|
+
assert_xml_attr_equal root_node, :issuing_authority, :issuingAuthority
|
30
|
+
assert_equal "yes", root_node.at("//@useConfigurationDefaults").value
|
31
|
+
|
32
|
+
assert_xml_text_equal root_node, :reference_id
|
33
|
+
assert_xml_text_equal root_node, :reference
|
34
|
+
assert_xml_text_equal root_node, :email_address
|
35
|
+
assert_xml_text_equal root_node, :telephone
|
36
|
+
assert_xml_text_equal root_node, :given_name
|
37
|
+
assert_xml_text_equal root_node, :middle_name
|
38
|
+
assert_xml_text_equal root_node, :family_name
|
39
|
+
assert_xml_text_equal root_node, :government_id
|
40
|
+
assert_xml_text_equal root_node, :date_of_birth
|
41
|
+
assert_xml_text_equal root_node, :country_code
|
42
|
+
assert_xml_text_equal root_node, :postal_code
|
43
|
+
assert_xml_text_equal root_node, :region
|
44
|
+
assert_xml_text_equal root_node, :municipality
|
45
|
+
assert_xml_text_equal root_node, :address_line
|
46
|
+
assert_xml_text_equal root_node, :street_name
|
47
|
+
|
48
|
+
item_nodes = root_node.xpath("//AdditionalItems")
|
49
|
+
subject.additional_items.each do |k,v|
|
50
|
+
next if v.nil?
|
51
|
+
attr_name = "x:#{k}"
|
52
|
+
item_node = item_nodes.at("[@type='#{attr_name}']")
|
53
|
+
assert_not_nil item_node
|
54
|
+
assert_equal v.to_s, item_node.at(".//Text").try(:text)
|
55
|
+
end
|
56
|
+
|
57
|
+
region = root_node.at("//Screening//Region").text
|
58
|
+
county = root_node.at("//Screening//County").text
|
59
|
+
assert_equal "WA", region
|
60
|
+
assert_equal "KING", county
|
61
|
+
|
62
|
+
alias_given_name = root_node.at("//Aliases//PersonName//GivenName").text
|
63
|
+
alias_family_name = root_node.at("//Aliases//PersonName//FamilyName").text
|
64
|
+
assert_equal "Steve", alias_given_name
|
65
|
+
assert_equal "Jobs", alias_family_name
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "#submit" do
|
70
|
+
should "send a post request and wrap the response" do
|
71
|
+
response = mock
|
72
|
+
request_xml = "request xml"
|
73
|
+
response_xml = "reponse_xml"
|
74
|
+
http_response = mock(:parsed_response => response_xml)
|
75
|
+
subject.expects(:to_xml).returns(request_xml)
|
76
|
+
HTTParty::Request.any_instance.stubs(perform: http_response)
|
77
|
+
Response.expects(:new).with(response_xml).returns(response)
|
78
|
+
assert_equal response, subject.submit
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
should_have_attr_accessor :config, :base_uri, :user_name, :password
|
83
|
+
should_have_attr_accessor :action, :type, :reference_id, :reference
|
84
|
+
should_have_attr_accessor :email_address, :telephone
|
85
|
+
should_have_attr_accessor :given_name, :middle_name, :family_name
|
86
|
+
should_have_attr_accessor :government_id, :ssn_country_code,
|
87
|
+
:issuing_authority, :date_of_birth, :country_code, :postal_code, :region,
|
88
|
+
:municipality, :address_line, :street_name
|
89
|
+
should_have_attr_accessor :use_defaults
|
90
|
+
should_have_attr_accessor *Request::ADDITIONAL_ITEMS
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SsciInc
|
4
|
+
class ResponseTest < Test::Unit::TestCase
|
5
|
+
subject { Response.new(TEST_ERROR_RESPONSE) }
|
6
|
+
|
7
|
+
should_have_attr_reader :user_id, :password, :reference_id,
|
8
|
+
:reference, :order_id, :order_status
|
9
|
+
should_have_attr_reader :error_code, :error_description
|
10
|
+
should_have_attr_reader :result_status,
|
11
|
+
:order_status_flag,
|
12
|
+
:screening_results_type,
|
13
|
+
:screening_results_media_type,
|
14
|
+
:screening_results_result_type,
|
15
|
+
:result_url
|
16
|
+
should_have_attr_reader :data
|
17
|
+
|
18
|
+
context "#new" do
|
19
|
+
context "error response" do
|
20
|
+
subject { Response.new(TEST_ERROR_RESPONSE) }
|
21
|
+
|
22
|
+
should "have populated error attributes" do
|
23
|
+
assert_equal "x:error", subject.order_status
|
24
|
+
assert_equal "4", subject.error_code
|
25
|
+
assert_equal "Invalid username and/or password.",
|
26
|
+
subject.error_description
|
27
|
+
|
28
|
+
assert_equal "some_id_value", subject.reference_id
|
29
|
+
assert_equal "ABC Company Inc.", subject.reference
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "pending response" do
|
34
|
+
subject { Response.new(TEST_PENDING_RESPONSE) }
|
35
|
+
|
36
|
+
should "have populated order status" do
|
37
|
+
assert_equal "x:pending", subject.order_status
|
38
|
+
assert_equal "12358", subject.order_id
|
39
|
+
|
40
|
+
assert_equal "some_id_value", subject.reference_id
|
41
|
+
assert_equal "ABC Company Inc.", subject.reference
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "callback response" do
|
46
|
+
subject { Response.new(TEST_CALLBACK_RESPONSE) }
|
47
|
+
|
48
|
+
should "have a result status and result info" do
|
49
|
+
assert_equal "x:ready", subject.order_status
|
50
|
+
assert_equal "Pass", subject.result_status
|
51
|
+
assert_equal "FALSE", subject.order_status_flag
|
52
|
+
assert_equal "result", subject.screening_results_type
|
53
|
+
assert_equal "html", subject.screening_results_media_type
|
54
|
+
assert_equal "report", subject.screening_results_result_type
|
55
|
+
assert_equal "display.php", subject.result_url
|
56
|
+
|
57
|
+
assert_equal "username", subject.user_id
|
58
|
+
assert_equal "password", subject.password
|
59
|
+
|
60
|
+
assert_equal "12358", subject.order_id
|
61
|
+
assert_equal "some_id_value", subject.reference_id
|
62
|
+
assert_equal "ABC Company Inc.", subject.reference
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ScreenUsingModel
|
4
|
+
include SsciInc::Screening::Model
|
5
|
+
|
6
|
+
attr_accessor :a, :b, :c
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
module SsciInc
|
11
|
+
module Screening
|
12
|
+
class ModelTest < Test::Unit::TestCase
|
13
|
+
subject { ScreenUsingModel.new }
|
14
|
+
|
15
|
+
context "#to_xml" do
|
16
|
+
should "call as_xml and to_xml on that object" do
|
17
|
+
xml = "<a>woot</a>"
|
18
|
+
subject.expects(:as_xml).returns(mock(:to_xml => xml))
|
19
|
+
assert_equal xml, subject.to_xml
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "#builder" do
|
24
|
+
should "build a Screening xml node with supplied attributes" do
|
25
|
+
node = mock
|
26
|
+
attributes = {:a => "a"}
|
27
|
+
Nokogiri::XML::Builder.any_instance.expects(:Screening).
|
28
|
+
with(attributes)
|
29
|
+
Nokogiri::XML::Builder.any_instance.expects(:parent => mock(
|
30
|
+
:root => node))
|
31
|
+
assert_equal node, subject.builder(attributes)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|