Skip to content

Commit 143674b

Browse files
bites 36
1 parent 8b42576 commit 143674b

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@
3939
/254/README.md
4040
/218/README.md
4141
/3/README.md
42+
/36/README.md

36/profile.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
def get_profile(name, age, *args,**kwargs):
2+
if type(age) != int:
3+
raise ValueError
4+
if len(args) > 5:
5+
raise ValueError
6+
result = dict()
7+
sports = list()
8+
awards = dict()
9+
if len(args) != 0:
10+
for sport in args:
11+
sports.append(sport)
12+
sports.sort()
13+
result.update({'sports': sports})
14+
15+
if len(kwargs) != 0:
16+
result.update({'awards': awards})
17+
for award in kwargs:
18+
result['awards'].update({award: kwargs[award]})
19+
result.update({'name':name, 'age':age})
20+
return result
21+
print(get_profile("jeff", 3))

36/test_profile.py

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import pytest
2+
3+
from profile import get_profile
4+
5+
6+
def test_get_profile_no_name():
7+
with pytest.raises(TypeError):
8+
assert get_profile()
9+
10+
11+
def test_get_profile_no_age():
12+
with pytest.raises(TypeError):
13+
assert get_profile('tim')
14+
15+
16+
def test_get_profile_valueerror():
17+
with pytest.raises(ValueError):
18+
assert get_profile('tim', 'nonint')
19+
20+
21+
def test_get_profile_too_many_sports():
22+
with pytest.raises(ValueError):
23+
sports = ['tennis', 'basketball', 'badminton',
24+
'baseball', 'volleyball', 'boxing']
25+
assert get_profile('tim', 36, *sports)
26+
27+
28+
def test_get_profile_dict():
29+
assert get_profile('tim', 36) == {'name': 'tim', 'age': 36}
30+
31+
32+
def test_get_profile_one_sport():
33+
expected = {'name': 'tim', 'age': 36,
34+
'sports': ['tennis']}
35+
assert get_profile('tim', 36, 'tennis') == expected
36+
37+
38+
def test_get_profile_two_sports():
39+
expected = {'name': 'tim', 'age': 36,
40+
'sports': ['basketball', 'tennis']}
41+
assert get_profile('tim', 36, 'tennis', 'basketball') == expected
42+
43+
44+
def test_get_profile_award():
45+
expected = {'name': 'tim', 'age': 36,
46+
'awards': {'champ': 'helped out team in crisis'}}
47+
assert get_profile('tim', 36,
48+
champ='helped out team in crisis') == expected
49+
50+
51+
def test_get_profile_two_sports_and_one_award():
52+
expected = {'name': 'tim', 'age': 36,
53+
'sports': ['basketball', 'tennis'],
54+
'awards': {'champ': 'helped out team in crisis'}}
55+
assert get_profile('tim', 36, 'tennis', 'basketball',
56+
champ='helped out team in crisis') == expected
57+
58+
59+
def test_get_profile_two_sports_and_three_awards():
60+
expected = {'name': 'tim', 'age': 36,
61+
'sports': ['basketball', 'tennis'],
62+
'awards': {'champ': 'helped out the team in crisis',
63+
'service': 'going the extra mile for our customers',
64+
'attitude': 'unbeatable positive + uplifting'}}
65+
assert get_profile('tim', 36, 'tennis', 'basketball',
66+
service='going the extra mile for our customers',
67+
champ='helped out the team in crisis',
68+
attitude='unbeatable positive + uplifting') == expected

0 commit comments

Comments
 (0)