workable 1.0.0.rc2 → 1.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ada51e56baba92f9000eef95141cf2398a1e928f
4
- data.tar.gz: c3d58edf13520d31ea1f318c28757301b986db89
3
+ metadata.gz: 3a012b72ac227d6a5e255ab04744c9d1d73b3702
4
+ data.tar.gz: c4d387f0f391433e9daa0dcea11e44d31a199530
5
5
  SHA512:
6
- metadata.gz: c2a4cff53fe413453ab557278c2f90c7762fd0a425842db4f0eb94081f9c348da28adf2c8fd88eb95a9929caabec0a0e64968360be4f94f666bcf9b1394719d0
7
- data.tar.gz: c816f6b7c325a148da17b2765ca63cdd9fc06117c7f6c2222f817bc6b9cea00081b934480966bc482556ce5bddb6b9a642f62049e6875dcc80db4f179477e082
6
+ metadata.gz: 7bf6600e83452fcb61a6f42ffcf91dae9ef568a9e003fa86901f22dd2fc4c48ea84babb708edf131f37f911a1799292e2cc4f2d49629d267ca7b893e4fe86629
7
+ data.tar.gz: 25d8a1c06fe687e3101bcb1df465f370a4cb46ea5de0cc8eb36d249044389f4f285ed642e50fb35f537a6a6fae89a18acf8e3bbeba9b164cb35bbbdd225c9941
data/README.md CHANGED
@@ -49,7 +49,9 @@ client.stages # => Array of hashes
49
49
  client.recruiters # => Array of hashes
50
50
  client.job_details(shortcode) # => Hash
51
51
  client.job_questions(shortcode) # => Array of hashes
52
- client.job_candidates(shortcode, stage_slug) # => Array of hashes (stage_slug is optional)
52
+ client.job_candidates(shortcode, :stage => stage_slug, :limit => 100) # => Array of hashes:
53
+ # if given stage limits to given stage
54
+ # if given limit lists the last `limit` added candidates
53
55
 
54
56
  # Adding candidates - candidate is a Hash as described in:
55
57
  # http://resources.workable.com/add-candidates-using-api
@@ -48,11 +48,13 @@ module Workable
48
48
  end
49
49
 
50
50
  # list candidates for given job
51
- # @param shortcode [String] job shortcode to select candidates from
52
- # @param stage_slug [String|nil] optional stage slug, if not given candidates are listed for all stages
53
- def job_candidates(shortcode, stage_slug = nil)
54
- shortcode = "#{shortcode}/#{stage_slug}" unless stage_slug.nil?
55
- transform_to(:candidate, get_request("jobs/#{shortcode}/candidates")['candidates'])
51
+ # @param shortcode [String] job shortcode to select candidates from
52
+ # @param options [Hash] extra options like `stage_slug` or `limit`
53
+ # @option options :stage [String] optional stage slug, if not given candidates are listed for all stages
54
+ # @option options :limit [Number|String] optional limit of candidates to download, if not given all candidates are listed
55
+ def job_candidates(shortcode, options = {})
56
+ url = build_job_candidates_url(shortcode, options)
57
+ transform_to(:candidate, get_request(url)['candidates'])
56
58
  end
57
59
 
58
60
  # list of questions for job
@@ -160,6 +162,23 @@ module Workable
160
162
  }
161
163
  end
162
164
 
165
+ # build url for fetching job candidates
166
+ # @param shortcode [String] job shortcode to select candidates from
167
+ # @param options [Hash] extra options like `stage_slug` or `limit`
168
+ # @option options :stage_slug [String] optional stage slug, if not given candidates are listed for all stages
169
+ # @option options :limit [Number|String] optional limit of candidates to download, if not given all candidates are listed
170
+ def build_job_candidates_url(shortcode, options)
171
+ if (stage_slug = options.delete(:stage))
172
+ then stage_slug = "/#{stage_slug}"
173
+ end
174
+ params =
175
+ if options.empty?
176
+ then ""
177
+ else "?#{options.map{|k,v| "#{k}=#{v}"}.join("&")}"
178
+ end
179
+ "jobs/#{shortcode}#{stage_slug}/candidates#{params}"
180
+ end
181
+
163
182
  # transform result using given method if defined
164
183
  # @param type [Symbol] type of the transformation, one of `[:job, :candidate, :question, :stage]`
165
184
  # @param result [Hash|Array|nil] the value to transform, can be nothing, `Hash` of values or `Array` of `Hash`es
@@ -1,3 +1,3 @@
1
1
  module Workable
2
- VERSION = "1.0.0.rc2"
2
+ VERSION = "1.0.0.rc3"
3
3
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Workable::Client do
4
4
 
5
- describe 'initialization' do
5
+ describe '#new' do
6
6
  it 'raises an error on missing api_key / subdomain' do
7
7
  expect { described_class.new }.to raise_error(Workable::Errors::InvalidConfiguration)
8
8
  expect { described_class.new(api_key: 'key') }.to raise_error(Workable::Errors::InvalidConfiguration)
@@ -70,7 +70,31 @@ describe Workable::Client do
70
70
 
71
71
  end
72
72
 
73
- describe '#candidates' do
73
+ describe "#build_job_candidates_url" do
74
+ subject{ described_class.new(api_key: 'test', subdomain: 'subdomain') }
75
+
76
+ it "builds url without options" do
77
+ expect(subject.send(:build_job_candidates_url, "test", {})).to eq("jobs/test/candidates")
78
+ end
79
+
80
+ it "builds url with multiple unknown options" do
81
+ expect(subject.send(:build_job_candidates_url, "test", {:a => 1, :b =>1})).to eq("jobs/test/candidates?a=1&b=1")
82
+ end
83
+
84
+ it "builds url with limit" do
85
+ expect(subject.send(:build_job_candidates_url, "test", {:limit => 100})).to eq("jobs/test/candidates?limit=100")
86
+ end
87
+
88
+ it "builds url with stage slug" do
89
+ expect(subject.send(:build_job_candidates_url, "test", {:stage => "sourced"})).to eq("jobs/test/sourced/candidates")
90
+ end
91
+
92
+ it "builds url with stage slug and limit" do
93
+ expect(subject.send(:build_job_candidates_url, "test", {:limit => 100, :stage => "sourced"})).to eq("jobs/test/sourced/candidates?limit=100")
94
+ end
95
+ end
96
+
97
+ describe '#job_candidates' do
74
98
  let(:client){ described_class.new(api_key: 'test', subdomain: 'subdomain') }
75
99
 
76
100
  it 'returns array of candidates for given job' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc2
4
+ version: 1.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafał Wojsznis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-16 00:00:00.000000000 Z
12
+ date: 2015-04-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake