yam 0.0.6 → 1.0.0
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.tar.gz.sig +0 -0
- data/.travis.yml +5 -0
- data/.yardopts +10 -0
- data/AUTHORS +1 -0
- data/CHANGELOG.md +7 -0
- data/CONTRIBUTING.md +0 -7
- data/Gemfile +27 -1
- data/README.md +190 -67
- data/Rakefile +9 -3
- data/certs/public.pem +20 -0
- data/lib/yammer.rb +47 -0
- data/lib/yammer/api.rb +29 -0
- data/lib/yammer/api/autocomplete.rb +39 -0
- data/lib/yammer/api/group.rb +92 -0
- data/lib/yammer/api/group_membership.rb +46 -0
- data/lib/yammer/api/invitation.rb +39 -0
- data/lib/yammer/api/like.rb +57 -0
- data/lib/yammer/api/message.rb +227 -0
- data/lib/yammer/api/network.rb +35 -0
- data/lib/yammer/api/notification.rb +32 -0
- data/lib/yammer/api/open_graph_object.rb +92 -0
- data/lib/yammer/api/pending_attachment.rb +64 -0
- data/lib/yammer/api/search.rb +42 -0
- data/lib/yammer/api/subscription.rb +32 -0
- data/lib/yammer/api/thread.rb +37 -0
- data/lib/yammer/api/topic.rb +37 -0
- data/lib/yammer/api/user.rb +168 -0
- data/lib/yammer/api_handler.rb +27 -0
- data/lib/yammer/api_response.rb +57 -0
- data/lib/yammer/base.rb +208 -0
- data/lib/yammer/client.rb +100 -0
- data/lib/yammer/configurable.rb +81 -0
- data/lib/yammer/error.rb +75 -0
- data/lib/yammer/group.rb +27 -0
- data/lib/yammer/group_membership.rb +25 -0
- data/lib/yammer/http_adapter.rb +100 -0
- data/lib/yammer/identity_map.rb +56 -0
- data/lib/yammer/message.rb +32 -0
- data/lib/yammer/message_body.rb +27 -0
- data/lib/yammer/pending_attachment.rb +19 -0
- data/lib/yammer/thread.rb +58 -0
- data/lib/yammer/user.rb +66 -0
- data/lib/yammer/version.rb +32 -0
- data/{lib/yam/configuration.rb → spec/api/autocomplete_spec.rb} +18 -23
- data/spec/api/group_membership_spec.rb +48 -0
- data/spec/api/group_spec.rb +76 -0
- data/spec/api/invitation_spec.rb +60 -0
- data/spec/api/like_spec.rb +46 -0
- data/spec/api/message_spec.rb +136 -0
- data/spec/api/network_spec.rb +41 -0
- data/{lib/yam/client.rb → spec/api/notification_spec.rb} +22 -4
- data/spec/api/open_graph_object_spec.rb +67 -0
- data/spec/api/pending_attachment_spec.rb +56 -0
- data/{lib/yam/constants.rb → spec/api/search_spec.rb} +21 -8
- data/spec/api/subscription_spec.rb +41 -0
- data/{lib/yam.rb → spec/api/thread_spec.rb} +19 -12
- data/{lib/yam/request.rb → spec/api/topic_spec.rb} +19 -15
- data/spec/api/user_spec.rb +108 -0
- data/spec/api_response.rb +86 -0
- data/spec/client_spec.rb +364 -0
- data/spec/error_spec.rb +88 -0
- data/spec/fixtures/group.json +1 -0
- data/spec/fixtures/message.json +1 -0
- data/spec/fixtures/messages_in_thread.json +1 -0
- data/spec/fixtures/portal_thread.json +1 -0
- data/spec/fixtures/private_thread.json +1 -0
- data/spec/fixtures/public_thread.json +1 -0
- data/spec/fixtures/user.json +1 -0
- data/spec/fixtures/users_followed.json +1 -0
- data/spec/fixtures/users_following.json +1 -0
- data/spec/http_adapter_spec.rb +109 -0
- data/spec/identity_map_spec.rb +127 -0
- data/spec/mocks/attachment.txt +1 -0
- data/spec/model/base_spec.rb +196 -0
- data/spec/model/group_membership_spec.rb +57 -0
- data/spec/model/group_spec.rb +73 -0
- data/spec/model/message_spec.rb +74 -0
- data/spec/model/thread_spec.rb +91 -0
- data/spec/model/user_spec.rb +222 -0
- data/spec/spec_helper.rb +39 -14
- data/yam.gemspec +50 -28
- metadata +270 -187
- metadata.gz.sig +0 -0
- data/lib/yam/api.rb +0 -53
- data/lib/yam/connection.rb +0 -57
- data/lib/yam/version.rb +0 -20
- data/spec/yam/client_spec.rb +0 -50
- data/spec/yam_spec.rb +0 -87
@@ -0,0 +1,57 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
# Copyright (c) Microsoft Corporation
|
4
|
+
# All rights reserved.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
13
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
14
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
15
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
16
|
+
#
|
17
|
+
# See the Apache Version 2.0 License for specific language governing
|
18
|
+
# permissions and limitations under the License.
|
19
|
+
|
20
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
21
|
+
|
22
|
+
describe Yammer::GroupMembership do
|
23
|
+
|
24
|
+
before :all do
|
25
|
+
Yammer.configure do |conf|
|
26
|
+
conf.access_token = 'TolNOFka9Uls2DxahNi78A'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
after :all do
|
31
|
+
Yammer.reset!
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'class methods' do
|
35
|
+
|
36
|
+
subject { Yammer::GroupMembership }
|
37
|
+
|
38
|
+
describe '#create_group_membership' do
|
39
|
+
it 'creates a new group membership' do
|
40
|
+
stub_request(:post, "https://www.yammer.com/api/v1/group_memberships").with(
|
41
|
+
:body => { :group_id => '6' },
|
42
|
+
:headers => {
|
43
|
+
'Accept' => 'application/json',
|
44
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
45
|
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
46
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
47
|
+
}
|
48
|
+
).to_return(
|
49
|
+
:status => 201,
|
50
|
+
:body => '',
|
51
|
+
:headers => {}
|
52
|
+
)
|
53
|
+
subject.create(6)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
# Copyright (c) Microsoft Corporation
|
4
|
+
# All rights reserved.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
13
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
14
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
15
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
16
|
+
#
|
17
|
+
# See the Apache Version 2.0 License for specific language governing
|
18
|
+
# permissions and limitations under the License.
|
19
|
+
|
20
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
21
|
+
|
22
|
+
describe Yammer::Group do
|
23
|
+
context 'class methods' do
|
24
|
+
|
25
|
+
before :all do
|
26
|
+
Yammer.configure do |conf|
|
27
|
+
conf.access_token = 'TolNOFka9Uls2DxahNi78A'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
after :all do
|
32
|
+
Yammer.reset!
|
33
|
+
end
|
34
|
+
|
35
|
+
subject { Yammer::Group }
|
36
|
+
|
37
|
+
describe '#create' do
|
38
|
+
it 'creates a new group' do
|
39
|
+
stub_request(:post, "https://www.yammer.com/api/v1/groups").with(
|
40
|
+
:body => { :name => 'rails team', :privacy => 'public' },
|
41
|
+
:headers => {
|
42
|
+
'Accept' => 'application/json',
|
43
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
44
|
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
45
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
46
|
+
}
|
47
|
+
).to_return(
|
48
|
+
:status => 201,
|
49
|
+
:body => '',
|
50
|
+
:headers => {'Location' => 'https://www.yammer.com/api/v1/groups/2'}
|
51
|
+
)
|
52
|
+
subject.create(:name => 'rails team', :privacy => 'public')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#get' do
|
57
|
+
it 'returns group response' do
|
58
|
+
stub_request(:get, "https://www.yammer.com/api/v1/groups/1").with(
|
59
|
+
:headers => {
|
60
|
+
'Accept' => 'application/json',
|
61
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
62
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
63
|
+
}
|
64
|
+
).to_return(
|
65
|
+
:status => 200,
|
66
|
+
:body => fixture('group.json'),
|
67
|
+
:headers => {}
|
68
|
+
)
|
69
|
+
subject.get(1)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
# Copyright (c) Microsoft Corporation
|
4
|
+
# All rights reserved.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
13
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
14
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
15
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
16
|
+
#
|
17
|
+
# See the Apache Version 2.0 License for specific language governing
|
18
|
+
# permissions and limitations under the License.
|
19
|
+
|
20
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
21
|
+
|
22
|
+
describe Yammer::Message do
|
23
|
+
|
24
|
+
before :all do
|
25
|
+
Yammer.configure do |conf|
|
26
|
+
conf.access_token = 'TolNOFka9Uls2DxahNi78A'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
after :all do
|
31
|
+
Yammer.reset!
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'class methods' do
|
35
|
+
|
36
|
+
subject { Yammer::Message }
|
37
|
+
|
38
|
+
describe '#create' do
|
39
|
+
it 'creates a new group' do
|
40
|
+
stub_request(:post, "https://www.yammer.com/api/v1/messages").with(
|
41
|
+
:body => { :body => 'python not ruby', :privacy => 'public' },
|
42
|
+
:headers => {
|
43
|
+
'Accept' => 'application/json',
|
44
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
45
|
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
46
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
47
|
+
}
|
48
|
+
).to_return(
|
49
|
+
:status => 201,
|
50
|
+
:body => '',
|
51
|
+
:headers => {'Location' => 'https://www.yammer.com/api/v1/messages/2'}
|
52
|
+
)
|
53
|
+
subject.create('python not ruby', :privacy => 'public')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#get' do
|
58
|
+
it 'returns message response' do
|
59
|
+
stub_request(:get, "https://www.yammer.com/api/v1/messages/1").with(
|
60
|
+
:headers => {
|
61
|
+
'Accept' => 'application/json',
|
62
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
63
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
64
|
+
}
|
65
|
+
).to_return(
|
66
|
+
:status => 200,
|
67
|
+
:body => fixture('message.json'),
|
68
|
+
:headers => {}
|
69
|
+
)
|
70
|
+
subject.get(1)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
# Copyright (c) Microsoft Corporation
|
4
|
+
# All rights reserved.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
13
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
14
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
15
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
16
|
+
#
|
17
|
+
# See the Apache Version 2.0 License for specific language governing
|
18
|
+
# permissions and limitations under the License.
|
19
|
+
|
20
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
21
|
+
|
22
|
+
describe Yammer::Thread do
|
23
|
+
|
24
|
+
before :all do
|
25
|
+
Yammer.configure do |conf|
|
26
|
+
conf.access_token = 'TolNOFka9Uls2DxahNi78A'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
after :all do
|
31
|
+
Yammer.reset!
|
32
|
+
end
|
33
|
+
|
34
|
+
subject { Yammer::GroupMembership }
|
35
|
+
|
36
|
+
context 'existing public thread' do
|
37
|
+
subject { Yammer::Thread.new(MultiJson.load(fixture("public_thread.json"), :symbolize_keys => true)) }
|
38
|
+
|
39
|
+
describe "#id" do
|
40
|
+
it 'returns id' do
|
41
|
+
expect(subject.id).to eq 11
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#first_reply" do
|
46
|
+
it 'returns first_reply' do
|
47
|
+
expect(subject.first_reply).to be_instance_of(Yammer::Message)
|
48
|
+
expect(subject.first_reply.id).to eq 11
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#last_reply" do
|
53
|
+
it 'returns last_reply' do
|
54
|
+
expect(subject.last_reply).to be_instance_of(Yammer::Message)
|
55
|
+
expect(subject.last_reply.id).to eq 13
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "messages" do
|
60
|
+
it 'makes an http request and hydrates object' do
|
61
|
+
stub_request(:get, "https://www.yammer.com/api/v1/messages/in_thread/11").with(
|
62
|
+
:headers => {
|
63
|
+
'Accept' => 'application/json',
|
64
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
65
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
66
|
+
}
|
67
|
+
).to_return(
|
68
|
+
:status => 200,
|
69
|
+
:body => fixture("messages_in_thread.json"),
|
70
|
+
:headers => {:content_type => "application/json; charset=utf-8"}
|
71
|
+
)
|
72
|
+
|
73
|
+
stub_request(:get, "https://www.yammer.com/api/v1/messages/in_thread/11").
|
74
|
+
with(:headers => {'Accept'=>'application/json', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer', 'User-Agent'=>'Yammer Ruby Gem 0.1.5'}).
|
75
|
+
to_return(:status => 200, :body => "", :headers => {})
|
76
|
+
subject.messages
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'existing private thread' do
|
82
|
+
subject { Yammer::Thread.new(MultiJson.load(fixture("private_thread.json"), :symbolize_keys => true)) }
|
83
|
+
describe "people" do
|
84
|
+
it 'makes an http request and hydrates object' do
|
85
|
+
subject.people.each do |person|
|
86
|
+
expect(person).to be_instance_of(Yammer::User)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,222 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
# Copyright (c) Microsoft Corporation
|
4
|
+
# All rights reserved.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
13
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
14
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
15
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
16
|
+
#
|
17
|
+
# See the Apache Version 2.0 License for specific language governing
|
18
|
+
# permissions and limitations under the License.
|
19
|
+
|
20
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
21
|
+
|
22
|
+
describe Yammer::User do
|
23
|
+
|
24
|
+
before :all do
|
25
|
+
Yammer.configure do |conf|
|
26
|
+
conf.access_token = 'TolNOFka9Uls2DxahNi78A'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
after :all do
|
31
|
+
Yammer.reset!
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'class methods' do
|
35
|
+
|
36
|
+
subject { Yammer::User }
|
37
|
+
|
38
|
+
describe '#create' do
|
39
|
+
it 'creates a new user' do
|
40
|
+
stub_request(:post, "https://www.yammer.com/api/v1/users").with(
|
41
|
+
:body => { :email => 'hacker@yammer-inc.com' },
|
42
|
+
:headers => {
|
43
|
+
'Accept' => 'application/json',
|
44
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
45
|
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
46
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
47
|
+
}
|
48
|
+
).to_return(
|
49
|
+
:status => 201,
|
50
|
+
:body => '',
|
51
|
+
:headers => { 'Location' => 'https://www.yammer.com/api/v1/users/364'}
|
52
|
+
)
|
53
|
+
subject.create('hacker@yammer-inc.com')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#current' do
|
58
|
+
it "should fetch authenticated user's data" do
|
59
|
+
stub_request(:get, "https://www.yammer.com/api/v1/users/current").with(
|
60
|
+
:headers => {
|
61
|
+
'Accept' => 'application/json',
|
62
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
63
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
64
|
+
}
|
65
|
+
).to_return(
|
66
|
+
:status => 200,
|
67
|
+
:body => fixture('user.json'),
|
68
|
+
:headers => {}
|
69
|
+
)
|
70
|
+
subject.current
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'new user object with id' do
|
76
|
+
|
77
|
+
before :each do
|
78
|
+
Yammer::User.identity_map.purge!
|
79
|
+
end
|
80
|
+
|
81
|
+
subject { Yammer::User.new(:id => 1) }
|
82
|
+
|
83
|
+
describe "#id" do
|
84
|
+
it 'returns id' do
|
85
|
+
expect(subject.id).to eq 1
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "calling getter method" do
|
90
|
+
it 'makes an http request and hydrates object' do
|
91
|
+
stub_request(:get, "https://www.yammer.com/api/v1/users/1").with(
|
92
|
+
:headers => {
|
93
|
+
'Accept' => 'application/json',
|
94
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
95
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
96
|
+
}
|
97
|
+
).to_return(
|
98
|
+
:status => 200,
|
99
|
+
:body => fixture('user.json'),
|
100
|
+
:headers => {}
|
101
|
+
)
|
102
|
+
subject.full_name
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "creating duplicate object" do
|
107
|
+
it 'retrieves data from identitymap' do
|
108
|
+
user = Yammer::User.new(:id => 1)
|
109
|
+
stub_request(:get, "https://www.yammer.com/api/v1/users/1").with(
|
110
|
+
:headers => {
|
111
|
+
'Accept' => 'application/json',
|
112
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
113
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
114
|
+
}
|
115
|
+
).to_return(
|
116
|
+
:status => 200,
|
117
|
+
:body => fixture('user.json'),
|
118
|
+
:headers => {}
|
119
|
+
)
|
120
|
+
expect(user.full_name).to eq 'John Smith'
|
121
|
+
|
122
|
+
duplicate = Yammer::User.new(:id => 1)
|
123
|
+
expect(duplicate.full_name).to eq 'John Smith'
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'hydrated user object' do
|
129
|
+
subject { Yammer::User.new(MultiJson.load(fixture('user.json'), :symbolize_keys => true)) }
|
130
|
+
|
131
|
+
describe "#id" do
|
132
|
+
it 'returns id' do
|
133
|
+
expect(subject.id).to eq 2
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe "#email" do
|
138
|
+
it 'returns email addresses' do
|
139
|
+
stub_request(:get, "https://www.yammer.com/api/v1/users/2").
|
140
|
+
with(:headers => {
|
141
|
+
'Accept'=>'application/json',
|
142
|
+
'Authorization'=>"Bearer #{Yammer.access_token}",
|
143
|
+
'User-Agent'=>"Yammer Ruby Gem #{Yammer::Version}"
|
144
|
+
}).to_return(
|
145
|
+
:status => 200,
|
146
|
+
:body => fixture('user.json'),
|
147
|
+
:headers => {}
|
148
|
+
)
|
149
|
+
expect(subject.email).to eq 'jsmith@yammer-inc.com'
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe "#followers" do
|
154
|
+
it 'returns users following user' do
|
155
|
+
stub_request(:get, "https://www.yammer.com/api/v1/users/following/2").
|
156
|
+
with(:headers => {
|
157
|
+
'Accept'=>'application/json',
|
158
|
+
'Authorization'=>"Bearer #{Yammer.access_token}",
|
159
|
+
'User-Agent'=>"Yammer Ruby Gem #{Yammer::Version}"
|
160
|
+
}).to_return(
|
161
|
+
:status => 200,
|
162
|
+
:body => fixture('users_following.json'),
|
163
|
+
:headers => {}
|
164
|
+
)
|
165
|
+
subject.followers
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
describe "#following" do
|
170
|
+
it 'returns users followed by user' do
|
171
|
+
stub_request(:get, "https://www.yammer.com/api/v1/users/followed_by/2").
|
172
|
+
with(:headers => {
|
173
|
+
'Accept'=>'application/json',
|
174
|
+
'Authorization'=>"Bearer #{Yammer.access_token}",
|
175
|
+
'User-Agent'=>"Yammer Ruby Gem #{Yammer::Version}"
|
176
|
+
}).to_return(
|
177
|
+
:status => 200,
|
178
|
+
:body => fixture('users_followed.json'),
|
179
|
+
:headers => {}
|
180
|
+
)
|
181
|
+
subject.following
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe "#delete" do
|
186
|
+
it 'deletes user' do
|
187
|
+
stub_request(:delete, "https://www.yammer.com/api/v1/users/2").
|
188
|
+
with(:headers => {
|
189
|
+
'Accept'=>'application/json',
|
190
|
+
'Authorization'=>"Bearer #{Yammer.access_token}",
|
191
|
+
'User-Agent'=>"Yammer Ruby Gem #{Yammer::Version}"
|
192
|
+
}).to_return(
|
193
|
+
:status => 200,
|
194
|
+
:body => '',
|
195
|
+
:headers => {}
|
196
|
+
)
|
197
|
+
subject.delete!
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
describe '#update' do
|
202
|
+
context 'with id as an integer' do
|
203
|
+
it 'updates user' do
|
204
|
+
stub_request(:put, "https://www.yammer.com/api/v1/users/2").with(
|
205
|
+
:body => { :last_name => 'tiabas' },
|
206
|
+
:headers => {
|
207
|
+
'Accept' => 'application/json',
|
208
|
+
'Authorization' => "Bearer #{Yammer.access_token}",
|
209
|
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
210
|
+
'User-Agent' => "Yammer Ruby Gem #{Yammer::Version}"
|
211
|
+
}
|
212
|
+
).to_return(
|
213
|
+
:status => 200,
|
214
|
+
:body => '',
|
215
|
+
:headers => { 'Location' => 'https://www.yammer.com/api/v1/users/2'}
|
216
|
+
)
|
217
|
+
subject.update!(:last_name => 'tiabas')
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|