summaryrefslogtreecommitdiffstats
path: root/browser/components/shopping/tests/browser/browser_adjusted_rating.js
blob: b0d2da41d5cfc0814e21f60db620f9e1e99ba6c2 (plain)
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
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

add_task(async function test_adjusted_rating() {
  await BrowserTestUtils.withNewTab(
    {
      url: "about:shoppingsidebar",
      gBrowser,
    },
    async browser => {
      await SpecialPowers.spawn(
        browser,
        [MOCK_ANALYZED_PRODUCT_RESPONSE],
        async mockData => {
          let rating = mockData.adjusted_rating;

          let shoppingContainer =
            content.document.querySelector(
              "shopping-container"
            ).wrappedJSObject;
          shoppingContainer.data = Cu.cloneInto(mockData, content);
          await shoppingContainer.updateComplete;

          let adjustedRating = shoppingContainer.adjustedRatingEl;
          await adjustedRating.updateComplete;

          let mozFiveStar = adjustedRating.ratingEl;
          ok(mozFiveStar, "The moz-five-star element exists");

          is(
            mozFiveStar.rating,
            rating,
            `The moz-five-star rating is ${rating}`
          );
          is(
            adjustedRating.rating,
            rating,
            `The adjusted rating "rating" is ${rating}`
          );

          rating = 2.55;
          adjustedRating.rating = rating;

          await adjustedRating.updateComplete;

          is(
            mozFiveStar.rating,
            rating,
            `The moz-five-star rating is now ${rating}`
          );
          is(
            adjustedRating.rating,
            rating,
            `The adjusted rating "rating" is now ${rating}`
          );

          rating = 0;
          adjustedRating.rating = rating;

          await adjustedRating.updateComplete;

          is(
            adjustedRating.rating,
            rating,
            `The adjusted rating "rating" is now ${rating}`
          );

          is(
            mozFiveStar.rating,
            0.5,
            `When the rating is 0, the star rating displays 0.5 stars.`
          );

          rating = null;
          adjustedRating.rating = rating;

          await adjustedRating.updateComplete;

          is(
            adjustedRating.rating,
            rating,
            `The adjusted rating "rating" is now ${rating}`
          );

          ok(
            ContentTaskUtils.isHidden(adjustedRating),
            "adjusted rating should not be visible"
          );

          rating = 3;
          adjustedRating.rating = rating;

          await adjustedRating.updateComplete;
          mozFiveStar = adjustedRating.ratingEl;
          ok(
            ContentTaskUtils.isVisible(adjustedRating),
            "adjusted rating should be visible"
          );
          is(
            mozFiveStar.rating,
            rating,
            `The moz-five-star rating is now ${rating}`
          );
          is(
            adjustedRating.rating,
            rating,
            `The adjusted rating "rating" is now ${rating}`
          );
        }
      );
    }
  );
});