diff --git a/tests/test_actor_profile.py b/tests/test_actor_profile.py new file mode 100644 index 0000000..c882eff --- /dev/null +++ b/tests/test_actor_profile.py @@ -0,0 +1,55 @@ +"""The actor profile page: avatar/bio editing, and the mods grid.""" + +from playwright.sync_api import expect + +from helpers import Actor + +PROFILE_COLLECTION = "dev.starhaven.actor.profile" + +PNG = bytes.fromhex( + "89504e470d0a1a0a0000000d494844520000000100000001080600000" + "01f15c4890000000a4944415478da6360000002000155009f490c0000" + "000049454e44ae426082" +) + + +def test_owner_can_set_an_avatar_and_bio(actor: Actor): + actor.login() + actor.page.goto(f"{actor.app_url}/{actor.handle}") + + actor.page.locator("#avatar-add").set_input_files( + files=[{"name": "avatar.png", "mimeType": "image/png", "buffer": PNG}] + ) + expect(actor.page.locator("#actor-avatar-img")).to_be_visible(timeout=10000) + + actor.page.locator("#description").fill("Hi, I make mods.") + actor.page.get_by_role("button", name="Save").click() + + expect(actor.page).to_have_url(f"{actor.app_url}/{actor.handle}") + expect(actor.page.get_by_text("Hi, I make mods.")).to_be_visible() + + [profile] = actor.records(PROFILE_COLLECTION) + assert profile["value"]["description"] == "Hi, I make mods." + assert profile["value"]["avatar"]["$type"] == "blob" + + +def test_a_visitor_sees_no_edit_controls(actor: Actor): + actor.login() + actor.page.goto(f"{actor.app_url}/{actor.handle}") + actor.page.locator("#description").fill("My bio") + actor.page.get_by_role("button", name="Save").click() + actor.page.context.clear_cookies() + + actor.page.goto(f"{actor.app_url}/{actor.handle}") + expect(actor.page.get_by_text("My bio")).to_be_visible() + expect(actor.page.locator("#avatar-add")).to_have_count(0) + expect(actor.page.locator("#profile-form")).to_have_count(0) + + +def test_the_actors_mods_show_in_a_grid_like_search(actor: Actor): + actor.login() + actor.create_mod("master-quest", title="Master Quest") + + actor.page.goto(f"{actor.app_url}/{actor.handle}") + expect(actor.page.locator("ul.search-results")).to_be_visible() + expect(actor.page.get_by_role("link", name="Master Quest")).to_be_visible()