career_builder 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{career_builder}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Guterl"]
12
- s.date = %q{2011-03-31}
12
+ s.date = %q{2011-04-04}
13
13
  s.description = %q{Ruby wrapper for the CareerBuilder V2 HTTP XML API}
14
14
  s.email = %q{mguterl@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -47,9 +47,11 @@ Gem::Specification.new do |s|
47
47
  "lib/career_builder/errors.rb",
48
48
  "lib/career_builder/resume.rb",
49
49
  "lib/career_builder/resume/lazy_collection.rb",
50
- "spec/career_builder/client_spec.rb",
50
+ "spec/career_builder/client/advanced_resume_search_spec.rb",
51
+ "spec/career_builder/client/authentication_spec.rb",
52
+ "spec/career_builder/client/get_resume_spec.rb",
53
+ "spec/career_builder/client/resume_actions_remaining_today_spec.rb",
51
54
  "spec/career_builder/resume/lazy_collection_spec.rb",
52
- "spec/career_builder/resume_spec.rb",
53
55
  "spec/career_builder_spec.rb",
54
56
  "spec/spec.opts",
55
57
  "spec/spec_helper.rb",
@@ -60,9 +62,11 @@ Gem::Specification.new do |s|
60
62
  s.rubygems_version = %q{1.3.7}
61
63
  s.summary = %q{Ruby wrapper for the CareerBuilder V2 API}
62
64
  s.test_files = [
63
- "spec/career_builder/client_spec.rb",
65
+ "spec/career_builder/client/advanced_resume_search_spec.rb",
66
+ "spec/career_builder/client/authentication_spec.rb",
67
+ "spec/career_builder/client/get_resume_spec.rb",
68
+ "spec/career_builder/client/resume_actions_remaining_today_spec.rb",
64
69
  "spec/career_builder/resume/lazy_collection_spec.rb",
65
- "spec/career_builder/resume_spec.rb",
66
70
  "spec/career_builder_spec.rb",
67
71
  "spec/spec_helper.rb",
68
72
  "spec/support/webmock.rb"
@@ -7,28 +7,36 @@ module CareerBuilder
7
7
  def initialize(client, options)
8
8
  @client = client
9
9
  @search_options = options
10
+ @current_page = @search_options[:page] || 1
10
11
  end
11
12
 
12
13
  def each
13
- current_page = search_options[:page] || 1
14
-
15
- search = client.advanced_resume_search(search_options.merge(:page_number => current_page, :rows_per_page => 500))
16
-
17
- results = search.results
14
+ results = results_for @current_page
18
15
 
19
16
  loop do
20
17
  results.each do |resume|
21
18
  yield Resume.new(client, resume)
22
19
  end
23
20
 
24
- current_page += 1
21
+ @current_page += 1
25
22
 
26
- search = client.advanced_resume_search(search_options.merge(:page_number => current_page, :rows_per_page => 500))
27
- results = search.results
23
+ results = results_for @current_page
28
24
  break if results.empty?
29
25
  end
30
26
  end
31
27
 
28
+ private
29
+
30
+ def results_for(page)
31
+ attempts = 0
32
+ search = client.advanced_resume_search(search_options.merge(:page_number => page, :rows_per_page => 500))
33
+ search.results
34
+ rescue Errno::ECONNRESET => e
35
+ attempts += 1
36
+ retry if attempts < 5
37
+ raise e
38
+ end
39
+
32
40
  end
33
41
 
34
42
  end
@@ -0,0 +1,116 @@
1
+ require 'spec_helper'
2
+
3
+ describe CareerBuilder::Client do
4
+
5
+ describe "#advanced_resume_search" do
6
+ context "with invalid credentials" do
7
+ before do
8
+ @client = CareerBuilder::Client.new("valid_email", "invalid_password")
9
+ @client.stub(:authenticate).and_return(false)
10
+ end
11
+
12
+ context "with valid options" do
13
+ it 'should raise InvalidCredentials' do
14
+ expect {
15
+ @client.advanced_resume_search(:keywords => "Ruby")
16
+ }.to raise_error(CareerBuilder::InvalidCredentials)
17
+ end
18
+ end
19
+
20
+ context "with invalid options" do
21
+ it 'should raise ArgumentError' do
22
+ expect {
23
+ @client.advanced_resume_search(:foo => "bar")
24
+ }.to raise_error(ArgumentError)
25
+ end
26
+ end
27
+ end
28
+
29
+ context "with valid credentials" do
30
+ before do
31
+ @client = CareerBuilder::Client.new("valid_email", "valid_password")
32
+ @client.stub(:session_token).and_return(42)
33
+ @client.stub(:authenticate).and_return(true)
34
+ end
35
+
36
+ context "with valid options" do
37
+ before do
38
+ stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/V2_AdvancedResumeSearch").with(:body => 'Packet=%3cPacket%3e%3cSessionToken%3e42%3c%2fSessionToken%3e%3cKeywords%3eRuby%3c%2fKeywords%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;Errors /&gt;&lt;PageNumber&gt;1&lt;/PageNumber&gt;&lt;SearchTime&gt;06/25/2010 12:03:14&lt;/SearchTime&gt;&lt;FirstRec&gt;1&lt;/FirstRec&gt;&lt;LastRec&gt;100&lt;/LastRec&gt;&lt;Hits&gt;3&lt;/Hits&gt;&lt;MaxPage&gt;1&lt;/MaxPage&gt;&lt;Results&gt;&lt;ResumeResultItem_V3&gt;&lt;ContactEmail&gt;Rhd4G067G4JVTLW99H7_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com&lt;/ContactEmail&gt;&lt;ContactName&gt;Rebecca Bernard&lt;/ContactName&gt;&lt;HomeLocation&gt;US-OH-Milford&lt;/HomeLocation&gt;&lt;LastUpdate&gt;2010/5/13&lt;/LastUpdate&gt;&lt;ResumeTitle&gt;BERNARD_SYSTEMS_ENGINEER&lt;/ResumeTitle&gt;&lt;JobTitle&gt;BERNARD_SYSTEMS_ENGINEER&lt;/JobTitle&gt;&lt;RecentEmployer&gt;TATA CONSULTANCY SERVICES&lt;/RecentEmployer&gt;&lt;RecentJobTitle&gt;CONSULTANCY SERVICES- Systems Engineer&lt;/RecentJobTitle&gt;&lt;RecentPay&gt;0&lt;/RecentPay&gt;&lt;ResumeID&gt;Rhd4G067G4JVTLW99H7&lt;/ResumeID&gt;&lt;UserDID&gt;U7X86R61VVKS4FWS03T&lt;/UserDID&gt;&lt;ContactEmailMD5&gt;139013c2fa2b945bdc340f8a698b009e&lt;/ContactEmailMD5&gt;&lt;/ResumeResultItem_V3&gt;&lt;ResumeResultItem_V3&gt;&lt;ContactEmail&gt;Rhe7TZ764LHG1GQTPSM_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com&lt;/ContactEmail&gt;&lt;ContactName&gt;chris grader&lt;/ContactName&gt;&lt;HomeLocation&gt;US-OH-Milford&lt;/HomeLocation&gt;&lt;LastUpdate&gt;2010/6/4&lt;/LastUpdate&gt;&lt;ResumeTitle&gt;Chris Grader resume&lt;/ResumeTitle&gt;&lt;JobTitle&gt;Chris Grader resume&lt;/JobTitle&gt;&lt;RecentEmployer&gt;Millennial Medical, Inc&lt;/RecentEmployer&gt;&lt;RecentJobTitle&gt;Regional Sales Manager/Midwest Distributor&lt;/RecentJobTitle&gt;&lt;RecentPay&gt;0&lt;/RecentPay&gt;&lt;ResumeID&gt;Rhe7TZ764LHG1GQTPSM&lt;/ResumeID&gt;&lt;UserDID&gt;U346V1MKGCHPGCF9S8&lt;/UserDID&gt;&lt;ContactEmailMD5&gt;cfba57bf848b78211d99348cf0f90879&lt;/ContactEmailMD5&gt;&lt;/ResumeResultItem_V3&gt;&lt;ResumeResultItem_V3&gt;&lt;ContactEmail&gt;RH52G867678F7GH02Q3_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com&lt;/ContactEmail&gt;&lt;ContactName&gt;Jeffrey Davis&lt;/ContactName&gt;&lt;HomeLocation&gt;US-OH-Goshen&lt;/HomeLocation&gt;&lt;LastUpdate&gt;2010/5/23&lt;/LastUpdate&gt;&lt;ResumeTitle&gt;Warehouse Distribution Specialist&lt;/ResumeTitle&gt;&lt;JobTitle&gt;Warehouse Distribution Specialist&lt;/JobTitle&gt;&lt;RecentEmployer&gt;OWENS &amp;amp; MINOR&lt;/RecentEmployer&gt;&lt;RecentJobTitle&gt;Warehouse Lead Supervisor&lt;/RecentJobTitle&gt;&lt;RecentPay&gt;35776&lt;/RecentPay&gt;&lt;ResumeID&gt;RH52G867678F7GH02Q3&lt;/ResumeID&gt;&lt;UserDID&gt;U1C29V68M3YM95SP0XK&lt;/UserDID&gt;&lt;ContactEmailMD5&gt;e814ebaa93aae5c3719e27d26d5af917&lt;/ContactEmailMD5&gt;&lt;/ResumeResultItem_V3&gt;&lt;/Results&gt;&lt;/Packet&gt;</string>")
39
+ @search = @client.advanced_resume_search(:keywords => "Ruby")
40
+ end
41
+
42
+ it 'should have the correct page number' do
43
+ @search.page_number.should == 1
44
+ end
45
+
46
+ it 'should have the correct search time' do
47
+ @search.search_time.should == Time.mktime(2010, 6, 25, 12, 3, 14)
48
+ end
49
+
50
+ it 'should return the correct number of hits' do
51
+ @search.hits.should == 3
52
+ end
53
+
54
+ it 'should return the correct max page' do
55
+ @search.max_page.should == 1
56
+ end
57
+
58
+ describe "#results" do
59
+ before do
60
+ @results = @search.results
61
+ @result = @results.first
62
+ end
63
+
64
+ it 'should return the correct contact email' do
65
+ @result.contact_email.should == "Rhd4G067G4JVTLW99H7_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com"
66
+ end
67
+
68
+ it 'should return the correct contact name' do
69
+ @result.contact_name.should == "Rebecca Bernard"
70
+ end
71
+
72
+ it 'should return the correct home location' do
73
+ @result.home_location.should == "US-OH-Milford"
74
+ end
75
+
76
+ it 'should return the correct last update' do
77
+ @result.last_update.should == Date.new(2010, 5, 13)
78
+ end
79
+
80
+ it 'should return the correct resume title' do
81
+ @result.title.should == "BERNARD_SYSTEMS_ENGINEER"
82
+ end
83
+
84
+ it 'should return the correct job title' do
85
+ @result.job_title.should == "BERNARD_SYSTEMS_ENGINEER"
86
+ end
87
+
88
+ it 'should return the correct recent pay' do
89
+ @result.recent_pay.should == 0
90
+ end
91
+
92
+ it 'should return the correct id' do
93
+ @result.id.should == "Rhd4G067G4JVTLW99H7"
94
+ end
95
+
96
+ it 'should return the correct user id' do
97
+ @result.user_did.should == "U7X86R61VVKS4FWS03T"
98
+ end
99
+
100
+ it 'should return the correct contact email md5' do
101
+ @result.contact_email_md5.should == "139013c2fa2b945bdc340f8a698b009e"
102
+ end
103
+ end
104
+ end
105
+
106
+ context "with invalid options" do
107
+ it 'should raise ArgumentError' do
108
+ expect {
109
+ @client.advanced_resume_search(:foo => "bar")
110
+ }.to raise_error(ArgumentError)
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe CareerBuilder::Client do
4
+
5
+ describe "#authenticate" do
6
+ context "with valid credentials" do
7
+ before do
8
+ stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/BeginSessionV2").with(:body => 'Packet=%3cPacket%3e%3cEmail%3evalid_email%3c%2fEmail%3e%3cPassword%3evalid_password%3c%2fPassword%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;Errors /&gt;&lt;SessionToken&gt;42df77a98a874c6ca8644cf8e8ceffa6-330779842-RY-4&lt;/SessionToken&gt;&lt;/Packet&gt;</string>")
9
+ @client = CareerBuilder::Client.new("valid_email", "valid_password")
10
+ end
11
+
12
+ it 'should return true' do
13
+ @client.authenticate.should be_true
14
+ end
15
+
16
+ it 'should be authenticated' do
17
+ @client.authenticate
18
+ @client.should be_authenticated
19
+ end
20
+ end
21
+
22
+ context "with invalid credentials" do
23
+ before do
24
+ stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/BeginSessionV2").with(:body => 'Packet=%3cPacket%3e%3cEmail%3evalid_email%3c%2fEmail%3e%3cPassword%3einvalid_password%3c%2fPassword%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;Errors&gt;&lt;CBError&gt;&lt;Code&gt;300&lt;/Code&gt;&lt;Text&gt;300|Email (ryan@recruitmilitary.com) and password (AZG24N4) could not be validated.&lt;/Text&gt;&lt;/CBError&gt;&lt;/Errors&gt;&lt;SessionToken&gt;Invalid&lt;/SessionToken&gt;&lt;/Packet&gt;</string>")
25
+ @client = CareerBuilder::Client.new("valid_email", "invalid_password")
26
+ end
27
+
28
+ it 'should return false' do
29
+ @client.authenticate.should be_false
30
+ end
31
+
32
+ it 'should not be authenticated' do
33
+ @client.authenticate
34
+ @client.should_not be_authenticated
35
+ end
36
+ end
37
+ end
38
+
39
+ end
@@ -2,206 +2,31 @@ require 'spec_helper'
2
2
 
