trubl 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +8 -0
- data/LICENSE.md +20 -0
- data/README.md +72 -0
- data/Rakefile +11 -0
- data/lib/trubl.rb +30 -0
- data/lib/trubl/api/category.rb +33 -0
- data/lib/trubl/api/channel.rb +32 -0
- data/lib/trubl/api/conversation.rb +31 -0
- data/lib/trubl/api/hashtags.rb +45 -0
- data/lib/trubl/api/me.rb +68 -0
- data/lib/trubl/api/search.rb +35 -0
- data/lib/trubl/api/streams.rb +14 -0
- data/lib/trubl/api/suggested_users.rb +16 -0
- data/lib/trubl/api/touts.rb +143 -0
- data/lib/trubl/api/users.rb +79 -0
- data/lib/trubl/authorization.rb +7 -0
- data/lib/trubl/authorizations.rb +8 -0
- data/lib/trubl/base.rb +37 -0
- data/lib/trubl/category.rb +7 -0
- data/lib/trubl/channel.rb +7 -0
- data/lib/trubl/client.rb +252 -0
- data/lib/trubl/collection.rb +43 -0
- data/lib/trubl/conversation.rb +7 -0
- data/lib/trubl/hashtag.rb +7 -0
- data/lib/trubl/hashtags.rb +8 -0
- data/lib/trubl/oauth.rb +56 -0
- data/lib/trubl/pagination.rb +17 -0
- data/lib/trubl/tout.rb +29 -0
- data/lib/trubl/touts.rb +8 -0
- data/lib/trubl/user.rb +29 -0
- data/lib/trubl/users.rb +8 -0
- data/lib/trubl/version.rb +16 -0
- data/lib/trubl/widget.rb +15 -0
- data/lib/trubl/widgets.rb +8 -0
- data/spec/fixtures/category_response.json +1 -0
- data/spec/fixtures/category_touts_response.json +689 -0
- data/spec/fixtures/category_users_response.json +1709 -0
- data/spec/fixtures/channel_response.json +1 -0
- data/spec/fixtures/channel_touts_response.json +1 -0
- data/spec/fixtures/channel_users_response.json +1 -0
- data/spec/fixtures/client1_auth_resp.json +1 -0
- data/spec/fixtures/client2_auth_resp.json +1 -0
- data/spec/fixtures/conversation_authors_response.json +37 -0
- data/spec/fixtures/conversation_response.json +41 -0
- data/spec/fixtures/conversation_touts_response.json +107 -0
- data/spec/fixtures/featured_touts_response.json +4249 -0
- data/spec/fixtures/hashtag_response.json +1 -0
- data/spec/fixtures/hashtags_touts_response.json +304 -0
- data/spec/fixtures/latest_touts_response.json +3600 -0
- data/spec/fixtures/like_tout_response.json +109 -0
- data/spec/fixtures/me_authorizations_response.json +14 -0
- data/spec/fixtures/me_fb_sharing_response.json +21 -0
- data/spec/fixtures/me_friends_response.json +121 -0
- data/spec/fixtures/me_retrieve_user_friends_response.json +174 -0
- data/spec/fixtures/me_retrieve_user_liked_touts_response.json +1255 -0
- data/spec/fixtures/me_retrieve_user_touts_response.json +479 -0
- data/spec/fixtures/retout_tout_response.json +99 -0
- data/spec/fixtures/retrieve_me_response.json +35 -0
- data/spec/fixtures/retrieve_tout.json +98 -0
- data/spec/fixtures/retrieve_tout_response.json +98 -0
- data/spec/fixtures/search_hashtags_response.json +100 -0
- data/spec/fixtures/search_touts_response.json +304 -0
- data/spec/fixtures/search_users_response.json +37 -0
- data/spec/fixtures/suggested_hashtags_response.json +137 -0
- data/spec/fixtures/suggested_users_response.json +1 -0
- data/spec/fixtures/test.mp4 +0 -0
- data/spec/fixtures/tout.json +98 -0
- data/spec/fixtures/tout_conversation_response.json +41 -0
- data/spec/fixtures/touts_liked_by_response.json +65 -0
- data/spec/fixtures/touts_liked_by_user_response.json +106 -0
- data/spec/fixtures/touts_me_updates_response.json +357 -0
- data/spec/fixtures/touts_search_results.json +304 -0
- data/spec/fixtures/trending_hashtags_response.json +149 -0
- data/spec/fixtures/unlike_tout_response.json +109 -0
- data/spec/fixtures/update_me_response.json +35 -0
- data/spec/fixtures/user.json +28 -0
- data/spec/fixtures/user_followers.json +1409 -0
- data/spec/fixtures/user_touts_response.json +479 -0
- data/spec/fixtures/user_with_utf8.json +29 -0
- data/spec/fixtures/users.json +58 -0
- data/spec/fixtures/users_search_results.json +37 -0
- data/spec/fixtures/widgets.json +142 -0
- data/spec/spec_helper.rb +61 -0
- data/spec/trubl/api/category_spec.rb +39 -0
- data/spec/trubl/api/channel_spec.rb +39 -0
- data/spec/trubl/api/conversation_spec.rb +38 -0
- data/spec/trubl/api/hashtags_spec.rb +60 -0
- data/spec/trubl/api/me_spec.rb +98 -0
- data/spec/trubl/api/search_spec.rb +40 -0
- data/spec/trubl/api/streams_spec.rb +18 -0
- data/spec/trubl/api/suggested_users_spec.rb +17 -0
- data/spec/trubl/api/touts_spec.rb +215 -0
- data/spec/trubl/api/users_spec.rb +122 -0
- data/spec/trubl/base_spec.rb +88 -0
- data/spec/trubl/category_spec.rb +15 -0
- data/spec/trubl/channel_spec.rb +16 -0
- data/spec/trubl/client_spec.rb +141 -0
- data/spec/trubl/conversation_spec.rb +13 -0
- data/spec/trubl/hashtag_spec.rb +11 -0
- data/spec/trubl/oauth_spec.rb +27 -0
- data/spec/trubl/tout_spec.rb +41 -0
- data/spec/trubl/user_spec.rb +65 -0
- data/spec/trubl_spec.rb +23 -0
- data/trubl.gemspec +41 -0
- metadata +494 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"user": {
|
3
|
+
"avatar": {
|
4
|
+
"large": {
|
5
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/large/TwitterIcon2.jpg"
|
6
|
+
},
|
7
|
+
"medium": {
|
8
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/medium/TwitterIcon2.jpg"
|
9
|
+
},
|
10
|
+
"profile": {
|
11
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/profile/TwitterIcon2.jpg"
|
12
|
+
},
|
13
|
+
"small": {
|
14
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/small/TwitterIcon2.jpg"
|
15
|
+
}
|
16
|
+
},
|
17
|
+
"bio": "It gladdens me to know that Baldr's father [Odin] makes ready the benches for a banquet. Soon we shall be drinking ale from the curved horns. The champion who comes into Odin's dwelling [Valhalla] does not lament his death. I shall not enter his hall with words of fear upon my lips. The Æsir will welcome me. Death comes without lamenting… Eager am I to depart. The Dísir summon me home, those whom Odin sends for me Valkyries from the halls of the Lord of Hosts. Gladly shall I drink ale in the high-seat with the Æsir. The days of my life are ended. I laugh as I die.",
|
18
|
+
"followers_count": 1564,
|
19
|
+
"friendly_name": "Ragnarr Loðbrók",
|
20
|
+
"friends_count": 2,
|
21
|
+
"fullname": "Ragnarr Loðbrók",
|
22
|
+
"location": "The Norseland",
|
23
|
+
"touts_count": 28,
|
24
|
+
"uid": "loðbrók",
|
25
|
+
"username": "Ragnarr Loðbrók",
|
26
|
+
"verified": true
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"user": {
|
4
|
+
"avatar": {
|
5
|
+
"large": {
|
6
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/large/TwitterIcon2.jpg"
|
7
|
+
},
|
8
|
+
"medium": {
|
9
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/medium/TwitterIcon2.jpg"
|
10
|
+
},
|
11
|
+
"profile": {
|
12
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/profile/TwitterIcon2.jpg"
|
13
|
+
},
|
14
|
+
"small": {
|
15
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/small/TwitterIcon2.jpg"
|
16
|
+
}
|
17
|
+
},
|
18
|
+
"bio": "\"My favorite $#*! ever\" - Questlove\r\n\r\nKarmin is Amy Ellis' pronounced rap flow and searing R&B influenced pop vocals married with Nick Noonan's multi-instrumental talent and smooth harmonies. The duo's dynamic chemistry results in a perfect ble",
|
19
|
+
"followers_count": 1564,
|
20
|
+
"friendly_name": "Wwe",
|
21
|
+
"friends_count": 2,
|
22
|
+
"fullname": "Wwe",
|
23
|
+
"location": "",
|
24
|
+
"touts_count": 28,
|
25
|
+
"uid": "wwe",
|
26
|
+
"username": "Wwe",
|
27
|
+
"verified": true
|
28
|
+
}
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"user": {
|
32
|
+
"avatar": {
|
33
|
+
"large": {
|
34
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/large/TwitterIcon2.jpg"
|
35
|
+
},
|
36
|
+
"medium": {
|
37
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/medium/TwitterIcon2.jpg"
|
38
|
+
},
|
39
|
+
"profile": {
|
40
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/profile/TwitterIcon2.jpg"
|
41
|
+
},
|
42
|
+
"small": {
|
43
|
+
"http_url": "http://avatars.tout.com/u/d5dec37b9602443a03aaf9203949998b/small/TwitterIcon2.jpg"
|
44
|
+
}
|
45
|
+
},
|
46
|
+
"bio": "\"My favorite $#*! ever\" - Questlove\r\n\r\nKarmin is Amy Ellis' pronounced rap flow and searing R&B influenced pop vocals married with Nick Noonan's multi-instrumental talent and smooth harmonies. The duo's dynamic chemistry results in a perfect ble",
|
47
|
+
"followers_count": 1564,
|
48
|
+
"friendly_name": "Zackryder",
|
49
|
+
"friends_count": 2,
|
50
|
+
"fullname": "Zackryder",
|
51
|
+
"location": "",
|
52
|
+
"touts_count": 28,
|
53
|
+
"uid": "zackryder",
|
54
|
+
"username": "Zackryder",
|
55
|
+
"verified": true
|
56
|
+
}
|
57
|
+
}
|
58
|
+
]
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"pagination": {
|
3
|
+
"current_page": 1,
|
4
|
+
"per_page": 50,
|
5
|
+
"total_entries": 1
|
6
|
+
},
|
7
|
+
"users": [
|
8
|
+
{
|
9
|
+
"user": {
|
10
|
+
"avatar": {
|
11
|
+
"large": {
|
12
|
+
"http_url": "http://avatars.tout.com/u/c8e5ce4920132c340a1004506cf92a3b/large/MelissaJHartavatar.jpg"
|
13
|
+
},
|
14
|
+
"medium": {
|
15
|
+
"http_url": "http://avatars.tout.com/u/c8e5ce4920132c340a1004506cf92a3b/medium/MelissaJHartavatar.jpg"
|
16
|
+
},
|
17
|
+
"profile": {
|
18
|
+
"http_url": "http://avatars.tout.com/u/c8e5ce4920132c340a1004506cf92a3b/profile/MelissaJHartavatar.jpg"
|
19
|
+
},
|
20
|
+
"small": {
|
21
|
+
"http_url": "http://avatars.tout.com/u/c8e5ce4920132c340a1004506cf92a3b/small/MelissaJHartavatar.jpg"
|
22
|
+
}
|
23
|
+
},
|
24
|
+
"bio": "You may know me as Clarissa or Sabrina but my 2 boys Mason and Brady call me Mommy! Thats my favorite role yet!",
|
25
|
+
"followers_count": 806,
|
26
|
+
"friendly_name": "Melissa Joan Hart ",
|
27
|
+
"friends_count": 0,
|
28
|
+
"fullname": "Melissa Joan Hart ",
|
29
|
+
"location": "Living life!",
|
30
|
+
"touts_count": 44,
|
31
|
+
"uid": "mellyjhart",
|
32
|
+
"username": "MellyJHart",
|
33
|
+
"verified": true
|
34
|
+
}
|
35
|
+
}
|
36
|
+
]
|
37
|
+
}
|
@@ -0,0 +1,142 @@
|
|
1
|
+
{ "widgets": [
|
2
|
+
{
|
3
|
+
"widget": {
|
4
|
+
"uid": "d0cr9c",
|
5
|
+
"style": "broadcast",
|
6
|
+
"orientation": "vertical",
|
7
|
+
"title": "Widget Builder Marketing Page",
|
8
|
+
"width": "300",
|
9
|
+
"height": "600",
|
10
|
+
"has_anchor_tout": true,
|
11
|
+
"first_tout_open": true,
|
12
|
+
"order": "newest",
|
13
|
+
"commentable": true,
|
14
|
+
"open_graph_enabled": false,
|
15
|
+
"default_text": "",
|
16
|
+
"shareable": true,
|
17
|
+
"header_bg_color": "1985b7",
|
18
|
+
"footer_bg_color": "ffffff",
|
19
|
+
"body_bg_color": "e8e8e8",
|
20
|
+
"font_color": "ffffff",
|
21
|
+
"font_family": "Palatino Linotype",
|
22
|
+
"header_text": "Example Widget with Anchor Tout ___________________",
|
23
|
+
"header_link": "",
|
24
|
+
"display_header": true,
|
25
|
+
"allow_embed": true,
|
26
|
+
"created_at": "2012-08-31T13:05:27-07:00",
|
27
|
+
"updated_at": "2012-09-08T11:40:46-07:00",
|
28
|
+
"stream_id": 2496,
|
29
|
+
"autopopulate": false,
|
30
|
+
"autoplay": false,
|
31
|
+
"autorefresh": false,
|
32
|
+
"autorefresh_interval": null,
|
33
|
+
"ui_locale": "en-US",
|
34
|
+
"user": {
|
35
|
+
"username": "TeamTout",
|
36
|
+
"uid": "teamtout",
|
37
|
+
"fullname": "Team Tout",
|
38
|
+
"friendly_name": "Team Tout",
|
39
|
+
"verified": true,
|
40
|
+
"touts_count": 2176,
|
41
|
+
"followers_count": 25811,
|
42
|
+
"friends_count": 1731,
|
43
|
+
"last_tout_recorded_at": "2012-12-21T00:53:49Z",
|
44
|
+
"created_at": "2011-06-14T17:21:38Z",
|
45
|
+
"avatar": {
|
46
|
+
"profile": {
|
47
|
+
"http_url": "http://avatars-staging.tout.com/u/b49e63bc2e07da02c0d423f66a467a88/profile/ToutLogoAvatar.jpg"
|
48
|
+
},
|
49
|
+
"large": {
|
50
|
+
"http_url": "http://avatars-staging.tout.com/u/b49e63bc2e07da02c0d423f66a467a88/large/ToutLogoAvatar.jpg"
|
51
|
+
},
|
52
|
+
"medium": {
|
53
|
+
"http_url": "http://avatars-staging.tout.com/u/b49e63bc2e07da02c0d423f66a467a88/medium/ToutLogoAvatar.jpg"
|
54
|
+
},
|
55
|
+
"small": {
|
56
|
+
"http_url": "http://avatars-staging.tout.com/u/b49e63bc2e07da02c0d423f66a467a88/small/ToutLogoAvatar.jpg"
|
57
|
+
}
|
58
|
+
}
|
59
|
+
},
|
60
|
+
"anchor_tout": {
|
61
|
+
"uid": "j6l3uu",
|
62
|
+
"text": "This is an anchor Tout. ",
|
63
|
+
"parsed_text": {
|
64
|
+
"hashtags": [
|
65
|
+
|
66
|
+
],
|
67
|
+
"mentions": [
|
68
|
+
|
69
|
+
],
|
70
|
+
"urls": [
|
71
|
+
|
72
|
+
]
|
73
|
+
},
|
74
|
+
"views_count": 254,
|
75
|
+
"likes_count": 10,
|
76
|
+
"total_likes_count": 10,
|
77
|
+
"replies_count": 1,
|
78
|
+
"retouts_count": 0,
|
79
|
+
"recorded_at": "2012-09-05T06:32:51Z",
|
80
|
+
"created_at": "2012-09-05T06:34:21Z",
|
81
|
+
"privacy": "public",
|
82
|
+
"user": {
|
83
|
+
"username": "AnchorTout",
|
84
|
+
"uid": "anchortout",
|
85
|
+
"fullname": "",
|
86
|
+
"verified": false,
|
87
|
+
"location": "",
|
88
|
+
"headline": "",
|
89
|
+
"bio": "",
|
90
|
+
"friendly_name": "AnchorTout",
|
91
|
+
"touts_count": 6,
|
92
|
+
"followers_count": 0,
|
93
|
+
"friends_count": 0,
|
94
|
+
"last_tout_recorded_at": "2012-09-18T02:11:07Z",
|
95
|
+
"created_at": "2012-09-05T05:45:10Z",
|
96
|
+
"avatar": {
|
97
|
+
"profile": {
|
98
|
+
"http_url": "http://avatars-staging.tout.com/u/83ae660c92aa860fbe368ab2278ad96d/profile/Screen_shot_2012-09-04_at_11.35.57_PM.png"
|
99
|
+
},
|
100
|
+
"large": {
|
101
|
+
"http_url": "http://avatars-staging.tout.com/u/83ae660c92aa860fbe368ab2278ad96d/large/Screen_shot_2012-09-04_at_11.35.57_PM.png"
|
102
|
+
},
|
103
|
+
"medium": {
|
104
|
+
"http_url": "http://avatars-staging.tout.com/u/83ae660c92aa860fbe368ab2278ad96d/medium/Screen_shot_2012-09-04_at_11.35.57_PM.png"
|
105
|
+
},
|
106
|
+
"small": {
|
107
|
+
"http_url": "http://avatars-staging.tout.com/u/83ae660c92aa860fbe368ab2278ad96d/small/Screen_shot_2012-09-04_at_11.35.57_PM.png"
|
108
|
+
}
|
109
|
+
}
|
110
|
+
},
|
111
|
+
"image": {
|
112
|
+
"poster": {
|
113
|
+
"width": 480,
|
114
|
+
"height": 360,
|
115
|
+
"http_url": "http://thumbnails-staging.tout.com/watermark/704197b1a83f2421c3f4d39525ad3486/poster-0.jpg"
|
116
|
+
},
|
117
|
+
"thumbnail": {
|
118
|
+
"width": 150,
|
119
|
+
"height": 112,
|
120
|
+
"http_url": "http://thumbnails-staging.tout.com/watermark/704197b1a83f2421c3f4d39525ad3486/thumbs-0.jpg"
|
121
|
+
}
|
122
|
+
},
|
123
|
+
"video": {
|
124
|
+
"type": "native",
|
125
|
+
"duration": 15,
|
126
|
+
"mp4": {
|
127
|
+
"width": 480,
|
128
|
+
"height": 360,
|
129
|
+
"http_url": "http://videos-staging.tout.com/watermark/mp4/704197b1a83f2421c3f4d39525ad3486.mp4"
|
130
|
+
}
|
131
|
+
}
|
132
|
+
},
|
133
|
+
"stream_uid": "bybq2v",
|
134
|
+
"stream_pusher_channel": "staging-filteredstream-bybq2v-7abb45b873a9d4b150171853d6885c3e",
|
135
|
+
"moderation_set": {
|
136
|
+
"uid": "vgn056",
|
137
|
+
"auto_approve": true
|
138
|
+
}
|
139
|
+
}
|
140
|
+
}
|
141
|
+
|
142
|
+
] }
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'json'
|
3
|
+
require 'rspec'
|
4
|
+
require 'rspec_encoding_matchers'
|
5
|
+
require 'webmock/rspec'
|
6
|
+
require_relative '../lib/trubl'
|
7
|
+
|
8
|
+
class MockResponse
|
9
|
+
attr_accessor :body
|
10
|
+
def initialize(file)
|
11
|
+
@body = fixture(file)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def authed_client_for(user)
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
def stub_delete(uri)
|
20
|
+
request_stub(:delete, uri)
|
21
|
+
end
|
22
|
+
|
23
|
+
def stub_post(uri)
|
24
|
+
request_stub(:post, uri)
|
25
|
+
end
|
26
|
+
|
27
|
+
def stub_get(uri)
|
28
|
+
request_stub(:get, uri)
|
29
|
+
end
|
30
|
+
|
31
|
+
def stub_api_get(path, base_uri = "https://api.tout.com/api/v1/")
|
32
|
+
stub_get URI.join(base_uri, path).to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
def api_get_request(path, base_uri = "https://api.tout.com/api/v1/")
|
36
|
+
some_request :get, URI.join(base_uri, path).to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
def stub_put(uri)
|
40
|
+
request_stub(:put, uri)
|
41
|
+
end
|
42
|
+
|
43
|
+
def request_stub(method, uri)
|
44
|
+
stub_request(method, /.*?#{uri}.*?/)
|
45
|
+
end
|
46
|
+
|
47
|
+
def some_request(method, uri)
|
48
|
+
a_request(method, /.*?#{uri}.*?/)
|
49
|
+
end
|
50
|
+
|
51
|
+
def fixture(file)
|
52
|
+
File.read(File.expand_path('../fixtures/', __FILE__) +'/' + file)
|
53
|
+
end
|
54
|
+
|
55
|
+
def json_fixture(file)
|
56
|
+
JSON.parse(fixture(file))
|
57
|
+
end
|
58
|
+
|
59
|
+
def response_fixture(file)
|
60
|
+
MockResponse.new(file)
|
61
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
require 'trubl/client'
|
3
|
+
require 'webmock'
|
4
|
+
|
5
|
+
describe Trubl::API::Category do
|
6
|
+
|
7
|
+
let(:category_uid){"music"}
|
8
|
+
|
9
|
+
it '.retrieve_category parses a category response correctly' do
|
10
|
+
stub_api_get("categories/#{category_uid}").to_return(:body => fixture("category_response.json"))
|
11
|
+
category = Trubl::Client.new.retrieve_category(category_uid)
|
12
|
+
expect(category).to be_a Trubl::Category
|
13
|
+
expect(category.uid).to eq(category_uid)
|
14
|
+
api_get_request("categories/#{category_uid}").should have_been_made
|
15
|
+
end
|
16
|
+
|
17
|
+
it '.retrieve_category_users parses category users correctly' do
|
18
|
+
stub_api_get("categories/#{category_uid}/users").to_return(:body => fixture("category_users_response.json"))
|
19
|
+
users = Trubl::Client.new.retrieve_category_users(category_uid)
|
20
|
+
expect(users).to be_a Trubl::Users
|
21
|
+
#expect(users.pagination).to be_a Trubl::Pagination
|
22
|
+
users.each do |u|
|
23
|
+
expect(u).to be_a Trubl::User
|
24
|
+
end
|
25
|
+
api_get_request("categories/#{category_uid}/users").should have_been_made
|
26
|
+
end
|
27
|
+
|
28
|
+
it '.retrieve_category_touts parses category touts correctly' do
|
29
|
+
stub_api_get("categories/#{category_uid}/touts").to_return(:body => fixture("category_touts_response.json"))
|
30
|
+
touts = Trubl::Client.new.retrieve_category_touts(category_uid)
|
31
|
+
expect(touts).to be_a Trubl::Touts
|
32
|
+
#expect(touts.pagination).to be_a Trubl::Pagination
|
33
|
+
touts.each do |u|
|
34
|
+
expect(u).to be_a Trubl::Tout
|
35
|
+
end
|
36
|
+
api_get_request("categories/#{category_uid}/touts").should have_been_made
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
require 'trubl/client'
|
3
|
+
require 'webmock'
|
4
|
+
|
5
|
+
describe Trubl::API::Channel do
|
6
|
+
|
7
|
+
let(:channel_uid){"new-york-fashion-week"}
|
8
|
+
|
9
|
+
it '.retrieve_channel parses a channel response correctly' do
|
10
|
+
stub_api_get("channels/#{channel_uid}").to_return(:body => fixture("channel_response.json"))
|
11
|
+
channel = Trubl::Client.new.retrieve_channel(channel_uid)
|
12
|
+
expect(channel).to be_a Trubl::Channel
|
13
|
+
expect(channel.uid).to eq(channel_uid)
|
14
|
+
api_get_request("channels/#{channel_uid}").should have_been_made
|
15
|
+
end
|
16
|
+
|
17
|
+
it '.retrieve_channel_users parses channel users correctly' do
|
18
|
+
stub_api_get("channels/#{channel_uid}/users").to_return(:body => fixture("channel_users_response.json"))
|
19
|
+
users = Trubl::Client.new.retrieve_channel_users(channel_uid)
|
20
|
+
expect(users).to be_a Trubl::Users
|
21
|
+
#expect(users.pagination).to be_a Trubl::Pagination
|
22
|
+
users.each do |u|
|
23
|
+
expect(u).to be_a Trubl::User
|
24
|
+
end
|
25
|
+
api_get_request("channels/#{channel_uid}/users").should have_been_made
|
26
|
+
end
|
27
|
+
|
28
|
+
it '.retrieve_channel_touts parses channel touts correctly' do
|
29
|
+
stub_api_get("channels/#{channel_uid}/touts").to_return(:body => fixture("channel_touts_response.json"))
|
30
|
+
touts = Trubl::Client.new.retrieve_channel_touts(channel_uid)
|
31
|
+
expect(touts).to be_a Trubl::Touts
|
32
|
+
#expect(touts.pagination).to be_a Trubl::Pagination
|
33
|
+
touts.each do |u|
|
34
|
+
expect(u).to be_a Trubl::Tout
|
35
|
+
end
|
36
|
+
api_get_request("channels/#{channel_uid}/touts").should have_been_made
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
require 'trubl/client'
|
3
|
+
require 'webmock'
|
4
|
+
|
5
|
+
describe Trubl::API::Conversation do
|
6
|
+
|
7
|
+
it '.retrieve_conversation parses a conversation response correctly' do
|
8
|
+
stub_get("https://api.tout.com/api/v1/conversations/iummti53").to_return(:body => fixture("conversation_response.json"))
|
9
|
+
conversation = Trubl::Client.new.retrieve_conversation("iummti53")
|
10
|
+
expect(conversation).to be_a Trubl::Conversation
|
11
|
+
p conversation
|
12
|
+
expect(conversation.uid).to eq("iummti53")
|
13
|
+
some_request(:get, "/api/v1/conversations/iummti53").should have_been_made
|
14
|
+
end
|
15
|
+
|
16
|
+
it '.retrieve_conversation_participants parses conversation participants correctly' do
|
17
|
+
stub_get("https://api.tout.com/api/v1/conversations/iummti53/authors").to_return(:body => fixture("conversation_authors_response.json"))
|
18
|
+
users = Trubl::Client.new.retrieve_conversation_participants("iummti53")
|
19
|
+
expect(users).to be_a Trubl::Users
|
20
|
+
#expect(users.pagination).to be_a Trubl::Pagination
|
21
|
+
users.each do |u|
|
22
|
+
expect(u).to be_a Trubl::User
|
23
|
+
end
|
24
|
+
some_request(:get, "/api/v1/conversations/iummti53/authors").should have_been_made
|
25
|
+
end
|
26
|
+
|
27
|
+
it '.retrieve_conversation_touts parses conversation touts correctly' do
|
28
|
+
stub_get("https://api.tout.com/api/v1/conversations/iummti53/touts").to_return(:body => fixture("conversation_touts_response.json"))
|
29
|
+
touts = Trubl::Client.new.retrieve_conversation_touts("iummti53")
|
30
|
+
expect(touts).to be_a Trubl::Touts
|
31
|
+
#expect(touts.pagination).to be_a Trubl::Pagination
|
32
|
+
touts.each do |u|
|
33
|
+
expect(u).to be_a Trubl::Tout
|
34
|
+
end
|
35
|
+
some_request(:get, "/api/v1/conversations/iummti53/touts").should have_been_made
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|