Skip to content

Commit 9adaa4e

Browse files
committed
Adding Save and All ops to Company.
Adding tests for examples in the README.md
1 parent 6687ec0 commit 9adaa4e

File tree

3 files changed

+96
-2
lines changed

3 files changed

+96
-2
lines changed

intercom/company.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
from intercom.user import Resource
2+
from intercom.api_operations.all import All
23
from intercom.api_operations.count import Count
34
from intercom.api_operations.find import Find
45
from intercom.api_operations.load import Load
6+
from intercom.api_operations.save import Save
57

68

7-
class Company(Resource, Count, Find, Load):
9+
class Company(Resource, Count, Find, All, Save, Load):
810
update_verb = 'post'
911
identity_vars = ['id', 'company_id']

intercom/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def constantize_singular_resource_name(resource_name):
2222

2323

2424
def resource_class_to_collection_name(cls):
25-
return cls.__name__.lower() + "s"
25+
return pluralize(cls.__name__.lower())
2626

2727

2828
def resource_class_to_name(cls):

tests/integration/test_company.py

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from datetime import datetime
4+
import os
5+
import time
6+
import unittest
7+
from intercom import Intercom
8+
from intercom.company import Company
9+
from intercom.user import User
10+
11+
Intercom.app_id = os.environ.get('INTERCOM_APP_ID')
12+
Intercom.app_api_key = os.environ.get('INTERCOM_APP_API_KEY')
13+
14+
15+
class CompanyTest(unittest.TestCase):
16+
email = "ada@example.com"
17+
18+
@classmethod
19+
def setup_class(cls):
20+
# get company
21+
cls.company = Company.all()[0]
22+
# get user
23+
cls.user = User.find(email=cls.email)
24+
if not hasattr(cls.user, 'user_id'):
25+
# Create a user
26+
cls.user = User.create(
27+
email=cls.email,
28+
user_id="ada",
29+
name="Ada Lovelace")
30+
31+
def test_add_user(self):
32+
user = User.find(email=self.email)
33+
user.companies = [
34+
{"company_id": 6, "name": "Intercom"},
35+
{"company_id": 9, "name": "Test Company"}
36+
]
37+
user.save()
38+
user = User.find(email=self.email)
39+
self.assertEqual(len(user.companies), 2)
40+
self.assertEqual(user.companies[0].company_id, "9")
41+
42+
def test_add_user_custom_attributes(self):
43+
user = User.find(email=self.email)
44+
user.companies = [
45+
{
46+
"id": 6,
47+
"name": "Intercom",
48+
"custom_attributes": {
49+
"referral_source": "Google"
50+
}
51+
}
52+
]
53+
user.save()
54+
user = User.find(email=self.email)
55+
self.assertEqual(len(user.companies), 2)
56+
self.assertEqual(user.companies[0].company_id, "9")
57+
58+
def test_find_by_company_id(self):
59+
# Find a company by company_id
60+
company = Company.find(company_id=self.company.company_id)
61+
self.assertEqual(company.company_id, self.company.company_id)
62+
63+
def test_find_by_company_name(self):
64+
# Find a company by name
65+
company = Company.find(name=self.company.name)
66+
self.assertEqual(company.name, self.company.name)
67+
68+
def test_find_by_id(self):
69+
# Find a company by _id
70+
company = Company.find(id=self.company.id)
71+
self.assertEqual(company.company_id, self.company.company_id)
72+
73+
def test_update(self):
74+
# Find a company by id
75+
company = Company.find(id=self.company.id)
76+
# Update a company
77+
now = datetime.utcnow()
78+
updated_name = 'Company %s' % (time.mktime(now.timetuple()))
79+
company.name = updated_name
80+
company.save()
81+
company = Company.find(id=self.company.id)
82+
self.assertEqual(company.name, updated_name)
83+
84+
def test_iterate(self):
85+
# Iterate over all companies
86+
for company in Company.all():
87+
self.assertTrue(company.id is not None)
88+
89+
# def test_users(self):
90+
# company = Company.find(id=self.company.id)
91+
# # Get a list of users in a company
92+
# self.assertIsNotNone(company.users)

0 commit comments

Comments
 (0)