Skip to content

Commit d3b9b5f

Browse files
author
fkromer
committed
add: tests for the abstract factory pattern
1 parent 5895145 commit d3b9b5f

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

test_abstract_factory.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
from abstract_factory import PetShop, Dog, Cat, DogFactory, CatFactory
5+
import sys
6+
7+
if sys.version_info < (2, 7):
8+
import unittest2 as unittest
9+
else:
10+
import unittest
11+
12+
from unittest.mock import patch
13+
14+
class TestPetShop(unittest.TestCase):
15+
16+
def test_dog_pet_shop_shall_show_dog_instance(self):
17+
f = DogFactory()
18+
with patch.object(f, 'get_pet') as mock_f_get_pet,\
19+
patch.object(f, 'get_food') as mock_f_get_food:
20+
ps = PetShop(f)
21+
ps.show_pet()
22+
self.assertEqual(mock_f_get_pet.call_count, 1)
23+
self.assertEqual(mock_f_get_food.call_count, 1)
24+
25+
def test_cat_pet_shop_shall_show_cat_instance(self):
26+
f = CatFactory()
27+
with patch.object(f, 'get_pet') as mock_f_get_pet,\
28+
patch.object(f, 'get_food') as mock_f_get_food:
29+
ps = PetShop(f)
30+
ps.show_pet()
31+
self.assertEqual(mock_f_get_pet.call_count, 1)
32+
self.assertEqual(mock_f_get_food.call_count, 1)
33+
34+
if __name__ == "__main__":
35+
unittest.main()
36+

0 commit comments

Comments
 (0)