diff options
-rw-r--r-- | tests/playwright/test_friends.py | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/tests/playwright/test_friends.py b/tests/playwright/test_friends.py new file mode 100644 index 0000000..e19bdea --- /dev/null +++ b/tests/playwright/test_friends.py @@ -0,0 +1,117 @@ +import datetime + +from playwright.sync_api import Page, expect +from sqlalchemy import select + +from fietsboek import models + +from .conftest import Helper # pylint: disable=relative-beyond-top-level + + +def test_friend_not_found(page: Page, playwright_helper: Helper): + playwright_helper.login() + + page.goto("/me") + + page.get_by_label("Email of the friend").fill("does-not-exist@example.com") + page.get_by_role("button", name="Send friend request").click() + + expect(page.locator(".alert")).to_have_text("The friend was not found") + + +def test_send_friend_request(page: Page, playwright_helper: Helper, dbaccess): + with dbaccess: + user = models.User(name="Volker", email="vol@ker.de", is_verified=True) + user.set_password("raboof") + dbaccess.add(user) + dbaccess.flush() + dbaccess.commit() + + playwright_helper.login() + + page.goto("/me") + + page.get_by_label("Email of the friend").fill("vol@ker.de") + page.get_by_role("button", name="Send friend request").click() + + john = playwright_helper.john_doe() + reqs = list( + dbaccess.execute(select(models.FriendRequest).filter_by(sender_id=john.id)).scalars() + ) + assert len(reqs) == 1 + assert reqs[0].recipient.name == "Volker" + + +def test_accept_friend_request(page: Page, playwright_helper: Helper, dbaccess): + john = playwright_helper.john_doe() + with dbaccess: + volker = models.User(name="Volker", email="vol@ker.de", is_verified=True) + volker.set_password("raboof") + dbaccess.add(volker) + dbaccess.add( + models.FriendRequest(sender=john, recipient=volker, date=datetime.datetime.now()) + ) + dbaccess.commit() + + volker = dbaccess.merge(volker) + john = dbaccess.merge(john) + playwright_helper.login(volker) + + page.goto("/me") + + page.get_by_role("button", name="Accept").click() + + assert "John Doe" in page.content() + + friends = list(volker.get_friends()) + assert len(friends) == 1 + assert john.id in [friend.id for friend in friends] + + +def test_accept_by_sending(page: Page, playwright_helper: Helper, dbaccess): + john = playwright_helper.john_doe() + with dbaccess: + volker = models.User(name="Volker", email="vol@ker.de", is_verified=True) + volker.set_password("raboof") + dbaccess.add(volker) + dbaccess.add( + models.FriendRequest(sender=john, recipient=volker, date=datetime.datetime.now()) + ) + dbaccess.commit() + + volker = dbaccess.merge(volker) + john = dbaccess.merge(john) + playwright_helper.login(volker) + + page.goto("/me") + + page.get_by_label("Email of the friend").fill("john@doe.com") + page.get_by_role("button", name="Send friend request").click() + + assert "John Doe" in page.content() + + friends = list(volker.get_friends()) + assert len(friends) == 1 + assert john.id in [friend.id for friend in friends] + + +def test_unfriend(page: Page, playwright_helper: Helper, dbaccess): + john = playwright_helper.john_doe() + with dbaccess: + john = dbaccess.merge(john) + volker = models.User(name="Volker", email="vol@ker.de", is_verified=True) + volker.set_password("raboof") + dbaccess.add(volker) + dbaccess.flush() + volker.add_friend(john) + dbaccess.commit() + + volker = dbaccess.merge(volker) + john = dbaccess.merge(john) + playwright_helper.login(volker) + + page.goto("/me") + page.get_by_role("button", name="Unfriend").click() + + friends = list(volker.get_friends()) + assert not friends |