-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_gift_exchange.py
88 lines (66 loc) · 2.55 KB
/
test_gift_exchange.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import unittest
from gift_exchange import GiftExchange
class TestGiftExchange(unittest.TestCase):
def setUp(self):
self.mock_data = [
{'name': 'Jane Doe', 'email': '[email protected]'},
{'name': 'John Doe', 'email': '[email protected]'},
{'name': 'Johnny Appleseed', 'email': '[email protected]'},
]
self.sender = {'name': 'Jane Doe', 'email': '[email protected]'}
def test_get_match_is_not_self(self):
"""
Unit test that `get_valid_match` is not the sender
"""
gift_exchange = GiftExchange('mock/path')
match = gift_exchange.get_valid_match_for_sender(
self.mock_data, self.sender)
# assert match is not sender
self.assertNotEqual(
self.sender.get('name'),
match.get('name')
)
def test_get_match_is_marked_as_paired(self):
"""
Unit test that `get_valid_match` has not already been picked
"""
gift_exchange = GiftExchange('mock/path')
gift_exchange.has_been_paired = ['John Doe']
match = gift_exchange.get_valid_match_for_sender(
self.mock_data, self.sender)
# assert latest match is marked as paired
self.assertEqual(match.get('name'), gift_exchange.has_been_paired[-1])
def test_swap_picks(self):
"""
Unit test edge case where we need to swap picks between
first and last sender
"""
pick_to_switch = {'name': 'Foo Bar', 'email': '[email protected]'}
gift_exchange = GiftExchange('mock/path')
gift_exchange.paired_matches = {
'Jane Doe': pick_to_switch,
'John Doe': {},
}
last_sender = {
'name': 'Baz Foo', 'email': '[email protected]'
}
match_before_swap = gift_exchange.paired_matches.get('Jane Doe')
# first match is unchanged before swap
self.assertEqual(
match_before_swap.get('name'),
pick_to_switch.get('name')
)
gift_exchange.swap_first_and_last_picks(last_sender)
match_after_swap = gift_exchange.paired_matches.get('Jane Doe')
last_sender_name = last_sender.get('name')
# first match is switched after swap
self.assertEqual(
match_after_swap.get('name'),
last_sender_name
)
last_match = gift_exchange.paired_matches.get(last_sender_name)
self.assertEqual(
last_match.get('name'),
pick_to_switch.get('name')
)
unittest.main(verbosity=2)