Fixing presentation of objective thread
This commit is contained in:
1 parent
3ebe9a0894
commit
392b79e801
4 files changed
+97
-1
No files matched your search
@@ -1,7 +1,10 @@
|
||||
import pytest
|
||||
|
||||
from app.models.attachment_point import AttachmentPoint
|
||||
from app.models.attachment_point_name import AttachmentPointName
|
||||
from app.models.augmented_part import AugmentedPart
|
||||
from app.models.fit import Fit, FitLabel
|
||||
from app.models.iso_thread import IsoThread
|
||||
from app.models.part_type import PartType
|
||||
from app.models.scope_info import ScopeInfo
|
||||
from app.models.sub_part_type import SubPartType
|
||||
@@ -214,6 +217,68 @@ async def test_build_includes_objective_lens_diameter(db_sessionmaker):
|
||||
assert rows["Zeta 1-6x24"]["info"] is None
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_build_prefers_objective_attachment_point_over_scope_info(
|
||||
db_sessionmaker,
|
||||
):
|
||||
async with db_sessionmaker() as db:
|
||||
ids = await _seed_guide_data(db)
|
||||
apn = AttachmentPointName(name="Objective")
|
||||
db.add(apn)
|
||||
await db.flush()
|
||||
iso = IsoThread(diameter_mm=44, pitch_mm=0.5)
|
||||
db.add(iso)
|
||||
await db.flush()
|
||||
db.add(
|
||||
AttachmentPoint(
|
||||
augmented_part_id=ids["s1"].id,
|
||||
attachment_point_name_id=apn.id,
|
||||
iso_thread_id=iso.id,
|
||||
)
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
guide = await scope_guide.build(db)
|
||||
|
||||
rows = {r["scope"].description: r for r in guide["rows"]}
|
||||
s1_ap = rows["Alpha 3-18x50"]["objective_attachment_point"]
|
||||
assert s1_ap is not None
|
||||
assert s1_ap.iso_thread.diameter_mm == 44
|
||||
# No "Objective"-named attachment point for s2 -> falls back to None.
|
||||
assert rows["Zeta 1-6x24"]["objective_attachment_point"] is None
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_scopes_page_renders_objective_attachment_point_thread(
|
||||
client, seeded, make_user, db_sessionmaker
|
||||
):
|
||||
async with db_sessionmaker() as db:
|
||||
ids = await _seed_guide_data(db)
|
||||
apn = AttachmentPointName(name="Objective")
|
||||
db.add(apn)
|
||||
await db.flush()
|
||||
iso = IsoThread(diameter_mm=44, pitch_mm=0.5)
|
||||
db.add(iso)
|
||||
await db.flush()
|
||||
db.add(
|
||||
AttachmentPoint(
|
||||
augmented_part_id=ids["s1"].id,
|
||||
attachment_point_name_id=apn.id,
|
||||
iso_thread_id=iso.id,
|
||||
)
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
await make_user("reader5@example.com", role_ids=[seeded["roles"]["user"].id])
|
||||
await _web_login(client, "reader5@example.com")
|
||||
resp = await client.get("/scopes")
|
||||
assert resp.status_code == 200
|
||||
body = resp.text
|
||||
# The attachment point's thread spec wins over ScopeInfo.objective_thread_pitch.
|
||||
assert "M44×0.5" in body
|
||||
assert "M52x0.75" not in body
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_scopes_page_renders_objective_lens_diameter_in_magnification(
|
||||
client, seeded, make_user, db_sessionmaker
|
||||
|
||||
Reference in new issue
Block a user