Skip to content

Commit 151e9c0

Browse files
committed
Adding spec for collection proxy.
1 parent 545f5eb commit 151e9c0

File tree

2 files changed

+31
-38
lines changed

2 files changed

+31
-38
lines changed

intercom/collection_proxy.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ def next(self):
4242
instance = self.collection_cls(**resource)
4343
return instance
4444

45+
def __getitem__(self, index):
46+
for i in range(index):
47+
self.next()
48+
return self.next()
49+
4550
def get_first_page(self):
4651
# get the first page of results
4752
return self.get_page(self.finder_url, self.finder_params)

tests/unit/collection_proxy_spec.py

Lines changed: 26 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import json
33
import re
44
from describe import expect
5-
from intercom.admin import Admin
6-
from intercom.collection_proxy import CollectionProxy
5+
from intercom.user import User
6+
from tests.unit import page_of_users
77

88
get = httpretty.GET
99
r = re.compile
@@ -13,43 +13,31 @@ class DescribeIntercomCollectionProxy:
1313

1414
@httpretty.activate
1515
def it_stops_iterating_if_no_next_link(self):
16-
body = json.dumps({})
16+
body = json.dumps(page_of_users(include_next_link=False))
1717
httpretty.register_uri(get, r(r"/users"), body=body)
18-
all = Admin.all()
19-
expect(all).to.be_instance_of(CollectionProxy)
18+
emails = [user.email for user in User.all()]
19+
expect(emails) == ['user1@example.com', 'user2@example.com', 'user3@example.com']
2020

21+
@httpretty.activate
22+
def it_keeps_iterating_if_next_link(self):
23+
page1 = json.dumps(page_of_users(include_next_link=True))
24+
page2 = json.dumps(page_of_users(include_next_link=False))
25+
httpretty.register_uri(get, r(r"/users$"), body=page1)
26+
httpretty.register_uri(
27+
get, r(r'https://api.intercom.io/users\?per_page=50&page=2'), body=page2,
28+
match_querystring=True)
29+
emails = [user.email for user in User.all()]
30+
expect(emails) == ['user1@example.com', 'user2@example.com', 'user3@example.com'] * 2
2131

22-
# require "spec_helper"
23-
24-
# describe Intercom::CollectionProxy do
25-
26-
# it "stops iterating if no next link" do
27-
# Intercom.expects(:get).with("/users", {}).returns(page_of_users(include_next_link:false))
28-
# emails = []
29-
# Intercom::User.all.each { |user| emails << user.email }
30-
# emails.must_equal %W(user1@example.com user2@example.com user3@example.com)
31-
# end
32-
33-
# it "keeps iterating if next link" do
34-
# Intercom.expects(:get).with("/users", {}).returns(page_of_users(include_next_link:true))
35-
# Intercom.expects(:get).with('https://api.intercom.io/users?per_page=50&page=2', {}).returns(page_of_users(include_next_link:false))
36-
# emails = []
37-
# Intercom::User.all.each { |user| emails << user.email }
38-
# end
39-
40-
# it "supports indexed array access" do
41-
# Intercom.expects(:get).with("/users", {}).returns(page_of_users(include_next_link:false))
42-
# Intercom::User.all[0].email.must_equal 'user1@example.com'
43-
# end
44-
45-
# it "supports map" do
46-
# Intercom.expects(:get).with("/users", {}).returns(page_of_users(include_next_link:false))
47-
# emails = Intercom::User.all.map { |user| user.email }
48-
# emails.must_equal %W(user1@example.com user2@example.com user3@example.com)
49-
# end
32+
@httpretty.activate
33+
def it_supports_indexed_array_access(self):
34+
body = json.dumps(page_of_users(include_next_link=False))
35+
httpretty.register_uri(get, r(r"/users"), body=body)
36+
expect(User.all()[0].email) == 'user1@example.com'
5037

51-
# it "supports querying" do
52-
# Intercom.expects(:get).with("/users", {:tag_name => 'Taggart J'}).returns(page_of_users(include_next_link:false))
53-
# Intercom::User.find_all(:tag_name => 'Taggart J').map(&:email).must_equal %W(user1@example.com user2@example.com user3@example.com)
54-
# end
55-
# end
38+
@httpretty.activate
39+
def it_supports_querying(self):
40+
body = json.dumps(page_of_users(include_next_link=False))
41+
httpretty.register_uri(get, r(r"/users"), body=body)
42+
emails = [user.email for user in User.find_all(tag_name='Taggart J')]
43+
expect(emails) == ['user1@example.com', 'user2@example.com', 'user3@example.com']

0 commit comments

Comments
 (0)