3
3
  describe CareerBuilder::Client do
4
4
 
5
- describe "#authenticate" do
6
-
7
- context "with valid credentials" do
8
-
9
- before do
10
- stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/BeginSessionV2").with(:body => 'Packet=%3cPacket%3e%3cEmail%3evalid_email%3c%2fEmail%3e%3cPassword%3evalid_password%3c%2fPassword%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;Errors /&gt;&lt;SessionToken&gt;42df77a98a874c6ca8644cf8e8ceffa6-330779842-RY-4&lt;/SessionToken&gt;&lt;/Packet&gt;</string>")
11
- @client = CareerBuilder::Client.new("valid_email", "valid_password")
12
- end
13
-
14
- it 'should return true' do
15
- @client.authenticate.should be_true
16
- end
17
-
18
- it 'should be authenticated' do
19
- @client.authenticate
20
- @client.should be_authenticated
21
- end
22
-
23
- end
24
-
5
+ describe "#get_resume" do
25
6
  context "with invalid credentials" do
26
-
27
- before do
28
- stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/BeginSessionV2").with(:body => 'Packet=%3cPacket%3e%3cEmail%3evalid_email%3c%2fEmail%3e%3cPassword%3einvalid_password%3c%2fPassword%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;Errors&gt;&lt;CBError&gt;&lt;Code&gt;300&lt;/Code&gt;&lt;Text&gt;300|Email (ryan@recruitmilitary.com) and password (AZG24N4) could not be validated.&lt;/Text&gt;&lt;/CBError&gt;&lt;/Errors&gt;&lt;SessionToken&gt;Invalid&lt;/SessionToken&gt;&lt;/Packet&gt;</string>")
29
- @client = CareerBuilder::Client.new("valid_email", "invalid_password")
30
- end
31
-
32
- it 'should return false' do
33
- @client.authenticate.should be_false
34
- end
35
-
36
- it 'should not be authenticated' do
37
- @client.authenticate
38
- @client.should_not be_authenticated
39
- end
40
-
41
- end
42
-
43
- end
44
-
45
- describe "#advanced_resume_search" do
46
-
47
- context "with invalid credentials" do
48
-
49
7
  before do
