Skip to content

Commit 514b6a4

Browse files
committed
tests for notifcations [notifications_unit_tests]
1 parent d6141c7 commit 514b6a4

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
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
@@ -14,7 +15,7 @@ def sqlite_bus(sqlite_session_factory):
1415
bus = bootstrap.bootstrap(
1516
start_orm=True,
1617
uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory),
17-
send_mail=lambda *args: None,
18+
notifications=mock.Mock(),
1819
publish=lambda *args: None,
1920
)
2021
yield bus

tests/unit/test_handlers.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
# pylint: disable=no-self-use
22
from __future__ import annotations
3+
from collections import defaultdict
34
from datetime import date
4-
from unittest import mock
5+
from typing import Dict, List
56
import pytest
67
from allocation import bootstrap
7-
from allocation.adapters import repository
88
from allocation.domain import commands
9-
from allocation.service_layer import handlers, unit_of_work
9+
from allocation.service_layer import handlers
10+
from allocation.adapters import notifications, repository
11+
from allocation.service_layer import unit_of_work
1012

1113

1214
class FakeRepository(repository.AbstractRepository):
@@ -39,11 +41,19 @@ def rollback(self):
3941
pass
4042

4143

44+
class FakeNotifications(notifications.AbstractNotifications):
45+
def __init__(self):
46+
self.sent = defaultdict(list) # type: Dict[str, List[str]]
47+
48+
def send(self, destination, message):
49+
self.sent[destination].append(message)
50+
51+
4252
def bootstrap_test_app():
4353
return bootstrap.bootstrap(
4454
start_orm=False,
4555
uow=FakeUnitOfWork(),
46-
send_mail=lambda *args: None,
56+
notifications=FakeNotifications(),
4757
publish=lambda *args: None,
4858
)
4959

@@ -86,21 +96,17 @@ def test_commits(self):
8696
assert bus.uow.committed
8797

8898
def test_sends_email_on_out_of_stock_error(self):
89-
emails = []
90-
91-
def fake_send_mail(*args):
92-
emails.append(args)
93-
99+
fake_notifs = FakeNotifications()
94100
bus = bootstrap.bootstrap(
95101
start_orm=False,
96102
uow=FakeUnitOfWork(),
97-
send_mail=fake_send_mail,
103+
notifications=fake_notifs,
98104
publish=lambda *args: None,
99105
)
100106
bus.handle(commands.CreateBatch("b1", "POPULAR-CURTAINS", 9, None))
101107
bus.handle(commands.Allocate("o1", "POPULAR-CURTAINS", 10))
102-
assert emails == [
103-
("stock@made.com", f"Out of stock for POPULAR-CURTAINS"),
108+
assert fake_notifs.sent["stock@made.com"] == [
109+
f"Out of stock for POPULAR-CURTAINS",
104110
]
105111

106112

0 commit comments

Comments
 (0)