Skip to content

Commit a7779b9

Browse files
authored
Merge pull request #34 from checkr/add-support-packages-programs
Add support for Packages and Programs
2 parents 2ca2249 + 276c84d commit a7779b9

10 files changed

Lines changed: 256 additions & 4 deletions

File tree

Changelog.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## 1.3.0 (2018-01-19)
2+
3+
Features:
4+
5+
- Add Package
6+
- Add Program
7+
18
## 1.2.1 (2017-10-25)
29

310
Fixes:

lib/checkr.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
require 'checkr/invitation'
2929
require 'checkr/motor_vehicle_report'
3030
require 'checkr/national_criminal_search'
31+
require 'checkr/package'
32+
require 'checkr/program'
3133
require 'checkr/report'
3234
require 'checkr/report_list'
3335
require 'checkr/sex_offender_search'

lib/checkr/package.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module Checkr
2+
class Package < APIResource
3+
4+
attribute :name
5+
attribute :slug
6+
attribute :price
7+
attribute :screenings
8+
9+
api_class_method :all, :get, :constructor => APIList.constructor(:Geo)
10+
api_class_method :retrieve, :get, ":path/:id", :arguments => [:id]
11+
api_class_method :create, :post
12+
13+
def self.path
14+
"/v1/packages"
15+
end
16+
17+
APIClass.register_subclass(self, 'package')
18+
end
19+
end

lib/checkr/program.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module Checkr
2+
class Program < APIResource
3+
4+
attribute :name
5+
attribute :created_at
6+
attribute :deleted_at
7+
attribute :geos, APIList.constructor(:Geo)
8+
attribute_writer_alias :geo_ids, :geos
9+
attribute :packages, APIList.constructor(:Package)
10+
attribute_writer_alias :package_ids, :packages
11+
12+
api_class_method :all, :get, :constructor => APIList.constructor(:Program)
13+
api_class_method :retrieve, :get, ":path/:id", :arguments => [:id]
14+
api_class_method :create, :post
15+
16+
def self.path
17+
"/v1/programs"
18+
end
19+
20+
APIClass.register_subclass(self, 'program')
21+
end
22+
end

lib/checkr/screening.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Checkr
2+
class Screening < APIResource
3+
4+
attribute :type
5+
attribute :subtype
6+
7+
APIClass.register_subclass(self, "screening")
8+
end
9+
end

lib/checkr/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module Checkr
2-
VERSION = '1.2.1'.freeze
2+
VERSION = '1.3.0'.freeze
33
end

tasks/api_test.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,4 @@ def run_motor_vehicle_report_tests(consider, clear)
186186

187187
motor_vehicle_report
188188
end
189-
190-
191-
192189
end

test/checkr/package_test.rb

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
require File.expand_path('../../test_helper', __FILE__)
2+
3+
module Checkr
4+
class PackageTest < Test::Unit::TestCase
5+
setup do
6+
@package_url = "#{Checkr.api_base}/v1/packages"
7+
end
8+
9+
context 'Package class' do
10+
should 'be retrieveable' do
11+
id = 'package_id'
12+
@mock.expects(:get).once.with("#{@package_url}/#{id}", anything, anything)
13+
.returns(test_response(test_package))
14+
package = Package.retrieve(id)
15+
assert(package.is_a?(Package))
16+
end
17+
18+
should 'be createable' do
19+
@mock.expects(:post).once.with(@package_url, anything, test_package)
20+
.returns(test_response(test_package))
21+
package = Package.create(test_package)
22+
assert(package.is_a?(Package))
23+
assert_equal(test_package[:id], package.id)
24+
end
25+
end
26+
27+
context 'Package instance' do
28+
should 'be refreshable' do
29+
@mock.expects(:get).once.with("#{@package_url}/#{test_package[:id]}", anything, anything)
30+
.returns(test_response(test_package))
31+
package = Package.new(test_package[:id])
32+
package.refresh
33+
assert_equal(test_package[:name], package.name)
34+
end
35+
end
36+
37+
context 'Retrieved Package instance' do
38+
setup do
39+
@mock.expects(:get).once.returns(test_response(test_package))
40+
@package = Package.retrieve('package_id')
41+
end
42+
43+
should 'have the id attribute' do
44+
assert_equal(test_package[:id], @package.id)
45+
end
46+
47+
should 'have the object attribute' do
48+
assert_equal(test_package[:object], @package.object)
49+
end
50+
51+
should 'have the uri attribute' do
52+
assert_equal(test_package[:uri], @package.uri)
53+
end
54+
55+
should 'have the created_at attribute' do
56+
assert_equal(test_package[:created_at], @package.created_at)
57+
end
58+
59+
should 'have the name attribute' do
60+
assert_equal(test_package[:name], @package.name)
61+
end
62+
63+
should 'have the slug attribute' do
64+
assert_equal(test_package[:slug], @package.slug)
65+
end
66+
67+
should 'have the price attribute' do
68+
assert_equal(test_package[:price], @package.price)
69+
end
70+
71+
should 'have screenings attribute' do
72+
assert_equal(test_package[:screenings], @package.screenings)
73+
end
74+
end
75+
76+
should 'be registered' do
77+
assert(APIClass.subclasses.include?(Package))
78+
assert_equal(Package, APIClass.subclass_fetch('package'))
79+
end
80+
81+
end
82+
end

