Skip to content

Commit 9f5ee43

Browse files
committed
tests for notifcations [notifications_unit_tests]
1 parent e05749f commit 9f5ee43

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

tests/integration/test_views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# pylint: disable=redefined-outer-name
22
from datetime import date
33
from sqlalchemy.orm import clear_mappers
4+
from unittest import mock
45
import pytest
56
from allocation import bootstrap, views
67
from allocation.domain import commands
@@ -11,7 +12,7 @@ def sqlite_bus(sqlite_session_factory):
1112
bus = bootstrap.bootstrap(
1213
start_orm=True,
1314
uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory),
14-
send_mail=lambda *args: None,
15+
notifications=mock.Mock(),
1516
publish=lambda *args: None,
1617
)
1718
yield bus

tests/unit/test_handlers.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from __future__ import annotations
2+
from collections import defaultdict
23
from datetime import date
3-
from unittest import mock
4+
from typing import Dict, List
45
import pytest
56
from allocation import bootstrap
6-
from allocation.adapters import repository
77
from allocation.domain import commands
8-
from allocation.service_layer import handlers, unit_of_work
8+
from allocation.service_layer import handlers
9+
from allocation.adapters import notifications, repository
10+
from allocation.service_layer import unit_of_work
911

1012

1113
class FakeRepository(repository.AbstractRepository):
@@ -40,11 +42,21 @@ def rollback(self):
4042
pass
4143

4244

45+
class FakeNotifications(notifications.AbstractNotifications):
46+
47+
def __init__(self):
48+
self.sent = defaultdict(list) # type: Dict[str, List[str]]
49+
50+
def send(self, destination, message):
51+
self.sent[destination].append(message)
52+
53+
54+
4355
def bootstrap_test_app():
4456
return bootstrap.bootstrap(
4557
start_orm=False,
4658
uow=FakeUnitOfWork(),
47-
send_mail=lambda *args: None,
59+
notifications=FakeNotifications(),
4860
publish=lambda *args: None,
4961
)
5062

@@ -87,19 +99,17 @@ def test_commits(self):
8799
assert bus.uow.committed
88100

89101
def test_sends_email_on_out_of_stock_error(self):
90-
emails = []
91-
def fake_send_mail(*args):
92-
emails.append(args)
102+
fake_notifs = FakeNotifications()
93103
bus = bootstrap.bootstrap(
94104
start_orm=False,
95105
uow=FakeUnitOfWork(),
96-
send_mail=fake_send_mail,
106+
notifications=fake_notifs,
97107
publish=lambda *args: None,
98108
)
99109
bus.handle(commands.CreateBatch("b1", "POPULAR-CURTAINS", 9, None))
100110
bus.handle(commands.Allocate("o1", "POPULAR-CURTAINS", 10))
101-
assert emails == [
102-
("[email protected]", f"Out of stock for POPULAR-CURTAINS"),
111+
assert fake_notifs.sent['[email protected]'] == [
112+
f"Out of stock for POPULAR-CURTAINS",
103113
]
104114

105115

0 commit comments

Comments
 (0)