50
8
  @client = CareerBuilder::Client.new("valid_email", "invalid_password")
51
9
  @client.stub(:authenticate).and_return(false)
52
10
  end
53
11
 
54
12
  context "with valid options" do
55
-
56
- it 'should raise InvalidCredentials' do
57
- expect {
58
- @client.advanced_resume_search(:keywords => "Ruby")
59
- }.to raise_error(CareerBuilder::InvalidCredentials)
60
- end
61
-
62
- end
63
-
64
- context "with invalid options" do
65
-
66
- it 'should raise ArgumentError' do
67
- expect {
68
- @client.advanced_resume_search(:foo => "bar")
69
- }.to raise_error(ArgumentError)
70
- end
71
-
72
- end
73
-
74
- end
75
-
76
- context "with valid credentials" do
77
-
78
- before do
79
- @client = CareerBuilder::Client.new("valid_email", "valid_password")
80
- @client.stub(:session_token).and_return(42)
81
- @client.stub(:authenticate).and_return(true)
82
- end
83
-
84
- context "with valid options" do
85
-
86
- before do
87
- stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/V2_AdvancedResumeSearch").with(:body => 'Packet=%3cPacket%3e%3cSessionToken%3e42%3c%2fSessionToken%3e%3cKeywords%3eRuby%3c%2fKeywords%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;Errors /&gt;&lt;PageNumber&gt;1&lt;/PageNumber&gt;&lt;SearchTime&gt;06/25/2010 12:03:14&lt;/SearchTime&gt;&lt;FirstRec&gt;1&lt;/FirstRec&gt;&lt;LastRec&gt;100&lt;/LastRec&gt;&lt;Hits&gt;3&lt;/Hits&gt;&lt;MaxPage&gt;1&lt;/MaxPage&gt;&lt;Results&gt;&lt;ResumeResultItem_V3&gt;&lt;ContactEmail&gt;Rhd4G067G4JVTLW99H7_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com&lt;/ContactEmail&gt;&lt;ContactName&gt;Rebecca Bernard&lt;/ContactName&gt;&lt;HomeLocation&gt;US-OH-Milford&lt;/HomeLocation&gt;&lt;LastUpdate&gt;2010/5/13&lt;/LastUpdate&gt;&lt;ResumeTitle&gt;BERNARD_SYSTEMS_ENGINEER&lt;/ResumeTitle&gt;&lt;JobTitle&gt;BERNARD_SYSTEMS_ENGINEER&lt;/JobTitle&gt;&lt;RecentEmployer&gt;TATA CONSULTANCY SERVICES&lt;/RecentEmployer&gt;&lt;RecentJobTitle&gt;CONSULTANCY SERVICES- Systems Engineer&lt;/RecentJobTitle&gt;&lt;RecentPay&gt;0&lt;/RecentPay&gt;&lt;ResumeID&gt;Rhd4G067G4JVTLW99H7&lt;/ResumeID&gt;&lt;UserDID&gt;U7X86R61VVKS4FWS03T&lt;/UserDID&gt;&lt;ContactEmailMD5&gt;139013c2fa2b945bdc340f8a698b009e&lt;/ContactEmailMD5&gt;&lt;/ResumeResultItem_V3&gt;&lt;ResumeResultItem_V3&gt;&lt;ContactEmail&gt;Rhe7TZ764LHG1GQTPSM_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com&lt;/ContactEmail&gt;&lt;ContactName&gt;chris grader&lt;/ContactName&gt;&lt;HomeLocation&gt;US-OH-Milford&lt;/HomeLocation&gt;&lt;LastUpdate&gt;2010/6/4&lt;/LastUpdate&gt;&lt;ResumeTitle&gt;Chris Grader resume&lt;/ResumeTitle&gt;&lt;JobTitle&gt;Chris Grader resume&lt;/JobTitle&gt;&lt;RecentEmployer&gt;Millennial Medical, Inc&lt;/RecentEmployer&gt;&lt;RecentJobTitle&gt;Regional Sales Manager/Midwest Distributor&lt;/RecentJobTitle&gt;&lt;RecentPay&gt;0&lt;/RecentPay&gt;&lt;ResumeID&gt;Rhe7TZ764LHG1GQTPSM&lt;/ResumeID&gt;&lt;UserDID&gt;U346V1MKGCHPGCF9S8&lt;/UserDID&gt;&lt;ContactEmailMD5&gt;cfba57bf848b78211d99348cf0f90879&lt;/ContactEmailMD5&gt;&lt;/ResumeResultItem_V3&gt;&lt;ResumeResultItem_V3&gt;&lt;ContactEmail&gt;RH52G867678F7GH02Q3_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com&lt;/ContactEmail&gt;&lt;ContactName&gt;Jeffrey Davis&lt;/ContactName&gt;&lt;HomeLocation&gt;US-OH-Goshen&lt;/HomeLocation&gt;&lt;LastUpdate&gt;2010/5/23&lt;/LastUpdate&gt;&lt;ResumeTitle&gt;Warehouse Distribution Specialist&lt;/ResumeTitle&gt;&lt;JobTitle&gt;Warehouse Distribution Specialist&lt;/JobTitle&gt;&lt;RecentEmployer&gt;OWENS &amp;amp; MINOR&lt;/RecentEmployer&gt;&lt;RecentJobTitle&gt;Warehouse Lead Supervisor&lt;/RecentJobTitle&gt;&lt;RecentPay&gt;35776&lt;/RecentPay&gt;&lt;ResumeID&gt;RH52G867678F7GH02Q3&lt;/ResumeID&gt;&lt;UserDID&gt;U1C29V68M3YM95SP0XK&lt;/UserDID&gt;&lt;ContactEmailMD5&gt;e814ebaa93aae5c3719e27d26d5af917&lt;/ContactEmailMD5&gt;&lt;/ResumeResultItem_V3&gt;&lt;/Results&gt;&lt;/Packet&gt;</string>")
88
- @search = @client.advanced_resume_search(:keywords => "Ruby")
89
- end
90
-
91
- it 'should have the correct page number' do
92
- @search.page_number.should == 1
93
- end
94
-
95
- it 'should have the correct search time' do
96
- @search.search_time.should == Time.mktime(2010, 6, 25, 12, 3, 14)
97
- end
98
-
99
- it 'should return the correct number of hits' do
100
- @search.hits.should == 3
101
- end
102
-
103
- it 'should return the correct max page' do
104
- @search.max_page.should == 1
105
- end
106
-
107
- describe "#results" do
108
-
109
- before do
110
- @results = @search.results
111
- @result = @results.first
112
- end
113
-
114
- it 'should return the correct contact email' do
115
- @result.contact_email.should == "Rhd4G067G4JVTLW99H7_A7C14Q67VKG000YBSCR~CBWS^U7A3LY6YY46V1MT0RJK@resume.cbdr.com"
116
- end
117
-
118
- it 'should return the correct contact name' do
119
- @result.contact_name.should == "Rebecca Bernard"
120
- end
121
-
122
- it 'should return the correct home location' do
123
- @result.home_location.should == "US-OH-Milford"
124
- end
125
-
126
- it 'should return the correct last update' do
127
- @result.last_update.should == Date.new(2010, 5, 13)
128
- end
129
-
130
- it 'should return the correct resume title' do
131
- @result.title.should == "BERNARD_SYSTEMS_ENGINEER"
132
- end
133
-
134
- it 'should return the correct job title' do
135
- @result.job_title.should == "BERNARD_SYSTEMS_ENGINEER"
136
- end
137
-
138
- it 'should return the correct recent pay' do
139
- @result.recent_pay.should == 0
140
- end
141
-
142
- it 'should return the correct id' do
143
- @result.id.should == "Rhd4G067G4JVTLW99H7"
144
- end
145
-
146
- it 'should return the correct user id' do
147
- @result.user_did.should == "U7X86R61VVKS4FWS03T"
148
- end
149
-
150
- it 'should return the correct contact email md5' do
151
- @result.contact_email_md5.should == "139013c2fa2b945bdc340f8a698b009e"
152
- end
153
-
154
- end
155
-
156
- end
157
-
158
- context "with invalid options" do
159
-
160
- it 'should raise ArgumentError' do
161
- expect {
162
- @client.advanced_resume_search(:foo => "bar")
163
- }.to raise_error(ArgumentError)
164
- end
165
-
166
- end
167
-
168
- end
169
-
170
- end
171
-
172
- describe "get_resume" do
173
-
174
- context "with invalid credentials" do
175
-
176
- before do
177
- @client = CareerBuilder::Client.new("valid_email", "invalid_password")
178
- @client.stub(:authenticate).and_return(false)
179
- end
180
-
181
- context "with valid options" do
182
-
183
13
  it 'should raise InvalidCredentials' do
