Skip to content

Commit 8680b8e

Browse files
authored
User fix (#39)
1 parent 4b3c824 commit 8680b8e

File tree

2 files changed

+42
-27
lines changed

2 files changed

+42
-27
lines changed

configcatclient/user.py

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
__PREDEFINED__ = ["Identifier", 'Email', 'Country']
1+
import json
2+
3+
__PREDEFINED__ = ['Identifier', 'Email', 'Country']
24

35

46
class User(object):
@@ -19,23 +21,13 @@ def get_attribute(self, attribute):
1921
if attribute in __PREDEFINED__:
2022
return self.__data[attribute]
2123

22-
if self.__custom is not None:
23-
for customField in self.__custom:
24-
if customField == attribute:
25-
return self.__custom[customField]
26-
27-
return None
24+
return self.__custom.get(attribute) if self.__custom else None
2825

2926
def __str__(self):
30-
r = '{\n "Identifier": "%s"' % self.__identifier
31-
if self.__data['Email'] is not None:
32-
r += ',\n "Email": "%s"' % self.__data['Email']
33-
if self.__data['Country'] is not None:
34-
r += ',\n "Country": "%s"' % self.__data['Country']
35-
if self.__custom is not None:
36-
r += ',\n "Custom": {'
37-
for customField in self.__custom:
38-
r += '\n "%s": "%s",' % (customField, self.__custom[customField])
39-
r += '\n }'
40-
r += '\n}'
41-
return r
27+
dump = {
28+
'Identifier': self.__identifier,
29+
'Email': self.__data.get('Email'),
30+
'Country': self.__data.get('Country'),
31+
'Custom': self.__custom,
32+
}
33+
return json.dumps(dump, indent=4)

configcatclienttests/test_user.py

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import unittest
2+
import json
23
from configcatclient.user import User
34

45

@@ -10,13 +11,35 @@ def test_empty_or_none_identifier(self):
1011
self.assertEqual('', u2.get_identifier())
1112

1213
def test_attribute_case_sensitivity(self):
14+
user_id = 'id'
1315
1416
country = 'country'
15-
user = User('user_id', email=email, country=country)
16-
self.assertEqual(email, user.get_attribute("Email"))
17-
self.assertIsNone(user.get_attribute("EMAIL"))
18-
self.assertIsNone(user.get_attribute("email"))
19-
20-
self.assertEqual(country, user.get_attribute("Country"))
21-
self.assertIsNone(user.get_attribute("COUNTRY"))
22-
self.assertIsNone(user.get_attribute("country"))
17+
custom = {'custom': 'test'}
18+
user = User(identifier=user_id, email=email, country=country, custom=custom)
19+
20+
self.assertEqual(user_id, user.get_identifier())
21+
22+
self.assertEqual(email, user.get_attribute('Email'))
23+
self.assertIsNone(user.get_attribute('EMAIL'))
24+
self.assertIsNone(user.get_attribute('email'))
25+
26+
self.assertEqual(country, user.get_attribute('Country'))
27+
self.assertIsNone(user.get_attribute('COUNTRY'))
28+
self.assertIsNone(user.get_attribute('country'))
29+
30+
self.assertEqual('test', user.get_attribute('custom'))
31+
self.assertIsNone(user.get_attribute('non-existing'))
32+
33+
def test_to_str(self):
34+
user_id = 'id'
35+
36+
country = 'country'
37+
custom = {'custom': 'test'}
38+
user = User(identifier=user_id, email=email, country=country, custom=custom)
39+
40+
user_json = json.loads(str(user))
41+
42+
self.assertEqual(user_id, user_json['Identifier'])
43+
self.assertEqual(email, user_json['Email'])
44+
self.assertEqual(country, user_json['Country'])
45+
self.assertEqual(custom, user_json['Custom'])

0 commit comments

Comments
 (0)