message-icon.test.js (2000B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 "use strict"; 4 5 const { 6 MESSAGE_LEVEL, 7 MESSAGE_TYPE, 8 } = require("resource://devtools/client/webconsole/constants.js"); 9 10 const expect = require("expect"); 11 const { render } = require("enzyme"); 12 const { 13 createFactory, 14 } = require("resource://devtools/client/shared/vendor/react.mjs"); 15 const MessageIcon = createFactory( 16 require("resource://devtools/client/webconsole/components/Output/MessageIcon.js") 17 ); 18 19 describe("MessageIcon component:", () => { 20 it("renders icon based on level", () => { 21 const rendered = render(MessageIcon({ level: MESSAGE_LEVEL.ERROR })); 22 expect(rendered.hasClass("icon")).toBe(true); 23 expect(rendered.attr("title")).toBe("Error"); 24 expect(rendered.attr("aria-live")).toBe("off"); 25 }); 26 27 it("renders logpoint items", () => { 28 const rendered = render( 29 MessageIcon({ 30 level: MESSAGE_LEVEL.LOG, 31 type: "logPoint", 32 }) 33 ); 34 expect(rendered.hasClass("logpoint")).toBe(true); 35 }); 36 37 it("renders evaluation expression items", () => { 38 const rendered = render( 39 MessageIcon({ 40 level: MESSAGE_LEVEL.LOG, 41 type: MESSAGE_TYPE.COMMAND, 42 }) 43 ); 44 expect(rendered.hasClass("icon")).toBe(true); 45 expect(rendered.attr("title")).toBe("Evaluated code"); 46 }); 47 48 it("renders evaluation expression result items", () => { 49 const rendered = render( 50 MessageIcon({ 51 level: MESSAGE_LEVEL.LOG, 52 type: MESSAGE_TYPE.RESULT, 53 }) 54 ); 55 expect(rendered.hasClass("icon")).toBe(true); 56 expect(rendered.attr("title")).toBe("Evaluation result"); 57 }); 58 59 it("renders icon with custom title", () => { 60 const expectedTitle = "Rendered with custom title"; 61 const rendered = render( 62 MessageIcon({ 63 level: MESSAGE_LEVEL.INFO, 64 type: "info", 65 title: expectedTitle, 66 }) 67 ); 68 expect(rendered.attr("title")).toBe(expectedTitle); 69 }); 70 });