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.
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