tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

warning-group.test.js (3093B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 "use strict";
      4 
      5 // Test utils.
      6 const expect = require("expect");
      7 const { render } = require("enzyme");
      8 
      9 // Components under test.
     10 const WarningGroup = require("resource://devtools/client/webconsole/components/Output/message-types/WarningGroup.js");
     11 const {
     12  MESSAGE_SOURCE,
     13  MESSAGE_TYPE,
     14 } = require("resource://devtools/client/webconsole/constants.js");
     15 const {
     16  ConsoleMessage,
     17 } = require("resource://devtools/client/webconsole/types.js");
     18 const {
     19  createWarningGroupMessage,
     20 } = require("resource://devtools/client/webconsole/utils/messages.js");
     21 
     22 // Test fakes.
     23 const {
     24  stubPreparedMessages,
     25 } = require("resource://devtools/client/webconsole/test/node/fixtures/stubs/index.js");
     26 const serviceContainer = require("resource://devtools/client/webconsole/test/node/fixtures/serviceContainer.js");
     27 const mockMessage = ConsoleMessage({
     28  messageText: "this is a warning group",
     29  source: MESSAGE_SOURCE.CONSOLE_FRONTEND,
     30  timeStamp: Date.now(),
     31 });
     32 
     33 describe("WarningGroup component:", () => {
     34  it("renders", () => {
     35    const wrapper = render(
     36      WarningGroup({
     37        message: mockMessage,
     38        serviceContainer,
     39        timestampsVisible: true,
     40        badge: 42,
     41      })
     42    );
     43 
     44    const {
     45      timestampString,
     46    } = require("resource://devtools/client/webconsole/utils/l10n.js");
     47    expect(wrapper.find(".timestamp").text()).toBe(
     48      timestampString(mockMessage.timeStamp)
     49    );
     50    expect(wrapper.find(".message-body").text()).toBe(
     51      "this is a warning group 42"
     52    );
     53    expect(wrapper.find(".arrow[aria-expanded=false]")).toExist();
     54  });
     55 
     56  it("does have an expanded arrow when `open` prop is true", () => {
     57    const wrapper = render(
     58      WarningGroup({
     59        message: mockMessage,
     60        serviceContainer,
     61        open: true,
     62      })
     63    );
     64 
     65    expect(wrapper.find(".arrow[aria-expanded=true]")).toExist();
     66  });
     67 
     68  it("does not have a timestamp when timestampsVisible prop is falsy", () => {
     69    const wrapper = render(
     70      WarningGroup({
     71        message: mockMessage,
     72        serviceContainer,
     73        timestampsVisible: false,
     74      })
     75    );
     76 
     77    expect(wrapper.find(".timestamp").length).toBe(0);
     78  });
     79 
     80  it("renders Content Blocking Group message", () => {
     81    const firstMessage = stubPreparedMessages.get(
     82      "ReferenceError: asdf is not defined"
     83    );
     84    firstMessage.messageText =
     85      "The resource at “https://evil.com” was blocked.";
     86    firstMessage.category = "cookieBlockedPermission";
     87    const type = MESSAGE_TYPE.CONTENT_BLOCKING_GROUP;
     88    const message = createWarningGroupMessage(
     89      `${firstMessage.type}-${firstMessage.innerWindowID}`,
     90      type,
     91      firstMessage
     92    );
     93 
     94    const wrapper = render(
     95      WarningGroup({
     96        message,
     97        serviceContainer,
     98        badge: 24,
     99      })
    100    );
    101 
    102    expect(wrapper.find(".message-body").text()).toBe(
    103      "The resource at “<URL>” was blocked. 24"
    104    );
    105    expect(wrapper.find(".arrow[aria-expanded=false]")).toExist();
    106  });
    107 });