184
14
  expect {
185
15
  @client.get_resume(:resume_id => "4242424242")
186
16
  }.to raise_error(CareerBuilder::InvalidCredentials)
187
17
  end
188
-
189
18
  end
190
19
 
191
20
  context "with invalid options" do
192
-
193
21
  it 'should raise ArgumentError' do
194
22
  expect {
195
23
  @client.get_resume(:foo => "bar")
196
24
  }.to raise_error(ArgumentError)
197
25
  end
198
-
199
26
  end
200
-
201
27
  end
202
28
 
203
29
  context "with valid credentials" do
204
-
205
30
  before do
206
31
  @client = CareerBuilder::Client.new("valid_email", "valid_password")
207
32
  @client.stub(:session_token).and_return(42)
@@ -209,17 +34,14 @@ describe CareerBuilder::Client do
209
34
  end
210
35
 
211
36
  context "with invalid options" do
212
-
213
37
  it 'should raise ArgumentError' do
214
38
  expect {
215
39
  @client.get_resume(:foo => "bar")
216
40
  }.to raise_error(ArgumentError)
217
41
  end
218
-
219
42
  end
220
43
 
221
44
  context "when out of credits" do
222
-
223
45
  before do
224
46
  stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/V2_GetResume").with(:body => 'Packet=%3cPacket%3e%3cSessionToken%3e42%3c%2fSessionToken%3e%3cResumeID%3eRH52G867678F7GH02Q3%3c%2fResumeID%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;Warning&gt;&lt;/Warning&gt;&lt;/Packet&gt;</string>")
