ssci_inc 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +26 -0
  3. data/.octopolo.yml +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +22 -0
  7. data/CHANGELOG.markdown +0 -0
  8. data/Gemfile +3 -0
  9. data/README.md +66 -0
  10. data/Rakefile +26 -0
  11. data/lib/ssci_inc/configuration.rb +62 -0
  12. data/lib/ssci_inc/dsl.rb +30 -0
  13. data/lib/ssci_inc/person_name.rb +29 -0
  14. data/lib/ssci_inc/request.rb +196 -0
  15. data/lib/ssci_inc/response.rb +44 -0
  16. data/lib/ssci_inc/screening/civil_county.rb +17 -0
  17. data/lib/ssci_inc/screening/credit.rb +16 -0
  18. data/lib/ssci_inc/screening/criminal_county.rb +17 -0
  19. data/lib/ssci_inc/screening/criminal_federal.rb +17 -0
  20. data/lib/ssci_inc/screening/criminal_security.rb +12 -0
  21. data/lib/ssci_inc/screening/criminal_state.rb +16 -0
  22. data/lib/ssci_inc/screening/eviction.rb +16 -0
  23. data/lib/ssci_inc/screening/model.rb +27 -0
  24. data/lib/ssci_inc/screening/person_search.rb +16 -0
  25. data/lib/ssci_inc/version.rb +3 -0
  26. data/lib/ssci_inc.rb +19 -0
  27. data/ssci_inc.gemspec +32 -0
  28. data/test/integration/initial_request_test.rb +21 -0
  29. data/test/test-updated.xml +113 -0
  30. data/test/test_helper.rb +120 -0
  31. data/test/unit/request_test.rb +93 -0
  32. data/test/unit/response_test.rb +68 -0
  33. data/test/unit/screening/civil_county_test.rb +12 -0
  34. data/test/unit/screening/credit_test.rb +12 -0
  35. data/test/unit/screening/criminal_county_test.rb +12 -0
  36. data/test/unit/screening/criminal_federal_test.rb +12 -0
  37. data/test/unit/screening/criminal_security_test.rb +11 -0
  38. data/test/unit/screening/criminal_state_test.rb +12 -0
  39. data/test/unit/screening/eviction_test.rb +11 -0
  40. data/test/unit/screening/model_test.rb +37 -0
  41. data/test/unit/screening/person_search_test.rb +11 -0
  42. metadata +233 -0
@@ -0,0 +1,3 @@
1
+ module SsciInc
2
+ VERSION = '0.1.0'
3
+ end
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>
@@ -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,12 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class CivilCountyTest < Test::Unit::TestCase
6
+
7
+ should_have_attr_accessor :region, :county
8
+ should_call_builder_with(:type => "civil", :qualifier => "county")
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class CreditTest < Test::Unit::TestCase
6
+
7
+ should_have_attr_accessor :score, :fraud, :vendor
8
+ should_call_builder_with(:type => "credit")
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class CriminalCountyTest < Test::Unit::TestCase
6
+
7
+ should_have_attr_accessor :region, :county
8
+ should_call_builder_with(:type => "criminal", :qualifier => "county")
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class CriminalFederalTest < Test::Unit::TestCase
6
+
7
+ should_have_attr_accessor :region, :district
8
+ should_call_builder_with(:type => "criminal", :qualifier => "federal")
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class CriminalSecurityTest < Test::Unit::TestCase
6
+
7
+ should_call_builder_with(:type => "criminal", :qualifier => "security")
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class CriminalStateTest < Test::Unit::TestCase
6
+
7
+ should_have_attr_accessor :region
8
+ should_call_builder_with(:type => "criminal", :qualifier => "statewide")
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class EvictionTest < Test::Unit::TestCase
6
+
7
+ should_have_attr_accessor :region
8
+
9
+ end
10
+ end
11
+ 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
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ module SsciInc
4
+ module Screening
5
+ class PersonSearchTest < Test::Unit::TestCase
6
+
7
+ should_have_attr_accessor :vendor
8
+
9
+ end
10
+ end
11
+ end