-
Notifications
You must be signed in to change notification settings - Fork 0
/
feed_test.js
125 lines (104 loc) · 3.15 KB
/
feed_test.js
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
118
119
120
121
122
123
124
125
import { RequestLogger, RequestMock } from "testcafe";
import feedPageModel from "./models/feed_page_model";
import manageDataPageModel from "./models/manage_data_page_model";
import { adminUser } from "./helpers/roles";
const commentLogger = RequestLogger({
url: /\/api\/posts\/(\d+)\/comments/,
method: "post"
});
const feedResponse = [
{
body: "This is the latest post shown on TeamYap",
createdAt: "2020-05-25T20:32:19.154+09:00",
recentPostComments: [],
user: {
name: "Dennis Martinez",
profilePicture: "/packs/media/images/icons/avatar-3a690de84b67b1fe12b4486951cda785.svg"
}
},
{
body: "My first post on TeamYap!",
createdAt: "2020-05-25T17:06:40.016+09:00",
recentPostComments: [],
user: {
name: "Jane Smith",
profilePicture: "/packs/media/images/icons/avatar-3a690de84b67b1fe12b4486951cda785.svg"
}
}
];
const feedMock = RequestMock()
.onRequestTo({
url: "https://teamyap.app/api/posts",
method: "get"
})
.respond(feedResponse, 200);
const feedErrorMock = RequestMock()
.onRequestTo({
url: "https://teamyap.app/api/posts",
method: "get"
})
.respond(null, 500);
fixture("TeamYap Feed")
.page("https://teamyap.app/feed")
.meta({ "type": "regression" })
.beforeEach(async t => {
await t.useRole(adminUser);
})
.afterEach(async t => {
await t
.navigateTo("https://teamyap.app/admin/manage_data")
.click(manageDataPageModel.deleteFeedDataButton);
});
test
.meta({ "priority": "high" })
("Logged-in user can create new feed post", async t => {
await feedPageModel.createNewPost("Welcome to TeamYap!");
await t
.expect(feedPageModel.firstFeedPost.innerText)
.contains("Welcome to TeamYap!");
});
test
.requestHooks(commentLogger)
.meta({ "priority": "high" })
("Logged-in user can comment on feed post", async t => {
await feedPageModel.createNewPost("Can someone leave a comment?");
await t
.expect(feedPageModel.firstFeedPost.innerText)
.contains("Can someone leave a comment?");
await feedPageModel.createNewComment("Here's a comment!");
await t
.expect(commentLogger.contains(request => request.response.statusCode === 201))
.ok();
await t
.expect(feedPageModel.postComments.innerText)
.contains("Here's a comment!");
});
test
.requestHooks(feedMock)
("Feed section automatically loads posts from the server", async t => {
await t
.expect(feedPageModel.feedPosts.count)
.eql(2);
await t
.expect(feedPageModel.feedPosts.nth(0).innerText)
.contains("This is the latest post shown on TeamYap");
await t
.expect(feedPageModel.feedPosts.nth(1).innerText)
.contains("My first post on TeamYap!");
});
test
.requestHooks(feedErrorMock)
("Feed section shows an error if messages can't load", async t => {
await t
.expect(feedPageModel.feedError.exists)
.ok();
await t
.removeRequestHooks(feedErrorMock)
.addRequestHooks(feedMock)
.navigateTo("https://teamyap.app/feed");
await t
.expect(feedPageModel.feedError.exists)
.notOk()
.expect(feedPageModel.feedPosts.count)
.eql(2);;
});