redbooth-ruby 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +0 -1
- data/README.md +187 -115
- data/lib/redbooth-ruby/client.rb +6 -39
- data/lib/redbooth-ruby/client_operations/perform.rb +93 -0
- data/lib/redbooth-ruby/file.rb +8 -0
- data/lib/redbooth-ruby/helpers.rb +32 -0
- data/lib/redbooth-ruby/operations/base.rb +3 -2
- data/lib/redbooth-ruby/request/collection.rb +3 -2
- data/lib/redbooth-ruby/request/connection.rb +66 -30
- data/lib/redbooth-ruby/request/helpers.rb +2 -2
- data/lib/redbooth-ruby/request/info.rb +1 -1
- data/lib/redbooth-ruby/request/validator.rb +2 -2
- data/lib/redbooth-ruby/session.rb +34 -11
- data/lib/redbooth-ruby/task_list.rb +28 -0
- data/lib/redbooth-ruby/version.rb +2 -2
- data/lib/redbooth-ruby.rb +6 -3
- data/spec/cassettes/RedboothRuby_File/_download/downloads_a_file.yml +354 -0
- data/spec/cassettes/RedboothRuby_Organization/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_organization.yml +4 -4
- data/spec/cassettes/RedboothRuby_Project/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_project.yml +110 -110
- data/spec/cassettes/RedboothRuby_Session/_refresh_access_token_/.yml +55 -0
- data/spec/cassettes/RedboothRuby_Session/_refresh_access_token_/call_on_token_refresh_with_the_old_and_new_token.yml +55 -0
- data/spec/cassettes/RedboothRuby_Session/_refresh_access_token_/refreshes_the_access_token.yml +55 -0
- data/spec/redbooth-ruby/base_spec.rb +5 -5
- data/spec/redbooth-ruby/client_operations/metadata_spec.rb +4 -4
- data/spec/redbooth-ruby/client_operations/perform_spec.rb +135 -0
- data/spec/redbooth-ruby/client_operations/search_spec.rb +4 -4
- data/spec/redbooth-ruby/client_spec.rb +2 -43
- data/spec/redbooth-ruby/comment_spec.rb +17 -18
- data/spec/redbooth-ruby/conversation_spec.rb +16 -16
- data/spec/redbooth-ruby/file_spec.rb +29 -22
- data/spec/redbooth-ruby/me_spec.rb +2 -2
- data/spec/redbooth-ruby/membership_spec.rb +18 -18
- data/spec/redbooth-ruby/note_spec.rb +16 -16
- data/spec/redbooth-ruby/organization_spec.rb +16 -16
- data/spec/redbooth-ruby/person_spec.rb +18 -18
- data/spec/redbooth-ruby/project_spec.rb +18 -18
- data/spec/redbooth-ruby/request/base_spec.rb +5 -5
- data/spec/redbooth-ruby/request/collection_spec.rb +3 -3
- data/spec/redbooth-ruby/request/connection_spec.rb +8 -8
- data/spec/redbooth-ruby/request/info_spec.rb +13 -13
- data/spec/redbooth-ruby/request/response_spec.rb +4 -4
- data/spec/redbooth-ruby/request/validator_spec.rb +7 -7
- data/spec/redbooth-ruby/session_spec.rb +100 -0
- data/spec/redbooth-ruby/subtaks_spec.rb +16 -16
- data/spec/redbooth-ruby/task_spec.rb +22 -22
- data/spec/redbooth-ruby/user_spec.rb +4 -4
- data/spec/redbooth_spec.rb +13 -13
- data/spec/spec_helper.rb +2 -3
- data/temp/spec/files/test_download.txt +8 -0
- metadata +41 -24
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://redbooth.com/oauth2/token
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: client_id=_your_consumer_key_&client_secret=_your_consumer_secret_&grant_type=refresh_token&refresh_token=_your_user_refresh_token_
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.1
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept-Encoding:
|
15
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
16
|
+
Accept:
|
17
|
+
- "*/*"
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Cache-Control:
|
24
|
+
- no-store
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Date:
|
28
|
+
- Tue, 17 Feb 2015 19:04:21 GMT
|
29
|
+
Pragma:
|
30
|
+
- no-cache
|
31
|
+
Server:
|
32
|
+
- nginx
|
33
|
+
Status:
|
34
|
+
- 200 OK
|
35
|
+
Vary:
|
36
|
+
- Accept-Encoding
|
37
|
+
- Accept-Encoding
|
38
|
+
X-Rack-Cache:
|
39
|
+
- invalidate, pass
|
40
|
+
X-Request-Id:
|
41
|
+
- ae886c7b4f2c7fed8d6777b92282938d
|
42
|
+
X-Runtime:
|
43
|
+
- '0.098434'
|
44
|
+
X-Ua-Compatible:
|
45
|
+
- IE=Edge,chrome=1
|
46
|
+
Content-Length:
|
47
|
+
- '185'
|
48
|
+
Connection:
|
49
|
+
- keep-alive
|
50
|
+
body:
|
51
|
+
encoding: ASCII-8BIT
|
52
|
+
string: '{"access_token":"_your_new_user_token_","token_type":"bearer","expires_in":7200,"refresh_token":"_your_new_user_refresh_token_","scope":"all"}'
|
53
|
+
http_version:
|
54
|
+
recorded_at: Tue, 17 Feb 2015 19:04:22 GMT
|
55
|
+
recorded_with: VCR 2.9.3
|
data/spec/cassettes/RedboothRuby_Session/_refresh_access_token_/refreshes_the_access_token.yml
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://redbooth.com/oauth2/token
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: client_id=_your_consumer_key_&client_secret=_your_consumer_secret_&grant_type=refresh_token&refresh_token=_your_user_refresh_token_
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.1
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept-Encoding:
|
15
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
16
|
+
Accept:
|
17
|
+
- "*/*"
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Cache-Control:
|
24
|
+
- no-store
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Date:
|
28
|
+
- Tue, 17 Feb 2015 19:04:21 GMT
|
29
|
+
Pragma:
|
30
|
+
- no-cache
|
31
|
+
Server:
|
32
|
+
- nginx
|
33
|
+
Status:
|
34
|
+
- 200 OK
|
35
|
+
Vary:
|
36
|
+
- Accept-Encoding
|
37
|
+
- Accept-Encoding
|
38
|
+
X-Rack-Cache:
|
39
|
+
- invalidate, pass
|
40
|
+
X-Request-Id:
|
41
|
+
- ae886c7b4f2c7fed8d6777b92282938d
|
42
|
+
X-Runtime:
|
43
|
+
- '0.098434'
|
44
|
+
X-Ua-Compatible:
|
45
|
+
- IE=Edge,chrome=1
|
46
|
+
Content-Length:
|
47
|
+
- '185'
|
48
|
+
Connection:
|
49
|
+
- keep-alive
|
50
|
+
body:
|
51
|
+
encoding: ASCII-8BIT
|
52
|
+
string: '{"access_token":"_your_new_user_token_","token_type":"bearer","expires_in":7200,"refresh_token":"_your_new_user_refresh_token_","scope":"all"}'
|
53
|
+
http_version:
|
54
|
+
recorded_at: Tue, 17 Feb 2015 19:04:22 GMT
|
55
|
+
recorded_with: VCR 2.9.3
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RedboothRuby::Base do
|
4
|
-
describe
|
5
|
-
context
|
6
|
-
it
|
4
|
+
describe '#parse_timestamps' do
|
5
|
+
context 'given #created_time is present' do
|
6
|
+
it 'creates a Time object' do
|
7
7
|
base = RedboothRuby::Base.new(created_time: 1358300444)
|
8
8
|
expect(base.created_time.class).to eql(Time)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
12
|
-
end
|
12
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RedboothRuby::ClientOperations::Metadata, vcr: 'metadata' do
|
4
4
|
include_context 'authentication'
|
@@ -10,10 +10,10 @@ describe RedboothRuby::ClientOperations::Metadata, vcr: 'metadata' do
|
|
10
10
|
end
|
11
11
|
let(:endpoint) { 'metadata/search' }
|
12
12
|
|
13
|
-
describe
|
13
|
+
describe '.metadata' do
|
14
14
|
subject { client.metadata(search_params) }
|
15
15
|
|
16
|
-
it
|
16
|
+
it 'makes a new GET request using the correct API endpoint to receive notes collection' do
|
17
17
|
expect(RedboothRuby).to receive(:request).with(:get, nil, endpoint, search_params, { session: session }).and_call_original
|
18
18
|
subject
|
19
19
|
end
|
@@ -21,4 +21,4 @@ describe RedboothRuby::ClientOperations::Metadata, vcr: 'metadata' do
|
|
21
21
|
it { expect(subject.class).to eql RedboothRuby::Request::Collection }
|
22
22
|
it { expect(subject.all.first).to be_a RedboothRuby::Base }
|
23
23
|
end
|
24
|
-
end
|
24
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RedboothRuby::ClientOperations::Perform do
|
4
|
+
let(:access_token) do
|
5
|
+
{
|
6
|
+
token: '_your_user_token_',
|
7
|
+
secret: '_your_secret_token_',
|
8
|
+
refresh_token: '_your_user_reset_token_'
|
9
|
+
}
|
10
|
+
end
|
11
|
+
let(:session) { RedboothRuby::Session.new(access_token) }
|
12
|
+
let(:performer) { RedboothRuby::ClientOperations::Perform.new(:user, :show, session) }
|
13
|
+
|
14
|
+
describe '#initialize' do
|
15
|
+
subject { performer }
|
16
|
+
|
17
|
+
it { expect(performer.resource_name).to eql :user }
|
18
|
+
it { expect(performer.action).to eql :show }
|
19
|
+
it { expect(performer.session).to eql session }
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#perform!' do
|
23
|
+
it 'is private' do
|
24
|
+
expect{ performer.perform! }.to raise_error
|
25
|
+
end
|
26
|
+
it 'raises RedboothRuby::AuthenticationError if session is invalid' do
|
27
|
+
allow(performer).to receive(:session).and_return(nil)
|
28
|
+
expect{ performer.perform! }.to raise_error(RedboothRuby::AuthenticationError)
|
29
|
+
end
|
30
|
+
it 'calls to the given resource' do
|
31
|
+
allow(RedboothRuby::User).to receive(:show).and_return(RedboothRuby::User.new)
|
32
|
+
expect(RedboothRuby::User).to receive(:show).with({ session: session })
|
33
|
+
|
34
|
+
performer.perform!
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'oauth token expired' do
|
38
|
+
before do
|
39
|
+
allow(RedboothRuby::User).to receive(:show).and_raise(RedboothRuby::OauthTokenExpired)
|
40
|
+
end
|
41
|
+
it 'tries to refresh access_token' do
|
42
|
+
allow(session).to receive(:refresh_access_token!).and_return({})
|
43
|
+
expect(session).to receive(:refresh_access_token!)
|
44
|
+
expect{ performer.perform! }.to raise_error(RedboothRuby::OauthTokenExpired)
|
45
|
+
end
|
46
|
+
it 'raise error if `refresh_access_token` fails' do
|
47
|
+
allow(session).to receive(:refresh_access_token!).and_return(nil)
|
48
|
+
expect{ performer.perform! }.to raise_error(RedboothRuby::OauthTokenExpired)
|
49
|
+
end
|
50
|
+
it 'raise error if `auto_refresh_token` is disabled' do
|
51
|
+
session.auto_refresh_token = false
|
52
|
+
expect{ performer.perform! }.to raise_error(RedboothRuby::OauthTokenExpired)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#perform_processing!' do
|
58
|
+
let(:processing) do
|
59
|
+
RedboothRuby::Processing.new(OpenStruct.new(data: { 'retry_after' => '0' }))
|
60
|
+
end
|
61
|
+
it 'delays the processing' do
|
62
|
+
allow(performer).to receive(:processing_error).and_return(processing)
|
63
|
+
allow(performer).to receive(:perform!).and_return(nil)
|
64
|
+
expect(performer).to receive(:perform!).once
|
65
|
+
performer.perform_processing!
|
66
|
+
end
|
67
|
+
it 'retries the the processing' do
|
68
|
+
allow(performer).to receive(:processing_error).and_return(processing)
|
69
|
+
expect(performer).to receive(:retry_in).with(0)
|
70
|
+
performer.perform_processing!
|
71
|
+
end
|
72
|
+
it 'use 10 seconds as default delay' do
|
73
|
+
expect(performer).to receive(:retry_in).with(10)
|
74
|
+
performer.perform_processing!
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#perform_oauth_token_expired!' do
|
79
|
+
let(:oauth_token_expired_error) { RedboothRuby::OauthTokenExpired.new }
|
80
|
+
before do
|
81
|
+
allow(performer).to receive(:oauth_token_expired_error).and_return(oauth_token_expired_error)
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'when it\'s the first attempt and refresh access token present' do
|
85
|
+
before do
|
86
|
+
allow(performer.session).to receive(:refresh_access_token!).and_return({})
|
87
|
+
allow(performer).to receive(:tries).and_return(1)
|
88
|
+
end
|
89
|
+
it 'refreshes the session access token' do
|
90
|
+
allow(performer).to receive(:perform!)
|
91
|
+
allow(performer).to receive(:refresh_session_access_token!).and_return(true)
|
92
|
+
expect(performer).to receive(:refresh_session_access_token!).once
|
93
|
+
performer.perform_oauth_token_expired!
|
94
|
+
end
|
95
|
+
it 'retries the processing' do
|
96
|
+
expect(performer).to receive(:perform!).once
|
97
|
+
performer.perform_oauth_token_expired!
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'raising the exception' do
|
102
|
+
it 'when the number of tries is not 1' do
|
103
|
+
allow(performer).to receive(:tries).and_return(2)
|
104
|
+
expect{ performer.perform_oauth_token_expired! }.to raise_error(oauth_token_expired_error)
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'when refresh access token is nil' do
|
108
|
+
allow(performer.session).to receive(:refresh_access_token!).and_return(nil)
|
109
|
+
expect{ performer.perform_oauth_token_expired! }.to raise_error(oauth_token_expired_error)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#options_with_session' do
|
115
|
+
it 'is private' do
|
116
|
+
expect{ performer.options_with_session({}) }.to raise_error
|
117
|
+
end
|
118
|
+
it 'adds the session to the given options' do
|
119
|
+
expect(performer.send(:options_with_session, {})).to include(:session)
|
120
|
+
expect(performer.send(:options_with_session, {})[:session]).to eql(session)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe '#resource' do
|
125
|
+
it 'is private' do
|
126
|
+
expect{ performer.resource('user') }.to raise_error
|
127
|
+
end
|
128
|
+
it 'gives the correct api resource class' do
|
129
|
+
expect(performer.send(:resource, 'user')).to eql(RedboothRuby::User)
|
130
|
+
end
|
131
|
+
it 'gives nil if there is no resource for the given name' do
|
132
|
+
expect(performer.send(:resource, 'icecream')).to be_nil
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RedboothRuby::ClientOperations::Search, vcr: 'search' do
|
4
4
|
include_context 'authentication'
|
@@ -10,10 +10,10 @@ describe RedboothRuby::ClientOperations::Search, vcr: 'search' do
|
|
10
10
|
end
|
11
11
|
let(:endpoint) { 'search' }
|
12
12
|
|
13
|
-
describe
|
13
|
+
describe '.index' do
|
14
14
|
subject { client.search(query: 'task') }
|
15
15
|
|
16
|
-
it
|
16
|
+
it 'makes a new GET request using the correct API endpoint to receive notes collection' do
|
17
17
|
expect(RedboothRuby).to receive(:request).with(:get, nil, endpoint, { query: 'task' }, { session: session }).and_call_original
|
18
18
|
subject
|
19
19
|
end
|
@@ -21,4 +21,4 @@ describe RedboothRuby::ClientOperations::Search, vcr: 'search' do
|
|
21
21
|
it { expect(subject.class).to eql RedboothRuby::Request::Collection }
|
22
22
|
it { expect(subject.all.first).to be_a RedboothRuby::Base }
|
23
23
|
end
|
24
|
-
end
|
24
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RedboothRuby::Client do
|
4
|
-
let(:consumer_key) { '_your_consumen_key_' }
|
5
|
-
let(:consumer_secret) { '_your_consumen_secret_' }
|
6
4
|
let(:access_token) do
|
7
5
|
{
|
8
6
|
token: '_your_user_token_',
|
@@ -27,43 +25,4 @@ describe RedboothRuby::Client do
|
|
27
25
|
expect{client}.to raise_error{ RedboothRuby::AuthenticationError }
|
28
26
|
end
|
29
27
|
end
|
30
|
-
|
31
|
-
describe '#perform!' do
|
32
|
-
it 'is private' do
|
33
|
-
expect{client.perform!(:user, :show)}.to raise_error
|
34
|
-
end
|
35
|
-
it 'raises RedboothRuby::AuthenticationError if session is invalid' do
|
36
|
-
allow(client).to receive(:session).and_return(nil)
|
37
|
-
expect{client.perform!(:user, :show)}.to raise_error{ RedboothRuby::AuthenticationError }
|
38
|
-
end
|
39
|
-
it 'calls to the given resource' do
|
40
|
-
allow(RedboothRuby::User).to receive(:show).and_return(RedboothRuby::User.new)
|
41
|
-
expect(RedboothRuby::User).to receive(:show).with({ session: session })
|
42
|
-
|
43
|
-
client.send(:perform!, :user, :show)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe '#options_with_session' do
|
48
|
-
it 'is private' do
|
49
|
-
expect{client.options_with_session({})}.to raise_error
|
50
|
-
end
|
51
|
-
it 'adds the session to the given options' do
|
52
|
-
expect(client.send(:options_with_session,{})).to include(:session)
|
53
|
-
expect(client.send(:options_with_session,{})[:session]).to eql(session)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
describe '#resource' do
|
58
|
-
it 'is private' do
|
59
|
-
expect{client.resource('user')}.to raise_error
|
60
|
-
end
|
61
|
-
it 'gives the correct api resource class' do
|
62
|
-
expect(client.send(:resource, 'user')).to eql(RedboothRuby::User)
|
63
|
-
end
|
64
|
-
it 'gives nil if there is no resource for the given name' do
|
65
|
-
expect(client.send(:resource, 'icecream')).to be_nil
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
28
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
require "spec_helper"
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
describe RedboothRuby::Comment, vcr: 'comments' do
|
5
4
|
include_context 'authentication'
|
@@ -16,7 +15,7 @@ describe RedboothRuby::Comment, vcr: 'comments' do
|
|
16
15
|
client.comment(:show, id: 1)
|
17
16
|
end
|
18
17
|
|
19
|
-
describe
|
18
|
+
describe '#initialize' do
|
20
19
|
subject { comment }
|
21
20
|
|
22
21
|
it { expect(subject.id).to eql 1 }
|
@@ -27,11 +26,11 @@ describe RedboothRuby::Comment, vcr: 'comments' do
|
|
27
26
|
it { expect(subject.is_private).to eql false }
|
28
27
|
end
|
29
28
|
|
30
|
-
describe
|
29
|
+
describe '.show' do
|
31
30
|
subject { comment }
|
32
31
|
|
33
|
-
it
|
34
|
-
expect(RedboothRuby).to receive(:request).with(:get, nil, "#{endpoint}/1", {}, { session: session }).and_call_original
|
32
|
+
it 'makes a new GET request using the correct API endpoint to receive a specific comment' do
|
33
|
+
expect(RedboothRuby).to receive(:request).with(:get, nil, "#{ endpoint }/1", {}, { session: session }).and_call_original
|
35
34
|
subject
|
36
35
|
end
|
37
36
|
|
@@ -40,11 +39,11 @@ describe RedboothRuby::Comment, vcr: 'comments' do
|
|
40
39
|
it { expect(subject.project_id).to eql 2 }
|
41
40
|
end
|
42
41
|
|
43
|
-
describe
|
42
|
+
describe '.update' do
|
44
43
|
subject { client.comment(:update, id: 24, body: 'new test body') }
|
45
44
|
|
46
|
-
it
|
47
|
-
expect(RedboothRuby).to receive(:request).with(:put, nil, "#{endpoint}/24", { body: 'new test body' }, { session: session }).and_call_original
|
45
|
+
it 'makes a new PUT request using the correct API endpoint to receive a specific comment' do
|
46
|
+
expect(RedboothRuby).to receive(:request).with(:put, nil, "#{ endpoint }/24", { body: 'new test body' }, { session: session }).and_call_original
|
48
47
|
subject
|
49
48
|
end
|
50
49
|
|
@@ -52,10 +51,10 @@ describe RedboothRuby::Comment, vcr: 'comments' do
|
|
52
51
|
it { expect(subject.id).to eql 24 }
|
53
52
|
end
|
54
53
|
|
55
|
-
describe
|
54
|
+
describe '.create' do
|
56
55
|
subject { new_record }
|
57
56
|
|
58
|
-
it
|
57
|
+
it 'makes a new POST request using the correct API endpoint to create a specific comment' do
|
59
58
|
expect(RedboothRuby).to receive(:request).with(:post, nil, endpoint, create_params, { session: session }).and_call_original
|
60
59
|
subject
|
61
60
|
end
|
@@ -65,23 +64,23 @@ describe RedboothRuby::Comment, vcr: 'comments' do
|
|
65
64
|
it { expect(subject.user_id).to eql 1 }
|
66
65
|
end
|
67
66
|
|
68
|
-
describe
|
67
|
+
describe '.delete' do
|
69
68
|
subject { client.comment(:delete, id: new_record.id) }
|
70
69
|
|
71
|
-
it
|
72
|
-
expect(RedboothRuby).to receive(:request).with(:delete, nil, "#{endpoint}/#{new_record.id}", {}, { session: session }).and_call_original
|
70
|
+
it 'makes a new DELETE request using the correct API endpoint to delete a specific comment' do
|
71
|
+
expect(RedboothRuby).to receive(:request).with(:delete, nil, "#{ endpoint }/#{ new_record.id }", {}, { session: session }).and_call_original
|
73
72
|
subject
|
74
73
|
end
|
75
74
|
end
|
76
75
|
|
77
|
-
describe
|
76
|
+
describe '.index' do
|
78
77
|
subject { client.comment(:index, target_type: 'Task', target_id: 1) }
|
79
78
|
|
80
|
-
it
|
81
|
-
expect(RedboothRuby).to receive(:request).with(:get, nil, endpoint, {target_type: 'Task', target_id: 1}, { session: session }).and_call_original
|
79
|
+
it 'makes a new GET request using the correct API endpoint to receive comments collection' do
|
80
|
+
expect(RedboothRuby).to receive(:request).with(:get, nil, endpoint, { target_type: 'Task', target_id: 1 }, { session: session }).and_call_original
|
82
81
|
subject
|
83
82
|
end
|
84
83
|
|
85
84
|
it { expect(subject.class).to eql RedboothRuby::Request::Collection }
|
86
85
|
end
|
87
|
-
end
|
86
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RedboothRuby::Conversation, vcr: 'conversations' do
|
4
4
|
include_context 'authentication'
|
@@ -13,7 +13,7 @@ describe RedboothRuby::Conversation, vcr: 'conversations' do
|
|
13
13
|
client.conversation(:show, id: 1)
|
14
14
|
end
|
15
15
|
|
16
|
-
describe
|
16
|
+
describe '#initialize' do
|
17
17
|
subject { conversation }
|
18
18
|
|
19
19
|
it { expect(subject.id).to eql 1 }
|
@@ -23,11 +23,11 @@ describe RedboothRuby::Conversation, vcr: 'conversations' do
|
|
23
23
|
it { expect(subject.is_private).to eql false }
|
24
24
|
end
|
25
25
|
|
26
|
-
describe
|
26
|
+
describe '.show' do
|
27
27
|
subject { conversation }
|
28
28
|
|
29
|
-
it
|
30
|
-
expect(RedboothRuby).to receive(:request).with(:get, nil, "#{endpoint}/1", {}, { session: session }).and_call_original
|
29
|
+
it 'makes a new GET request using the correct API endpoint to receive a specific conversation' do
|
30
|
+
expect(RedboothRuby).to receive(:request).with(:get, nil, "#{ endpoint }/1", {}, { session: session }).and_call_original
|
31
31
|
subject
|
32
32
|
end
|
33
33
|
|
@@ -36,11 +36,11 @@ describe RedboothRuby::Conversation, vcr: 'conversations' do
|
|
36
36
|
it { expect(subject.project_id).to eql 2 }
|
37
37
|
end
|
38
38
|
|
39
|
-
describe
|
39
|
+
describe '.update' do
|
40
40
|
subject { client.conversation(:update, id: 2, name: 'new test name') }
|
41
41
|
|
42
|
-
it
|
43
|
-
expect(RedboothRuby).to receive(:request).with(:put, nil, "#{endpoint}/2", { name: 'new test name' }, { session: session }).and_call_original
|
42
|
+
it 'makes a new PUT request using the correct API endpoint to receive a specific conversation' do
|
43
|
+
expect(RedboothRuby).to receive(:request).with(:put, nil, "#{ endpoint }/2", { name: 'new test name' }, { session: session }).and_call_original
|
44
44
|
subject
|
45
45
|
end
|
46
46
|
|
@@ -48,10 +48,10 @@ describe RedboothRuby::Conversation, vcr: 'conversations' do
|
|
48
48
|
it { expect(subject.id).to eql 2 }
|
49
49
|
end
|
50
50
|
|
51
|
-
describe
|
51
|
+
describe '.create' do
|
52
52
|
subject { new_record }
|
53
53
|
|
54
|
-
it
|
54
|
+
it 'makes a new POST request using the correct API endpoint to create a specific conversation' do
|
55
55
|
expect(RedboothRuby).to receive(:request).with(:post, nil, endpoint, create_params, { session: session }).and_call_original
|
56
56
|
subject
|
57
57
|
end
|
@@ -61,23 +61,23 @@ describe RedboothRuby::Conversation, vcr: 'conversations' do
|
|
61
61
|
it { expect(subject.user_id).to eql 1 }
|
62
62
|
end
|
63
63
|
|
64
|
-
describe
|
64
|
+
describe '.delete' do
|
65
65
|
subject { client.conversation(:delete, id: new_record.id) }
|
66
66
|
|
67
|
-
it
|
68
|
-
expect(RedboothRuby).to receive(:request).with(:delete, nil, "#{endpoint}/#{new_record.id}", {}, { session: session }).and_call_original
|
67
|
+
it 'makes a new DELETE request using the correct API endpoint to delete a specific conversation' do
|
68
|
+
expect(RedboothRuby).to receive(:request).with(:delete, nil, "#{ endpoint }/#{ new_record.id }", {}, { session: session }).and_call_original
|
69
69
|
subject
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
describe
|
73
|
+
describe '.index' do
|
74
74
|
subject { client.conversation(:index) }
|
75
75
|
|
76
|
-
it
|
76
|
+
it 'makes a new GET request using the correct API endpoint to receive conversations collection' do
|
77
77
|
expect(RedboothRuby).to receive(:request).with(:get, nil, endpoint, {}, { session: session }).and_call_original
|
78
78
|
subject
|
79
79
|
end
|
80
80
|
|
81
81
|
it { expect(subject.class).to eql RedboothRuby::Request::Collection }
|
82
82
|
end
|
83
|
-
end
|
83
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
require "spec_helper"
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
describe RedboothRuby::File, vcr: 'files' do
|
5
4
|
include_context 'authentication'
|
@@ -7,7 +6,7 @@ describe RedboothRuby::File, vcr: 'files' do
|
|
7
6
|
let(:create_params) do
|
8
7
|
{ project_id: 2,
|
9
8
|
backend: 'redbooth',
|
10
|
-
asset: File.open("#{File.dirname(__FILE__)}/../fixtures/hola.txt") }
|
9
|
+
asset: File.open("#{ File.dirname(__FILE__) }/../fixtures/hola.txt") }
|
11
10
|
end
|
12
11
|
let(:new_record) { client.file(:create, create_params) }
|
13
12
|
let(:endpoint) { 'files' }
|
@@ -15,34 +14,34 @@ describe RedboothRuby::File, vcr: 'files' do
|
|
15
14
|
client.file(:show, id: 1)
|
16
15
|
end
|
17
16
|
|
18
|
-
describe
|
17
|
+
describe '#initialize' do
|
19
18
|
subject { file }
|
20
19
|
|
21
20
|
it { expect(subject.id).to eql 1 }
|
22
|
-
it { expect(subject.name).to eql
|
21
|
+
it { expect(subject.name).to eql 'Reports' }
|
23
22
|
it { expect(subject.project_id).to eql 2 }
|
24
23
|
it { expect(subject.parent_id).to eql nil }
|
25
24
|
it { expect(subject.pinned).to eql false }
|
26
25
|
end
|
27
26
|
|
28
|
-
describe
|
27
|
+
describe '.show' do
|
29
28
|
subject { file }
|
30
29
|
|
31
|
-
it
|
32
|
-
expect(RedboothRuby).to receive(:request).with(:get, nil, "#{endpoint}/1", {}, { session: session }).and_call_original
|
30
|
+
it 'makes a new GET request using the correct API endpoint to receive a specific file' do
|
31
|
+
expect(RedboothRuby).to receive(:request).with(:get, nil, "#{ endpoint }/1", {}, { session: session }).and_call_original
|
33
32
|
subject
|
34
33
|
end
|
35
34
|
|
36
35
|
it { expect(subject.id).to eql 1 }
|
37
|
-
it { expect(subject.name).to eql
|
36
|
+
it { expect(subject.name).to eql 'Reports' }
|
38
37
|
it { expect(subject.project_id).to eql 2 }
|
39
38
|
end
|
40
39
|
|
41
|
-
describe
|
40
|
+
describe '.update' do
|
42
41
|
subject { client.file(:update, id: 2, name: 'new_name.txt') }
|
43
42
|
|
44
|
-
it
|
45
|
-
expect(RedboothRuby).to receive(:request).with(:put, nil, "#{endpoint}/2", { name: 'new_name.txt' }, { session: session }).and_call_original
|
43
|
+
it 'makes a new PUT request using the correct API endpoint to receive a specific file' do
|
44
|
+
expect(RedboothRuby).to receive(:request).with(:put, nil, "#{ endpoint }/2", { name: 'new_name.txt' }, { session: session }).and_call_original
|
46
45
|
subject
|
47
46
|
end
|
48
47
|
|
@@ -50,13 +49,13 @@ describe RedboothRuby::File, vcr: 'files' do
|
|
50
49
|
it { expect(subject.id).to eql 2 }
|
51
50
|
end
|
52
51
|
|
53
|
-
describe
|
52
|
+
describe '.create' do
|
54
53
|
subject { new_record }
|
55
54
|
let(:asset_params) {
|
56
|
-
{ asset_attrs: { name:
|
55
|
+
{ asset_attrs: { name: 'hola.txt', local_path: "#{ File.dirname(__FILE__) }/../fixtures/hola.txt"} }
|
57
56
|
}
|
58
57
|
|
59
|
-
it
|
58
|
+
it 'makes a new POST request using the correct API endpoint to create a specific file' do
|
60
59
|
expect(RedboothRuby).to receive(:request).with(:post, nil, endpoint, create_params.merge(asset_params) , { session: session }).and_call_original
|
61
60
|
subject
|
62
61
|
end
|
@@ -67,23 +66,31 @@ describe RedboothRuby::File, vcr: 'files' do
|
|
67
66
|
it { expect(subject.user_id).to eql 1 }
|
68
67
|
end
|
69
68
|
|
70
|
-
describe
|
69
|
+
describe '.delete' do
|
71
70
|
subject { client.file(:delete, id: new_record.id) }
|
72
71
|
|
73
|
-
it
|
74
|
-
expect(RedboothRuby).to receive(:request).with(:delete, nil, "#{endpoint}/#{new_record.id}", {}, { session: session }).and_call_original
|
72
|
+
it 'makes a new DELETE request using the correct API endpoint to delete a specific comment' do
|
73
|
+
expect(RedboothRuby).to receive(:request).with(:delete, nil, "#{ endpoint }/#{ new_record.id }", {}, { session: session }).and_call_original
|
75
74
|
subject
|
76
75
|
end
|
77
76
|
end
|
78
77
|
|
79
|
-
describe
|
78
|
+
describe '.index' do
|
80
79
|
subject { client.file(:index, project_id: 1) }
|
81
80
|
|
82
|
-
it
|
83
|
-
expect(RedboothRuby).to receive(:request).with(:get, nil, endpoint, {project_id: 1}, { session: session }).and_call_original
|
81
|
+
it 'makes a new GET request using the correct API endpoint to receive comments collection' do
|
82
|
+
expect(RedboothRuby).to receive(:request).with(:get, nil, endpoint, { project_id: 1 }, { session: session }).and_call_original
|
84
83
|
subject
|
85
84
|
end
|
86
85
|
|
87
86
|
it { expect(subject.class).to eql RedboothRuby::Request::Collection }
|
88
87
|
end
|
89
|
-
|
88
|
+
|
89
|
+
describe '.download' do
|
90
|
+
subject { new_record.download }
|
91
|
+
|
92
|
+
it 'downloads a file' do
|
93
|
+
open("#{ File.dirname(__FILE__) }/../../temp/spec/files/test_download.txt", 'w') { |f| f.puts subject }
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|