diff options
Diffstat (limited to 'backend/tests/test_watchlist.py')
| -rw-r--r-- | backend/tests/test_watchlist.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/backend/tests/test_watchlist.py b/backend/tests/test_watchlist.py new file mode 100644 index 0000000..4d63428 --- /dev/null +++ b/backend/tests/test_watchlist.py @@ -0,0 +1,40 @@ +from pathlib import Path + +import pytest + +from app.db import watchlist + + +@pytest.fixture() +def db_path(tmp_path: Path) -> Path: + return tmp_path / "prism.db" + + +def test_seed_default_profile(db_path: Path) -> None: + watchlist.init_db(db_path) + with watchlist.connect(db_path) as conn: + row = conn.execute("SELECT name FROM profiles WHERE name = 'default'").fetchone() + assert row["name"] == "default" + + +def test_add_remove_and_uppercase(db_path: Path) -> None: + added = watchlist.add_symbol("aapl", db_path) + assert added["symbol"] == "AAPL" + assert watchlist.list_symbols(db_path)[0]["symbol"] == "AAPL" + assert watchlist.remove_symbol("AAPL", db_path) is True + assert watchlist.list_symbols(db_path) == [] + + +def test_duplicate_prevention(db_path: Path) -> None: + first = watchlist.add_symbol("msft", db_path) + second = watchlist.add_symbol("MSFT", db_path) + rows = watchlist.list_symbols(db_path) + assert first == second + assert [row["symbol"] for row in rows] == ["MSFT"] + + +def test_ten_symbol_cap(db_path: Path) -> None: + for idx in range(10): + watchlist.add_symbol(f"T{idx}", db_path) + with pytest.raises(watchlist.WatchlistFullError): + watchlist.add_symbol("OVER", db_path) |