225
47
  end
@@ -229,11 +51,9 @@ describe CareerBuilder::Client do
229
51
  @resume = @client.get_resume(:resume_id => "RH52G867678F7GH02Q3")
230
52
  }.to raise_error(CareerBuilder::OutOfCredits)
231
53
  end
232
-
233
54
  end
234
55
 
235
56
  context "with valid options" do
236
-
237
57
  RAW_RESUME_RESPONSE = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;&lt;TimeStamp&gt;6/25/2010 3:19:20 PM&lt;/TimeStamp&gt;&lt;ResumeID&gt;RH52G867678F7GH02Q3&lt;/ResumeID&gt;&lt;ResumeTitle&gt;Warehouse Distribution Specialist&lt;/ResumeTitle&gt;&lt;ContactName&gt;Jeffrey Davis&lt;/ContactName&gt;&lt;ContactEmail&gt;Jeffd1969@aol.com&lt;/ContactEmail&gt;&lt;ContactPhone&gt;513-625-7228&lt;/ContactPhone&gt;&lt;HomeLocation&gt;&lt;City&gt;Goshen&lt;/City&gt;&lt;State&gt;OH&lt;/State&gt;&lt;Country&gt;US&lt;/Country&gt;&lt;ZipCode&gt;45122&lt;/ZipCode&gt;&lt;WorkStatus&gt;Can work for any employer&lt;/WorkStatus&gt;&lt;/HomeLocation&gt;&lt;Relocations&gt;&lt;ExtLocation&gt;&lt;City&gt;Tokyo&lt;/City&gt;&lt;State/&gt;&lt;Country&gt;JP&lt;/Country&gt;&lt;ZipCode /&gt;&lt;WorkStatus&gt;Can work for any employer&lt;/WorkStatus&gt;&lt;/ExtLocation&gt;&lt;/Relocations&gt;&lt;MaxCommuteMiles&gt;10&lt;/MaxCommuteMiles&gt;&lt;TravelPreference&gt;Up to 25%&lt;/TravelPreference&gt;&lt;CurrentlyEmployed&gt;Yes&lt;/CurrentlyEmployed&gt;&lt;MostRecentPay&gt;&lt;Amount&gt;35776&lt;/Amount&gt;&lt;Per&gt;year&lt;/Per&gt;&lt;/MostRecentPay&gt;&lt;DesiredPay&gt;&lt;Amount&gt;45000&lt;/Amount&gt;&lt;Per&gt;year&lt;/Per&gt;&lt;/DesiredPay&gt;&lt;DesiredJobTypes&gt;&lt;string&gt;Full Time&lt;/string&gt;&lt;/DesiredJobTypes&gt;&lt;MostRecentTitle&gt;Warehouse Lead Supervisor&lt;/MostRecentTitle&gt;&lt;ExperienceMonths&gt;216&lt;/ExperienceMonths&gt;&lt;Management&gt;&lt;ManagedOthers&gt;No&lt;/ManagedOthers&gt;&lt;NumberManaged&gt;0&lt;/NumberManaged&gt;&lt;/Management&gt;&lt;JobsLastThreeYears&gt;0&lt;/JobsLastThreeYears&gt;&lt;LastJobTenureMonths&gt;0&lt;/LastJobTenureMonths&gt;&lt;SecurityClearance&gt;No&lt;/SecurityClearance&gt;&lt;FelonyConvictions&gt;No&lt;/FelonyConvictions&gt;&lt;HighestDegree&gt;None&lt;/HighestDegree&gt;&lt;Certifications /&gt;&lt;MotivationToChangeJobs /&gt;&lt;EmploymentType /&gt;&lt;LastUpdated&gt;5/23/2010 10:41:12 PM&lt;/LastUpdated&gt;&lt;Languages&gt;&lt;string&gt;English&lt;/string&gt;&lt;/Languages&gt;&lt;DesiredShiftPreferences&gt;&lt;string /&gt;&lt;/DesiredShiftPreferences&gt;&lt;Interests&gt;&lt;ExtInterest&gt;&lt;Interest&gt;Warehouse&lt;/Interest&gt;&lt;ExperienceMonths&gt;216&lt;/ExperienceMonths&gt;&lt;/ExtInterest&gt;&lt;/Interests&gt;&lt;ResumeText&gt;JEFFREY A. DAVIS&lt;/ResumeText&gt;&lt;MilitaryExperience&gt;Veteran&lt;/MilitaryExperience&gt;&lt;WorkHistory&gt;&lt;ExtCompany&gt;&lt;CompanyName&gt;OWENS &amp;amp; MINOR&lt;/CompanyName&gt;&lt;JobTitle&gt;Warehouse Lead Supervisor&lt;/JobTitle&gt;&lt;Tenure&gt;01/01/2008 - Present&lt;/Tenure&gt;&lt;/ExtCompany&gt;&lt;ExtCompany&gt;&lt;CompanyName&gt;THE HOME DEPOT&lt;/CompanyName&gt;&lt;JobTitle&gt;- Sales Specialist&lt;/JobTitle&gt;&lt;Tenure&gt;01/01/2005 - Present&lt;/Tenure&gt;&lt;/ExtCompany&gt;&lt;ExtCompany&gt;&lt;CompanyName&gt;RUBIES COSTUME CO&lt;/CompanyName&gt;&lt;JobTitle&gt;- Warehouse Assistant Manager&lt;/JobTitle&gt;&lt;Tenure&gt;01/01/2004 - 01/01/2006&lt;/Tenure&gt;&lt;/ExtCompany&gt;&lt;ExtCompany&gt;&lt;CompanyName&gt;UNITED ELECTRIC POWER&lt;/CompanyName&gt;&lt;JobTitle&gt;Inventory Operations Manager&lt;/JobTitle&gt;&lt;Tenure&gt;01/01/2000 - 01/01/2004&lt;/Tenure&gt;&lt;/ExtCompany&gt;&lt;ExtCompany&gt;&lt;CompanyName&gt;VEECO INSTRUMENTS, INC&lt;/CompanyName&gt;&lt;JobTitle&gt;Warehouse Supervisor&lt;/JobTitle&gt;&lt;Tenure&gt;01/01/1996 - 01/01/2000&lt;/Tenure&gt;&lt;/ExtCompany&gt;&lt;/WorkHistory&gt;&lt;EducationHistory&gt;&lt;ExtSchool&gt;&lt;SchoolName&gt;Eastern Oklahoma State College&lt;/SchoolName&gt;&lt;Major&gt;Business Management&lt;/Major&gt;&lt;Degree /&gt;&lt;GraduationDate&gt;11993&lt;/GraduationDate&gt;&lt;/ExtSchool&gt;&lt;ExtSchool&gt;&lt;SchoolName&gt;Suffolk County Community College&lt;/SchoolName&gt;&lt;Major&gt;Business Management&lt;/Major&gt;&lt;Degree /&gt;&lt;GraduationDate&gt;11997&lt;/GraduationDate&gt;&lt;/ExtSchool&gt;&lt;/EducationHistory&gt;&lt;Warning&gt;&lt;/Warning&gt;&lt;/Packet&gt;</string>".freeze
