Skip to content

Commit 22c068a

Browse files
author
Paul Hallett
committed
All class built. Coverage 100%
1 parent 590b641 commit 22c068a

3 files changed

Lines changed: 89 additions & 1 deletion

File tree

pykemon/models.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,63 @@ def __init__(self, bundle):
104104

105105
def __repr__(self):
106106
return '<Ability - %s>' % self.name.capitalize()
107+
108+
109+
class Egg(DateTimeObject):
110+
"""
111+
This class represents a single Egg group resource
112+
"""
113+
114+
def __init__(self, bundle):
115+
super(Egg, self).__init__(bundle)
116+
self.id = bundle['id']
117+
self.pokemon = buildr(bundle, 'pokemon')
118+
119+
def __repr__(self):
120+
return '<Egg - %s>' % self.name.capitalize()
121+
122+
123+
class Description(DateTimeObject):
124+
"""
125+
This class represents a single Description resource
126+
"""
127+
128+
def __init__(self, bundle):
129+
super(Description, self).__init__(bundle)
130+
self.id = bundle['id']
131+
self.description = bundle['description']
132+
self.pokemon = bundle['pokemon']
133+
self.games = buildr(bundle, 'games')
134+
135+
def __repr__(self):
136+
return '<Description - %s>' % self.name.capitalize()
137+
138+
139+
class Sprite(DateTimeObject):
140+
"""
141+
This class represents a single Sprite resource
142+
"""
143+
144+
def __init__(self, bundle):
145+
super(Sprite, self).__init__(bundle)
146+
self.id = bundle['id']
147+
self.pokemon = bundle['pokemon']
148+
self.image = bundle['image']
149+
150+
def __repr__(self):
151+
return '<Sprite - %s>' % self.name.capitalize()
152+
153+
154+
class Game(DateTimeObject):
155+
"""
156+
This class represents a single Game resource
157+
"""
158+
159+
def __init__(self, bundle):
160+
super(Game, self).__init__(bundle)
161+
self.id = bundle['id']
162+
self.generation = bundle['generation']
163+
self.release_year = bundle['release_year']
164+
165+
def __repr__(self):
166+
return '<Game - %s>' % self.name.capitalize()

pykemon/request.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@
1717
import requests
1818
import simplejson
1919
from simplejson import JSONDecodeError
20-
from models import Pokemon, Move, Type, Ability
20+
from models import Pokemon, Move, Type, Ability, Egg, Description, Sprite, Game
2121
from exceptions import ResourceNotFoundError
2222

2323
CLASSES = {
2424
'pokemon': Pokemon,
2525
'move': Move,
2626
'type': Type,
2727
'ability': Ability,
28+
'egg': Egg,
29+
'description': Description,
30+
'sprite': Sprite,
31+
'game': Game
2832
}
2933

3034

tests/test_pykemon.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,42 @@ def setUp(self):
2121
self.move_one = pykemon.get(move_id=15) # Cut
2222
self.type_one = pykemon.get(type_id=10) # Fire
2323
self.ability_one = pykemon.get(ability_id=1) # Stench
24+
self.egg_one = pykemon.get(egg_id=1) # Monster
25+
self.description_one = pykemon.get(description_id=1)
26+
self.sprite_one = pykemon.get(sprite_id=152) # Mew_auto
27+
self.game_one = pykemon.get(game_id=4) # Red
2428

2529
def test_name_attribute(self):
2630
self.assertEquals(self.poke_one.name, 'Bulbasaur')
2731
self.assertEquals(self.move_one.name, 'Cut')
2832
self.assertEquals(self.type_one.name, 'Fire')
2933
self.assertEquals(self.ability_one.name, 'Stench')
34+
self.assertEquals(self.egg_one.name, 'Monster')
35+
self.assertEquals(self.description_one.name, 'Bulbasaur_red_blue')
36+
self.assertEquals(self.sprite_one.name, 'Mew_auto')
37+
self.assertEquals(self.game_one.name, 'Red')
3038

3139
def test_repr(self):
3240
self.assertEquals(str(self.poke_one), '<Pokemon - Bulbasaur>')
3341
self.assertEquals(str(self.move_one), '<Move - Cut>')
3442
self.assertEquals(str(self.type_one), '<Type - Fire>')
3543
self.assertEquals(str(self.ability_one), '<Ability - Stench>')
44+
self.assertEquals(str(self.egg_one), '<Egg - Monster>')
45+
self.assertEquals(
46+
str(self.description_one), '<Description - Bulbasaur_red_blue>')
47+
self.assertEquals(str(self.sprite_one), '<Sprite - Mew_auto>')
48+
self.assertEquals(str(self.game_one), '<Game - Red>')
3649

3750
def test_resource_uri_attribute(self):
3851
self.assertEquals(self.poke_one.resource_uri, '/api/v1/pokemon/1/')
3952
self.assertEquals(self.move_one.resource_uri, '/api/v1/move/15/')
4053
self.assertEquals(self.type_one.resource_uri, '/api/v1/type/10/')
4154
self.assertEquals(self.ability_one.resource_uri, '/api/v1/ability/1/')
55+
self.assertEquals(self.egg_one.resource_uri, '/api/v1/egg/1/')
56+
self.assertEquals(
57+
self.description_one.resource_uri, '/api/v1/description/1/')
58+
self.assertEquals(self.sprite_one.resource_uri, '/api/v1/sprite/152/')
59+
self.assertEquals(self.game_one.resource_uri, '/api/v1/game/4/')
4260

4361
def test_pokemon_complex_attribs(self):
4462
self.assertIn('Ivysaur', self.poke_one.evolutions)
@@ -53,6 +71,12 @@ def test_type_complex_attribs(self):
5371
self.assertIn('fire', self.type_one.ineffective)
5472
self.assertNotIn('Test', self.type_one.resistance)
5573

74+
def test_egg_complex_attribs(self):
75+
self.assertIn('Blastoise', self.egg_one.pokemon)
76+
77+
def test_description_complex_attribs(self):
78+
self.assertIn('blue', self.description_one.games)
79+
5680

5781
class Testexceptions(unittest.TestCase):
5882
" Test error handling "

0 commit comments

Comments
 (0)