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
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
/**
* Tests that the correct shopping-message-bar component appears if a product was marked as unavailable.
*/
add_task(async function test_unavailable_product() {
await BrowserTestUtils.withNewTab(
{
url: "about:shoppingsidebar",
gBrowser,
},
async browser => {
await SpecialPowers.spawn(
browser,
[MOCK_UNAVAILABLE_PRODUCT_RESPONSE],
async mockData => {
let shoppingContainer =
content.document.querySelector(
"shopping-container"
).wrappedJSObject;
shoppingContainer.data = Cu.cloneInto(mockData, content);
await shoppingContainer.updateComplete;
let productNotAvailableMessageBar =
shoppingContainer.shoppingMessageBarEl;
ok(productNotAvailableMessageBar, "Got shopping-message-bar element");
is(
productNotAvailableMessageBar?.getAttribute("type"),
"product-not-available",
"shopping-message-bar type should be correct"
);
let productAvailableBtn =
productNotAvailableMessageBar?.productAvailableBtnEl;
ok(productAvailableBtn, "Got report product available button");
let thanksForReportMessageBarVisible =
ContentTaskUtils.waitForCondition(() => {
return (
!!shoppingContainer.shoppingMessageBarEl &&
ContentTaskUtils.isVisible(
shoppingContainer.shoppingMessageBarEl
)
);
}, "Waiting for shopping-message-bar to be visible");
productAvailableBtn.click();
await thanksForReportMessageBarVisible;
is(
shoppingContainer.shoppingMessageBarEl?.getAttribute("type"),
"thanks-for-reporting",
"shopping-message-bar type should be correct"
);
}
);
}
);
});
/**
* Tests that the correct shopping-message-bar component appears if a product marked as unavailable
* was reported to be back in stock by another user.
*/
add_task(async function test_unavailable_product_reported() {
await BrowserTestUtils.withNewTab(
{
url: "about:shoppingsidebar",
gBrowser,
},
async browser => {
await SpecialPowers.spawn(
browser,
[MOCK_UNAVAILABLE_PRODUCT_REPORTED_RESPONSE],
async mockData => {
let shoppingContainer =
content.document.querySelector(
"shopping-container"
).wrappedJSObject;
shoppingContainer.data = Cu.cloneInto(mockData, content);
await shoppingContainer.updateComplete;
ok(
shoppingContainer.shoppingMessageBarEl,
"Got shopping-message-bar element"
);
is(
shoppingContainer.shoppingMessageBarEl?.getAttribute("type"),
"product-not-available-reported",
"shopping-message-bar type should be correct"
);
}
);
}
);
});
|