1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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
|