From 1482422f2f5b236cdcdff4429ae06bb55dca4083 Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Sun, 17 May 2026 12:46:13 -0700 Subject: Add stack start and stop scripts --- backend/tests/test_watchlist.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 backend/tests/test_watchlist.py (limited to 'backend/tests/test_watchlist.py') 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) -- cgit v1.3-2-g0d8e