Merge remote-tracking branch 'origin/dev' into sub_laptop_1
This commit is contained in:
@@ -496,3 +496,55 @@ def test_열_이름은_이름표에서만_옴(client: TestClient) -> None:
|
||||
assert not [c for c in _get(client, kind, size=1)["columns"] if c["label"] == c["key"]], (
|
||||
kind
|
||||
)
|
||||
|
||||
|
||||
def _sorted_rows(client: TestClient, kind: str, column: str, desc: int = 0, **params) -> list:
|
||||
table = _get(client, kind, sort=column, desc=desc, size=500, **params)
|
||||
return [r.get(column) for r in table["rows"]]
|
||||
|
||||
|
||||
def test_차례_세우기는_서버가_전체_줄로(client: TestClient) -> None:
|
||||
"""브레인 — 자재 140 쪽이라 화면이 받은 50 줄만 세우면 1 쪽 안에서만 맞는 가짜 차례."""
|
||||
table = _get(client, "material", size=1)
|
||||
assert set(table["sortable"]) == {c["key"] for c in table["columns"]}
|
||||
first = _get(client, "material", sort="price_krw", size=1)
|
||||
last = _get(client, "material", sort="price_krw", desc=1, size=1)
|
||||
assert first["total"] == last["total"] == 6999
|
||||
assert first["rows"][0]["price_krw"] < last["rows"][0]["price_krw"]
|
||||
page2 = _get(client, "material", sort="price_krw", size=50, page=2)["rows"]
|
||||
assert first["rows"][0]["price_krw"] <= page2[0]["price_krw"] # 쪽을 넘어도 이어짐
|
||||
values = _sorted_rows(client, "material", "price_krw")
|
||||
assert values == sorted(values)
|
||||
|
||||
|
||||
def test_거른_뒤에_세움_모르는_열은_거절(client: TestClient) -> None:
|
||||
hits = _get(client, "material", q="육각볼트", sort="price_krw", desc=1, size=500)
|
||||
values = [r["price_krw"] for r in hits["rows"]]
|
||||
assert values == sorted(values, reverse=True) and hits["total"] == len(values)
|
||||
assert all("육각볼트" in json.dumps(r, ensure_ascii=False) for r in hits["rows"])
|
||||
bad = client.get("/api/master-data/base-prices/material", params={"sort": "없는열"})
|
||||
assert bad.status_code == 400 and "없는열" in bad.text # 조용히 원본 차례로 안 돌아감
|
||||
|
||||
|
||||
def test_빈_칸은_어느_쪽으로_세워도_끝(client: TestClient) -> None:
|
||||
"""미공표 노임 14 · 손료계수 없는 기계 226 이 첫 쪽을 채우면 표를 못 씀."""
|
||||
for desc in (0, 1):
|
||||
wages = _sorted_rows(client, "labor", "daily_wage_krw", desc)
|
||||
filled = [v for v in wages if v is not None]
|
||||
assert wages[: len(filled)] == sorted(filled, reverse=bool(desc))
|
||||
assert wages[len(filled) :] == [None] * (len(wages) - len(filled)) and len(filled) < len(
|
||||
wages
|
||||
)
|
||||
hourly = _sorted_rows(client, "machine", "hourly_total_krw", 1)
|
||||
assert hourly[0] is not None and hourly[-1] is None # 계산 열도 세워짐
|
||||
|
||||
|
||||
def test_덮개_얹은_값으로_세움(client: TestClient) -> None:
|
||||
_put(client, "labor", "labor_const/1003", {"daily_wage_krw": 9_000_000})
|
||||
top = _get(client, "labor", sort="daily_wage_krw", desc=1, size=1)["rows"][0]
|
||||
assert top["@id"] == "labor_const/1003" and top["daily_wage_krw"] == 9_000_000
|
||||
|
||||
|
||||
def test_sort_가_없으면_원본_차례(client: TestClient) -> None:
|
||||
assert _get(client, "rate", size=1)["rows"][0]["@id"] == "rate_sanjae"
|
||||
assert _get(client, "machine", size=1)["rows"][0]["@id"] == "0101-0007"
|
||||
|
||||
Reference in New Issue
Block a user