238
58
 
239
59
  before do
@@ -273,7 +93,6 @@ describe CareerBuilder::Client do
273
93
  end
274
94
 
275
95
  describe "#home_location" do
276
-
277
96
  before do
278
97
  @home_location = @resume.home_location
279
98
  end
@@ -297,11 +116,9 @@ describe CareerBuilder::Client do
297
116
  it 'should return the correct work status' do
298
117
  @home_location.work_status.should == "Can work for any employer"
299
118
  end
300
-
301
119
  end
302
120
 
303
121
  describe "#relocations" do
304
-
305
122
  before do
306
123
  @relocations = @resume.relocations
307
124
  @relocation = @relocations.first
@@ -326,7 +143,6 @@ describe CareerBuilder::Client do
326
143
  it 'should return the correct work status' do
327
144
  @relocation.work_status.should == "Can work for any employer"
328
145
  end
329
-
330
146
  end
331
147
 
332
148
  it 'should return the correct max commute miles' do
@@ -342,7 +158,6 @@ describe CareerBuilder::Client do
342
158
  end
343
159
 
344
160
  describe "#most_recent_pay" do
345
-
346
161
  before do
347
162
  @most_recent_pay = @resume.most_recent_pay
348
163
  end
@@ -354,11 +169,9 @@ describe CareerBuilder::Client do
354
169
  it 'should return the correct per' do
