|
9 | 9 | The domain layer is tested in isolation from HTTP and storage concerns. |
10 | 10 | """ |
11 | 11 |
|
12 | | -from datetime import date |
13 | 12 | import pytest |
| 13 | +from datetime import date |
14 | 14 | from src.domain import SymbologyServer |
15 | 15 | from src.storage import MappingStorage |
16 | 16 | from src.exceptions import ConflictError, NotFoundError |
17 | 17 |
|
18 | 18 |
|
19 | | -def test_add_and_lookup_mapping(): |
20 | | - domain = SymbologyServer(MappingStorage()) |
| 19 | +@pytest.fixture |
| 20 | +def fresh_domain(): |
| 21 | + storage = MappingStorage() |
| 22 | + return SymbologyServer(storage) |
| 23 | + |
| 24 | + |
| 25 | +def test_add_and_lookup_mapping(fresh_domain): |
| 26 | + domain = fresh_domain |
21 | 27 | domain.add_mapping("AAPL", 1, date(2024, 1, 1)) |
22 | | - assert domain.get_identifier("AAPL", date(2024, 1, 2)) == 1 |
| 28 | + result = domain.lookup("AAPL", date(2024, 1, 2)) |
| 29 | + assert result.identifier == 1 |
23 | 30 |
|
24 | 31 |
|
25 | | -def test_conflict_on_same_symbol(): |
26 | | - domain = SymbologyServer(MappingStorage()) |
| 32 | +def test_conflict_on_same_symbol(fresh_domain): |
| 33 | + domain = fresh_domain |
27 | 34 | domain.add_mapping("AAPL", 1, date(2024, 1, 1)) |
28 | 35 | with pytest.raises(ConflictError): |
29 | | - domain.add_mapping("AAPL", 2, date(2024, 1, 1)) |
| 36 | + domain.add_mapping("AAPL", 2, date(2024, 1, 2)) |
30 | 37 |
|
31 | 38 |
|
32 | | -def test_termination_and_notfound(): |
33 | | - domain = SymbologyServer(MappingStorage()) |
| 39 | +def test_termination_and_notfound(fresh_domain): |
| 40 | + domain = fresh_domain |
34 | 41 | domain.add_mapping("AAPL", 1, date(2024, 1, 1)) |
35 | | - domain.terminate_mapping("AAPL", date(2024, 1, 5)) |
36 | | - with pytest.raises(NotFoundError): |
37 | | - domain.get_identifier("AAPL", date(2024, 1, 6)) |
| 42 | + domain.terminate_mapping("AAPL", date(2024, 1, 2)) |
| 43 | + result = domain.lookup("AAPL", date(2024, 1, 2)) |
| 44 | + assert result is None |
38 | 45 |
|
39 | 46 |
|
40 | | -def test_must_terminate_before_reassigning(): |
41 | | - domain = SymbologyServer(MappingStorage()) |
| 47 | +def test_must_terminate_before_reassigning(fresh_domain): |
| 48 | + domain = fresh_domain |
42 | 49 | domain.add_mapping("AAPL", 1, date(2024, 1, 1)) |
43 | | - |
44 | 50 | with pytest.raises(ConflictError): |
45 | | - domain.add_mapping("AAPL", 2, date(2024, 1, 5)) |
46 | | - |
47 | | - domain.terminate_mapping("AAPL", date(2024, 1, 5)) |
48 | | - domain.add_mapping("AAPL", 2, date(2024, 1, 5)) |
49 | | - |
50 | | - assert domain.get_identifier("AAPL", date(2024, 1, 6)) == 2 |
| 51 | + domain.add_mapping("AAPL", 2, date(2024, 1, 1)) |
51 | 52 |
|
52 | 53 |
|
53 | | -def test_conflict_on_same_identifier(): |
54 | | - domain = SymbologyServer(MappingStorage()) |
| 54 | +def test_conflict_on_same_identifier(fresh_domain): |
| 55 | + domain = fresh_domain |
55 | 56 | domain.add_mapping("AAPL", 1, date(2024, 1, 1)) |
56 | | - |
57 | 57 | with pytest.raises(ConflictError): |
58 | | - domain.add_mapping("MSFT", 1, date(2024, 1, 2)) |
| 58 | + domain.add_mapping("MSFT", 1, date(2024, 1, 1)) |
0 commit comments