# There are two types of "preview" - one is where we navigate direclty # to it and one is where we redirect possibly import pytest from httpx import AsyncClient from jb.models.hit import Hit from jb.models.assignment import AssignmentStub class TestPreview: @pytest.mark.anyio async def test_preview_direct(self, httpxclient: AsyncClient): client = httpxclient res = await client.get("/preview/") assert res.status_code == 200 assert res.headers["content-type"] == "text/html; charset=utf-8" assert res.num_bytes_downloaded == 507 assert "James Billings loves you." in res.text assert "https://cdn.jamesbillings67.com/james-has-style.css" in res.text assert "https://cdn.jamesbillings67.com/james-billings.js" in res.text @pytest.mark.anyio async def test_preview_redirect_from_work_random_str( self, httpxclient: AsyncClient, amt_hit_id: str, amt_assignment_id: str ): client = httpxclient """ The redirect occurs regardless of any parameter validation. This is because the query params will be used for record lookup on the work page itself. """ params = { "workerId": None, "assignmentId": amt_assignment_id, "hitId": amt_hit_id, } res = await client.get("/work/", params=params) assert res.status_code == 302 assert "/preview/" in res.headers["location"] @pytest.mark.anyio async def test_preview_redirect_from_work_records( self, httpxclient: AsyncClient, hit_record: Hit, assignment_stub_record: AssignmentStub, ): client = httpxclient """ The redirect occurs regardless of any parameter validation. This is because the query params will be used for record lookup on the work page itself. """ params = { "workerId": None, "assignmentId": assignment_stub_record.amt_assignment_id, "hitId": hit_record.amt_hit_id, } res = await client.get("/work/", params=params) assert res.status_code == 302 assert "/preview/" in res.headers["location"]