Test dashboard: full menu system, all-service tests, filtering
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m11s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m11s
- Run tests for all 10 services via per-service pytest subprocesses - Group results by service with section headers - Clickable summary cards filter by outcome (passed/failed/errors/skipped) - Service filter nav using ~nav-link buttons in menu bar - Full menu integration: ~header-row + ~header-child + ~menu-row - Show logo image via cart-mini rendering - Mount full service directories in docker-compose for test access - Add 24 unit test files across 9 services Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
58
market/tests/test_registry.py
Normal file
58
market/tests/test_registry.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""Unit tests for product registry utilities."""
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from market.scrape.product.registry import merge_missing
|
||||
|
||||
|
||||
class TestMergeMissing:
|
||||
def test_fills_empty_dict(self):
|
||||
dst = {}
|
||||
merge_missing(dst, {"a": 1, "b": "hello"})
|
||||
assert dst == {"a": 1, "b": "hello"}
|
||||
|
||||
def test_existing_value_not_overwritten(self):
|
||||
dst = {"a": "original"}
|
||||
merge_missing(dst, {"a": "new"})
|
||||
assert dst["a"] == "original"
|
||||
|
||||
def test_none_overwritten(self):
|
||||
dst = {"a": None}
|
||||
merge_missing(dst, {"a": "filled"})
|
||||
assert dst["a"] == "filled"
|
||||
|
||||
def test_empty_string_overwritten(self):
|
||||
dst = {"a": ""}
|
||||
merge_missing(dst, {"a": "filled"})
|
||||
assert dst["a"] == "filled"
|
||||
|
||||
def test_empty_list_overwritten(self):
|
||||
dst = {"a": []}
|
||||
merge_missing(dst, {"a": [1, 2]})
|
||||
assert dst["a"] == [1, 2]
|
||||
|
||||
def test_empty_dict_overwritten(self):
|
||||
dst = {"a": {}}
|
||||
merge_missing(dst, {"a": {"key": "val"}})
|
||||
assert dst["a"] == {"key": "val"}
|
||||
|
||||
def test_zero_not_overwritten(self):
|
||||
dst = {"a": 0}
|
||||
merge_missing(dst, {"a": 42})
|
||||
assert dst["a"] == 0
|
||||
|
||||
def test_false_not_overwritten(self):
|
||||
dst = {"a": False}
|
||||
merge_missing(dst, {"a": True})
|
||||
assert dst["a"] is False
|
||||
|
||||
def test_none_src(self):
|
||||
dst = {"a": 1}
|
||||
merge_missing(dst, None)
|
||||
assert dst == {"a": 1}
|
||||
|
||||
def test_new_keys_added(self):
|
||||
dst = {"a": 1}
|
||||
merge_missing(dst, {"b": 2})
|
||||
assert dst == {"a": 1, "b": 2}
|
||||
Reference in New Issue
Block a user