summaryrefslogtreecommitdiff
path: root/backend/tests/test_watchlist.py
diff options
context:
space:
mode:
authorTyler Hoang <tyler@tylerhoang.xyz>2026-05-17 12:46:13 -0700
committerTyler Hoang <tyler@tylerhoang.xyz>2026-05-17 12:46:13 -0700
commit1482422f2f5b236cdcdff4429ae06bb55dca4083 (patch)
tree4653cb4986a8a138f84dbec934effb0d011751d3 /backend/tests/test_watchlist.py
Add stack start and stop scripts
Diffstat (limited to 'backend/tests/test_watchlist.py')
-rw-r--r--backend/tests/test_watchlist.py40
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)