fulcrum 0.1.2
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.
- data/.gitignore +17 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +123 -0
- data/Rakefile +8 -0
- data/fulcrum.gemspec +27 -0
- data/lib/fulcrum.rb +13 -0
- data/lib/fulcrum/api.rb +95 -0
- data/lib/fulcrum/choice_list.rb +38 -0
- data/lib/fulcrum/classification_set.rb +39 -0
- data/lib/fulcrum/form.rb +39 -0
- data/lib/fulcrum/member.rb +16 -0
- data/lib/fulcrum/photo.rb +36 -0
- data/lib/fulcrum/record.rb +38 -0
- data/lib/fulcrum/validators/base_validator.rb +31 -0
- data/lib/fulcrum/validators/choice_list_validator.rb +30 -0
- data/lib/fulcrum/validators/classification_set_validator.rb +38 -0
- data/lib/fulcrum/validators/form_validator.rb +150 -0
- data/lib/fulcrum/validators/record_validator.rb +18 -0
- data/lib/fulcrum/version.rb +3 -0
- data/spec/data/form_data.json +175 -0
- data/spec/data/test.jpg +0 -0
- data/spec/lib/api_spec.rb +39 -0
- data/spec/lib/choice_list_spec.rb +120 -0
- data/spec/lib/classification_set_spec.rb +119 -0
- data/spec/lib/form_spec.rb +120 -0
- data/spec/lib/member_spec.rb +52 -0
- data/spec/lib/photo_spec.rb +94 -0
- data/spec/lib/record_spec.rb +120 -0
- data/spec/lib/validators/choice_list_validator_spec.rb +73 -0
- data/spec/lib/validators/classification_set_validator_spec.rb +88 -0
- data/spec/lib/validators/form_validator_spec.rb +4 -0
- data/spec/lib/validators/record_validator_spec.rb +53 -0
- data/spec/spec_helper.rb +5 -0
- metadata +182 -0
data/spec/data/test.jpg
ADDED
File without changes
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fulcrum::Api do
|
4
|
+
before(:all) do
|
5
|
+
@uri = 'http://foo.bar/api/v2'
|
6
|
+
@key = 'foobar'
|
7
|
+
Fulcrum::Api.configure do |config|
|
8
|
+
config.uri = 'http://foo.bar/api/v2'
|
9
|
+
config.key = 'foobar'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should be configured' do
|
14
|
+
Fulcrum::Api.configuration.uri.should eq(@uri)
|
15
|
+
Fulcrum::Api.configuration.key.should eq(@key)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should get the key' do
|
19
|
+
user = "foo@bar.com"
|
20
|
+
pass = "foobar"
|
21
|
+
stub_request(:get, /.*\/users.json/).to_return(:status => 200, :body => '{ "user": { "api_token": "foobar" }}')
|
22
|
+
Fulcrum::Api.get_key(user, pass).should eq('foobar')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'parse_opts should return only expected opts' do
|
26
|
+
params = Fulcrum::Api.parse_opts([:foo], { foo: 'bar', bar: 'foo'})
|
27
|
+
params.has_key?(:foo).should be(true)
|
28
|
+
params[:foo].should eq('bar')
|
29
|
+
params.has_key?(:bar).should be(false)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'call should raise ArgumentError with invalid method' do
|
33
|
+
expect { Fulcrum::Api.call(:foo) }.to raise_error(ArgumentError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'call should not raise ArgumentError with valid method' do
|
37
|
+
expect { Fulcrum::Api.call(:get) }.to_not raise_error(ArgumentError)
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fulcrum::ChoiceList do
|
4
|
+
before(:all) do
|
5
|
+
Fulcrum::Api.configure do |config|
|
6
|
+
config.uri = 'http://foo.bar/api/v2'
|
7
|
+
config.key = 'foobar'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'successful requests' do
|
12
|
+
context '#all' do
|
13
|
+
it 'should retrieve all choice_lists' do
|
14
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/choice_lists.json").to_return(:status => 200, :body => '{"current_page":1,"total_pages":1,"total_count":1,"per_page":50,"choice_lists":[]}')
|
15
|
+
cls = Fulcrum::ChoiceList.all
|
16
|
+
Fulcrum::ChoiceList.response.status.should eq(200)
|
17
|
+
cls = JSON.parse(cls)
|
18
|
+
cls.keys.should include('current_page')
|
19
|
+
cls.keys.should include('total_pages')
|
20
|
+
cls.keys.should include('total_count')
|
21
|
+
cls.keys.should include('per_page')
|
22
|
+
cls.keys.should include('choice_lists')
|
23
|
+
cls['choice_lists'].should be_a(Array)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context '#retrieve' do
|
28
|
+
it 'should retrieve the specified choice_list and return 200' do
|
29
|
+
cl_id = "abc"
|
30
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/choice_lists/#{cl_id}.json").to_return(:status => 200, :body => '{"choice_list":{}}')
|
31
|
+
c = Fulcrum::ChoiceList.find(cl_id)
|
32
|
+
Fulcrum::ChoiceList.response.status.should eq(200)
|
33
|
+
c = JSON.parse(c)
|
34
|
+
c.keys.should include('choice_list')
|
35
|
+
c['choice_list'].should be_a(Hash)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context '#create' do
|
40
|
+
it 'should return created choice_list with status 201' do
|
41
|
+
stub_request(:post, "#{Fulcrum::Api.configuration.uri}/choice_lists.json").to_return(:status => 201, :body => '{"choice_list":{}}')
|
42
|
+
Fulcrum::ChoiceListValidator.any_instance.stub(:validate!).and_return(true)
|
43
|
+
c = Fulcrum::ChoiceList.create({})
|
44
|
+
Fulcrum::ChoiceList.response.status.should eq(201)
|
45
|
+
c = JSON.parse(c)
|
46
|
+
c.keys.should include('choice_list')
|
47
|
+
c['choice_list'].should be_a(Hash)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context '#update' do
|
52
|
+
it 'should return updated choice_list with status 200' do
|
53
|
+
cl_id = 'abc'
|
54
|
+
stub_request(:put, "#{Fulcrum::Api.configuration.uri}/choice_lists/#{cl_id}.json").to_return(:status => 200, :body => '{"choice_list":{}}')
|
55
|
+
Fulcrum::ChoiceListValidator.any_instance.stub(:validate!).and_return(true)
|
56
|
+
c = Fulcrum::ChoiceList.update(cl_id, {})
|
57
|
+
Fulcrum::ChoiceList.response.status.should eq(200)
|
58
|
+
c = JSON.parse(c)
|
59
|
+
c.keys.should include('choice_list')
|
60
|
+
c['choice_list'].should be_a(Hash)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context '#delete' do
|
65
|
+
it 'should return deleted choice_list with status 200' do
|
66
|
+
cl_id = 'abc'
|
67
|
+
stub_request(:delete, "#{Fulcrum::Api.configuration.uri}/choice_lists/#{cl_id}.json").to_return(:status => 200, :body => '{"choice_list":{}}')
|
68
|
+
c = Fulcrum::ChoiceList.delete(cl_id)
|
69
|
+
Fulcrum::ChoiceList.response.status.should eq(200)
|
70
|
+
c = JSON.parse(c)
|
71
|
+
c.keys.should include('choice_list')
|
72
|
+
c['choice_list'].should be_a(Hash)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe 'unsuccessful requests' do
|
78
|
+
context '#retrieve' do
|
79
|
+
it 'should receive 404' do
|
80
|
+
cl_id = 'abc'
|
81
|
+
body = { :a => 'b' }
|
82
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/choice_lists/#{cl_id}.json").to_return(:status => 404, :body => body)
|
83
|
+
c = Fulcrum::ChoiceList.find(cl_id)
|
84
|
+
c.keys.should include(:error)
|
85
|
+
c[:error][:status].should eq(404)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context '#create' do
|
90
|
+
it 'should receive a 422 response' do
|
91
|
+
stub_request(:post, "#{Fulcrum::Api.configuration.uri}/choice_lists.json").to_return(:status => 422)
|
92
|
+
Fulcrum::ChoiceListValidator.any_instance.stub(:validate!).and_return(true)
|
93
|
+
c = Fulcrum::ChoiceList.create({})
|
94
|
+
c.keys.should include(:error)
|
95
|
+
c[:error][:status].should eq(422)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context '#update' do
|
100
|
+
it 'should receive a 422 response' do
|
101
|
+
cl_id = 'abc'
|
102
|
+
stub_request(:put, "#{Fulcrum::Api.configuration.uri}/choice_lists/#{cl_id}.json").to_return(:status => 422)
|
103
|
+
Fulcrum::ChoiceListValidator.any_instance.stub(:validate!).and_return(true)
|
104
|
+
c = Fulcrum::ChoiceList.update(cl_id, {})
|
105
|
+
c.keys.should include(:error)
|
106
|
+
c[:error][:status].should eq(422)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context '#delete' do
|
111
|
+
it 'should receive a 404 response' do
|
112
|
+
cl_id = 'abc'
|
113
|
+
stub_request(:delete, "#{Fulcrum::Api.configuration.uri}/choice_lists/#{cl_id}.json").to_return(:status => 404)
|
114
|
+
c = Fulcrum::ChoiceList.delete(cl_id)
|
115
|
+
c.keys.should include(:error)
|
116
|
+
c[:error][:status].should eq(404)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fulcrum::ClassificationSet do
|
4
|
+
before(:all) do
|
5
|
+
Fulcrum::Api.configure do |config|
|
6
|
+
config.uri = 'http://foo.bar/api/v2'
|
7
|
+
config.key = 'foobar'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'successful requests' do
|
12
|
+
context '#all' do
|
13
|
+
it 'should retrieve all classification_sets' do
|
14
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/classification_sets.json").to_return(:status => 200, :body => '{"current_page":1,"total_pages":1,"total_count":1,"per_page":50,"classification_sets":[]}')
|
15
|
+
css = Fulcrum::ClassificationSet.all
|
16
|
+
Fulcrum::ClassificationSet.response.status.should eq(200)
|
17
|
+
css = JSON.parse(css)
|
18
|
+
css.keys.should include('current_page')
|
19
|
+
css.keys.should include('total_pages')
|
20
|
+
css.keys.should include('total_count')
|
21
|
+
css.keys.should include('per_page')
|
22
|
+
css.keys.should include('classification_sets')
|
23
|
+
css['classification_sets'].should be_a(Array)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context '#retrieve' do
|
28
|
+
it 'should retrieve the specified classification_set and return 200' do
|
29
|
+
cs_id = "abc"
|
30
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/classification_sets/#{cs_id}.json").to_return(:status => 200, :body => '{"classification_set":{}}')
|
31
|
+
c = Fulcrum::ClassificationSet.find(cs_id)
|
32
|
+
Fulcrum::ClassificationSet.response.status.should eq(200)
|
33
|
+
c = JSON.parse(c)
|
34
|
+
c.keys.should include('classification_set')
|
35
|
+
c['classification_set'].should be_a(Hash)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context '#create' do
|
40
|
+
it 'should return created classification_set with status 201' do
|
41
|
+
stub_request(:post, "#{Fulcrum::Api.configuration.uri}/classification_sets.json").to_return(:status => 201, :body => '{"classification_set":{}}')
|
42
|
+
Fulcrum::ClassificationSetValidator.any_instance.stub(:validate!).and_return(true)
|
43
|
+
c = Fulcrum::ClassificationSet.create({})
|
44
|
+
Fulcrum::ClassificationSet.response.status.should eq(201)
|
45
|
+
c = JSON.parse(c)
|
46
|
+
c.keys.should include('classification_set')
|
47
|
+
c['classification_set'].should be_a(Hash)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context '#update' do
|
52
|
+
it 'should return updated classification_set with status 200' do
|
53
|
+
cs_id = 'abc'
|
54
|
+
stub_request(:put, "#{Fulcrum::Api.configuration.uri}/classification_sets/#{cs_id}.json").to_return(:status => 200, :body => '{"classification_set":{}}')
|
55
|
+
Fulcrum::ClassificationSetValidator.any_instance.stub(:validate!).and_return(true)
|
56
|
+
c = Fulcrum::ClassificationSet.update(cs_id, {})
|
57
|
+
Fulcrum::ClassificationSet.response.status.should eq(200)
|
58
|
+
c = JSON.parse(c)
|
59
|
+
c.keys.should include('classification_set')
|
60
|
+
c['classification_set'].should be_a(Hash)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context '#delete' do
|
65
|
+
it 'should return deleted classification_set with status 200' do
|
66
|
+
cs_id = 'abc'
|
67
|
+
stub_request(:delete, "#{Fulcrum::Api.configuration.uri}/classification_sets/#{cs_id}.json").to_return(:status => 200, :body => '{"classification_set":{}}')
|
68
|
+
c = Fulcrum::ClassificationSet.delete(cs_id)
|
69
|
+
Fulcrum::ClassificationSet.response.status.should eq(200)
|
70
|
+
c = JSON.parse(c)
|
71
|
+
c.keys.should include('classification_set')
|
72
|
+
c['classification_set'].should be_a(Hash)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe 'unsuccessful requests' do
|
78
|
+
context '#retrieve' do
|
79
|
+
it 'should receive 404' do
|
80
|
+
cs_id = 'abc'
|
81
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/classification_sets/#{cs_id}.json").to_return(:status => 404)
|
82
|
+
c = Fulcrum::ClassificationSet.find(cs_id)
|
83
|
+
c.keys.should include(:error)
|
84
|
+
c[:error][:status].should eq(404)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context '#create' do
|
89
|
+
it 'should receive a 422 response' do
|
90
|
+
stub_request(:post, "#{Fulcrum::Api.configuration.uri}/classification_sets.json").to_return(:status => 422)
|
91
|
+
Fulcrum::ClassificationSetValidator.any_instance.stub(:validate!).and_return(true)
|
92
|
+
c = Fulcrum::ClassificationSet.create({})
|
93
|
+
c.keys.should include(:error)
|
94
|
+
c[:error][:status].should eq(422)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context '#update' do
|
99
|
+
it 'should receive a 422 response' do
|
100
|
+
cs_id = 'abc'
|
101
|
+
stub_request(:put, "#{Fulcrum::Api.configuration.uri}/classification_sets/#{cs_id}.json").to_return(:status => 422)
|
102
|
+
Fulcrum::ClassificationSetValidator.any_instance.stub(:validate!).and_return(true)
|
103
|
+
c = Fulcrum::ClassificationSet.update(cs_id, {})
|
104
|
+
c.keys.should include(:error)
|
105
|
+
c[:error][:status].should eq(422)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context '#delete' do
|
110
|
+
it 'should receive a 404 response' do
|
111
|
+
cs_id = 'abc'
|
112
|
+
stub_request(:delete, "#{Fulcrum::Api.configuration.uri}/classification_sets/#{cs_id}.json").to_return(:status => 404)
|
113
|
+
c = Fulcrum::ClassificationSet.delete(cs_id)
|
114
|
+
c.keys.should include(:error)
|
115
|
+
c[:error][:status].should eq(404)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fulcrum::Form do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
Fulcrum::Api.configure do |config|
|
7
|
+
config.uri = 'http://foo.bar/api/v2'
|
8
|
+
config.key = 'foobar'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'successful requests' do
|
13
|
+
context '#all' do
|
14
|
+
it 'should retrieve all records' do
|
15
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/forms.json").to_return(:status => 200, :body => '{"current_page":1,"total_pages":1,"total_count":1,"per_page":50,"forms":[]}')
|
16
|
+
forms = Fulcrum::Form.all
|
17
|
+
Fulcrum::Form.response.status.should eq(200)
|
18
|
+
forms = JSON.parse(forms)
|
19
|
+
forms.keys.should include('current_page')
|
20
|
+
forms.keys.should include('total_pages')
|
21
|
+
forms.keys.should include('total_count')
|
22
|
+
forms.keys.should include('per_page')
|
23
|
+
forms.keys.should include('forms')
|
24
|
+
forms['forms'].should be_a(Array)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context '#retrieve' do
|
29
|
+
it 'should retrieve the specified record and return 200' do
|
30
|
+
form_id = "abc"
|
31
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/forms/#{form_id}.json").to_return(:status => 200, :body => '{"form":{}}')
|
32
|
+
f = Fulcrum::Form.find(form_id)
|
33
|
+
Fulcrum::Form.response.status.should eq(200)
|
34
|
+
f = JSON.parse(f)
|
35
|
+
f.keys.should include('form')
|
36
|
+
f['form'].should be_a(Hash)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context '#create' do
|
41
|
+
it 'should return created form with status 201' do
|
42
|
+
stub_request(:post, "#{Fulcrum::Api.configuration.uri}/forms.json").to_return(:status => 201, :body => '{"form":{}}')
|
43
|
+
Fulcrum::FormValidator.any_instance.stub(:validate!).and_return(true)
|
44
|
+
f = Fulcrum::Form.create({})
|
45
|
+
Fulcrum::Form.response.status.should eq(201)
|
46
|
+
f = JSON.parse(f)
|
47
|
+
f.keys.should include('form')
|
48
|
+
f['form'].should be_a(Hash)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context '#update' do
|
53
|
+
it 'should return updated form with status 200' do
|
54
|
+
form_id = 'abc'
|
55
|
+
stub_request(:put, "#{Fulcrum::Api.configuration.uri}/forms/#{form_id}.json").to_return(:status => 200, :body => '{"form":{}}')
|
56
|
+
Fulcrum::FormValidator.any_instance.stub(:validate!).and_return(true)
|
57
|
+
f = Fulcrum::Form.update(form_id, {})
|
58
|
+
Fulcrum::Form.response.status.should eq(200)
|
59
|
+
f = JSON.parse(f)
|
60
|
+
f.keys.should include('form')
|
61
|
+
f['form'].should be_a(Hash)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context '#delete' do
|
66
|
+
it 'should return deleted form with status 200' do
|
67
|
+
form_id = 'abc'
|
68
|
+
stub_request(:delete, "#{Fulcrum::Api.configuration.uri}/forms/#{form_id}.json").to_return(:status => 200, :body => '{"form":{}}')
|
69
|
+
f = Fulcrum::Form.delete(form_id)
|
70
|
+
Fulcrum::Form.response.status.should eq(200)
|
71
|
+
f = JSON.parse(f)
|
72
|
+
f.keys.should include('form')
|
73
|
+
f['form'].should be_a(Hash)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe 'unsuccessful requests' do
|
79
|
+
context '#retrieve' do
|
80
|
+
it 'should receive 404' do
|
81
|
+
form_id = 'abc'
|
82
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/forms/#{form_id}.json").to_return(:status => 404)
|
83
|
+
c = Fulcrum::Form.find(form_id)
|
84
|
+
c.keys.should include(:error)
|
85
|
+
c[:error][:status].should eq(404)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context '#create' do
|
90
|
+
it 'should receive a 422 response' do
|
91
|
+
stub_request(:post, "#{Fulcrum::Api.configuration.uri}/forms.json").to_return(:status => 422)
|
92
|
+
Fulcrum::FormValidator.any_instance.stub(:validate!).and_return(true)
|
93
|
+
c = Fulcrum::Form.create({})
|
94
|
+
c.keys.should include(:error)
|
95
|
+
c[:error][:status].should eq(422)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context '#update' do
|
100
|
+
it 'should receive a 422 response' do
|
101
|
+
form_id = 'abc'
|
102
|
+
stub_request(:put, "#{Fulcrum::Api.configuration.uri}/forms/#{form_id}.json").to_return(:status => 422)
|
103
|
+
Fulcrum::FormValidator.any_instance.stub(:validate!).and_return(true)
|
104
|
+
c = Fulcrum::Form.update(form_id, {})
|
105
|
+
c.keys.should include(:error)
|
106
|
+
c[:error][:status].should eq(422)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context '#delete' do
|
111
|
+
it 'should receive a 404 response' do
|
112
|
+
form_id = 'abc'
|
113
|
+
stub_request(:delete, "#{Fulcrum::Api.configuration.uri}/forms/#{form_id}.json").to_return(:status => 404)
|
114
|
+
c = Fulcrum::Form.delete(form_id)
|
115
|
+
c.keys.should include(:error)
|
116
|
+
c[:error][:status].should eq(404)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fulcrum::Member do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
Fulcrum::Api.configure do |config|
|
7
|
+
config.uri = 'http://foo.bar/api/v2'
|
8
|
+
config.key = 'foobar'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'successful requests' do
|
13
|
+
context '#all' do
|
14
|
+
it 'should retrieve all members' do
|
15
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/members.json").to_return(:status => 200, :body => '{"current_page":1,"total_pages":1,"total_count":1,"per_page":50,"members":[]}')
|
16
|
+
members = Fulcrum::Member.all
|
17
|
+
Fulcrum::Member.response.status.should eq(200)
|
18
|
+
members = JSON.parse(members)
|
19
|
+
members.keys.should include('current_page')
|
20
|
+
members.keys.should include('total_pages')
|
21
|
+
members.keys.should include('total_count')
|
22
|
+
members.keys.should include('per_page')
|
23
|
+
members.keys.should include('members')
|
24
|
+
members['members'].should be_a(Array)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context '#retrieve' do
|
29
|
+
it 'should retrieve the specified member' do
|
30
|
+
member_id = 'abc'
|
31
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/members/#{member_id}.json").to_return(:status => 200, :body => '{"member":{}}')
|
32
|
+
m = Fulcrum::Member.find('abc')
|
33
|
+
Fulcrum::Member.response.status.should eq(200)
|
34
|
+
m = JSON.parse(m)
|
35
|
+
m.keys.should include('member')
|
36
|
+
m['member'].should be_a(Hash)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe 'unsuccessful requests' do
|
42
|
+
context '#retrieve' do
|
43
|
+
it 'should receive 404' do
|
44
|
+
member_id = 'abc'
|
45
|
+
stub_request(:get, "#{Fulcrum::Api.configuration.uri}/members/#{member_id}.json").to_return(:status => 404)
|
46
|
+
m = Fulcrum::Member.find(member_id)
|
47
|
+
m.keys.should include(:error)
|
48
|
+
m[:error][:status].should eq(404)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|