355
170
  @most_recent_pay.per.should == "year"
356
171
  end
357
-
358
172
  end
359
173
 
360
174
  describe "#desired_pay" do
361
-
362
175
  before do
363
176
  @desired_pay = @resume.desired_pay
364
177
  end
@@ -370,11 +183,9 @@ describe CareerBuilder::Client do
370
183
  it 'should return the correct per' do
371
184
  @desired_pay.per.should == "year"
372
185
  end
373
-
374
186
  end
375
187
 
376
188
  describe "#desired_job_types" do
377
-
378
189
  before do
379
190
  @desired_job_types = @resume.desired_job_types
380
191
  @desired_job_type = @desired_job_types.first
@@ -383,7 +194,6 @@ describe CareerBuilder::Client do
383
194
  it 'should return the correct text' do
384
195
  @desired_job_type.text.should == "Full Time"
385
196
  end
386
-
387
197
  end
388
198
 
389
199
  it 'should return the correct most recent title' do
@@ -439,7 +249,6 @@ describe CareerBuilder::Client do
439
249
  end
440
250
 
441
251
  describe "#languages" do
442
-
443
252
  before do
444
253
  @languages = @resume.languages
445
254
  @language = @languages.first
@@ -448,11 +257,9 @@ describe CareerBuilder::Client do
448
257
  it 'should return the correct text' do
449
258
  @language.text.should == "English"
450
259
  end
451
-
452
260
  end
453
261
 
454
262
  describe "#desired_shift_preferences" do
455
-
456
263
  before do
457
264
  @desired_shift_preferences = @resume.desired_shift_preferences
458
265
  @desired_shift_preference = @desired_shift_preferences.first
@@ -461,11 +268,9 @@ describe CareerBuilder::Client do
461
268
  it 'should return the correct desired shift preferences' do
462
269
  @desired_shift_preference.text.should == ""
463
270
  end
464
-
465
271
  end
466
272
 
467
273
  describe "#interests" do
468
-
469
274
  before do
470
275
  @interests = @resume.interests
471
276
  @interest = @interests.first
@@ -478,7 +283,6 @@ describe CareerBuilder::Client do
478
283
  it 'should return the correct experience in months' do
479
284
  @interest.experience_months.should == 216
480
285
  end
481
-
482
286
  end
483
287
 
484
288
  it 'should return the correct resume text' do
@@ -490,7 +294,6 @@ describe CareerBuilder::Client do
490
294
  end
491
295
 
492
296
  describe "#companies" do
493
-
494
297
  before do
495
298
  @companies = @resume.companies
496
299
  @company = @companies.first
@@ -507,11 +310,9 @@ describe CareerBuilder::Client do
507
310
  it 'should return the correct tenure' do
508
311
  @company.tenure.should == "01/01/2008 - Present"
509
312
  end
510
-
511
313
  end
512
314
 
513
315
  describe "#schools" do
514
-
515
316
  before do
516
317
  @schools = @resume.schools
517
318
  @school = @schools.first
@@ -532,32 +333,13 @@ describe CareerBuilder::Client do
532
333
  it 'should return the correct graduation date' do
533
334
  @school.graduation_date.should == "11993"
534
335
  end
535
-
536
336
  end
537
337
 
538
338
  it 'should return the correct warning' do
539
339
  @resume.warning.should == ""
540
340
  end
541
-
542
341
  end
543
-
544
- end
545
-
546
- end
547
-
548
- describe "#resume_actions_remaining_today" do
549
-
550
- before do
551
- stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/V2_ResumeActionsRemainingToday").with(:body => 'Packet=%3cPacket%3e%3cSessionToken%3e42%3c%2fSessionToken%3e%3cAccountDID%3eD7D15Q67VKG105ZB12%3c%2fAccountDID%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;1&lt;/Packet&gt;</string>")
552
- @client = CareerBuilder::Client.new("valid_email", "valid_password")
553
- @client.stub(:session_token).and_return(42)
554
- @client.stub(:authenticate).and_return(true)
555
342
  end
556
-
557
- it 'should return the number of credits remaining' do
558
- @client.resume_actions_remaining_today(:account_did => "D7D15Q67VKG105ZB12").should == 1
559
- end
560
-
561
343
  end
562
344
 
563
345
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe CareerBuilder::Client do
4
+
5
+ describe "#resume_actions_remaining_today" do
6
+ before do
7
+ stub_request(:post, "http://ws.careerbuilder.com/resumes/resumes.asmx/V2_ResumeActionsRemainingToday").with(:body => 'Packet=%3cPacket%3e%3cSessionToken%3e42%3c%2fSessionToken%3e%3cAccountDID%3eD7D15Q67VKG105ZB12%3c%2fAccountDID%3e%3c%2fPacket%3e').to_return(:body => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://ws.careerbuilder.com/resumes/\">&lt;Packet&gt;1&lt;/Packet&gt;</string>")
8
+ @client = CareerBuilder::Client.new("valid_email", "valid_password")
9
+ @client.stub(:session_token).and_return(42)
10
+ @client.stub(:authenticate).and_return(true)
11
+ end
12
+
13
+ it 'should return the number of credits remaining' do
14
+ @client.resume_actions_remaining_today(:account_did => "D7D15Q67VKG105ZB12").should == 1
15
+ end
16
+ end
17
+
18
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: career_builder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Guterl
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-31 00:00:00 -04:00
18
+ date: 2011-04-04 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -174,9 +174,11 @@ files:
174
174
  - lib/career_builder/errors.rb
175
175
  - lib/career_builder/resume.rb
176
176
  - lib/career_builder/resume/lazy_collection.rb
177
- - spec/career_builder/client_spec.rb
177
+ - spec/career_builder/client/advanced_resume_search_spec.rb
178
+ - spec/career_builder/client/authentication_spec.rb
179
+ - spec/career_builder/client/get_resume_spec.rb
180
+ - spec/career_builder/client/resume_actions_remaining_today_spec.rb
178
181
  - spec/career_builder/resume/lazy_collection_spec.rb
179
- - spec/career_builder/resume_spec.rb
180
182
  - spec/career_builder_spec.rb
181
183
  - spec/spec.opts
182
184
  - spec/spec_helper.rb
@@ -216,9 +218,11 @@ signing_key:
216
218
  specification_version: 3
217
219
  summary: Ruby wrapper for the CareerBuilder V2 API
218
220
  test_files:
219
- - spec/career_builder/client_spec.rb
221
+ - spec/career_builder/client/advanced_resume_search_spec.rb
222
+ - spec/career_builder/client/authentication_spec.rb
223
+ - spec/career_builder/client/get_resume_spec.rb
224
+ - spec/career_builder/client/resume_actions_remaining_today_spec.rb
220
225
  - spec/career_builder/resume/lazy_collection_spec.rb
221
- - spec/career_builder/resume_spec.rb
222
226
  - spec/career_builder_spec.rb
223
227
  - spec/spec_helper.rb
224
228
  - spec/support/webmock.rb
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe CareerBuilder::Resume do
4
-
5
- end