test/checkr/program_test.rb

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
require File.expand_path('../../test_helper', __FILE__)
2+
3+
module Checkr
4+
class ProgramTest < Test::Unit::TestCase
5+
setup do
6+
@program_url = "#{Checkr.api_base}/v1/programs"
7+
end
8+
9+
context 'Program class' do
10+
should 'be retrieveable' do
11+
id = 'program_id'
12+
@mock.expects(:get).once.with("#{@program_url}/#{id}", anything, anything)
13+
.returns(test_response(test_program))
14+
program = Program.retrieve(id)
15+
assert(program.is_a?(Program))
16+
end
17+
18+
should 'be createable' do
19+
@mock.expects(:post).once.with(@program_url, anything, test_program)
20+
.returns(test_response(test_program))
21+
program = Program.create(test_program)
22+
assert(program.is_a?(Program))
23+
assert_equal(program.id, test_program[:id])
24+
end
25+
end
26+
27+
context 'Program instance' do
28+
should 'be refreshable' do
29+
@mock.expects(:get).once.with("#{@program_url}/#{test_program[:id]}", anything, anything)
30+
.returns(test_response(test_program))
31+
program = Program.new(test_program[:id])
32+
program.refresh
33+
assert_equal(program.name, test_program[:name])
34+
end
35+
end
36+
37+
context 'Retrieved Program instance' do
38+
setup do
39+
@mock.expects(:get).once.returns(test_response(test_program))
40+
@program = Program.retrieve('program_id')
41+
end
42+
43+
should 'have the id attribute' do
44+
assert_equal(@program.id, test_program[:id])
45+
end
46+
47+
should 'have the object attribute' do
48+
assert_equal(@program.object, test_program[:object])
49+
end
50+
51+
should 'have the uri attribute' do
52+
assert_equal(@program.uri, test_program[:uri])
53+
end
54+
55+
should 'have the created_at attribute' do
56+
assert_equal(@program.created_at, test_program[:created_at])
57+
end
58+
59+
should 'have the deleted_at attribute' do
60+
assert_equal(@program.deleted_at, test_program[:deleted_at])
61+
end
62+
63+
should 'have the name attribute' do
64+
assert_equal(@program.name, test_program[:name])
65+
end
66+
67+
should 'have the geo_ids attribute' do
68+
assert_equal(@program.geos.json, test_program[:geo_ids])
69+
assert(@program.geos.is_a?(APIList))
70+
end
71+
72+
# should 'have the packages attribute' do
73+
# assert(@candidate.packages.any?)
74+
# assert(@candidate.packages.is_a?(PackageList))
75+
# end
76+
77+
should 'have the package_ids attribute' do
78+
assert_equal(@program.packages.json, test_program[:package_ids])
79+
assert(@program.packages.is_a?(APIList))
80+
end
81+
end
82+
83+
should 'be registered' do
84+
assert(APIClass.subclasses.include?(Program))
85+
assert_equal(Program, APIClass.subclass_fetch('program'))
86+
end
87+
88+
end
89+
end

test/test_data.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,31 @@ def test_geo
125125
:state=>"CA"}
126126
end
127127

128+
def test_package
129+
{:id=>"e44aa283528e6fde7d542194",
130+
:object=>"package",
131+
:uri=>"/v1/packages/e44aa283528e6fde7d542194",
132+
:created_at=>"2018-01-18T12:34:00Z",
133+
:name=>"Criminal Pro",
134+
:slug=>"criminal_pro",
135+
:price=>"6500",
136+
:screenings=>
137+
[{:type=>"ssn_trace",
138+
:subtype=>nil},
139+
{:type=>"county_criminal_search",
140+
:subtype=>"7years"}]}
141+
end
142+
143+
def test_program
144+
{:id=>"e44aa283528e6fde7d542194",
145+
:object=>"program",
146+
:uri=>"/v1/programs/e44aa283528e6fde7d542194",
147+
:created_at=>"2018-01-18T12:34:00Z",
148+
:deleted_at=>"2018-01-18T12:34:00Z",
149+
:geo_ids=>["cbc37748bc6a45b41af5c3f5"],
150+
:package_ids=>["a57a0cd15965a585ff7d5d35"]}
151+
end
152+
128153
def test_ssn_trace
129154
{:id=>"539fd88c101897f7cd000001",
130155
:object=>"ssn_trace",

0 commit comments

Comments
 (0)