|
| 1 | +// Import testing helpers. For more information check out: |
| 2 | +// https://open-wc.org/docs/testing/helpers/ |
| 3 | +import { expect } from "@open-wc/testing/index-no-side-effects.js"; |
| 4 | + |
| 5 | +// Import our custom fixture wrapper. This allows us to run tests |
| 6 | +// in React and Vue as well as a normal fixture. |
| 7 | +import { createFixture } from "../../../test/utils/create-fixture.js"; |
| 8 | + |
| 9 | +// Import the element we're testing. |
| 10 | +import "../dist/pfe-content-set"; |
| 11 | + |
| 12 | +// One element, defined here, is used |
| 13 | +// in multiple tests. It's torn down and recreated each time. |
| 14 | +const element = |
| 15 | + `<div id="container"> |
| 16 | + <pfe-content-set id="default"> |
| 17 | + <h2 pfe-content-set--header id="heading1">Heading 1</h2> |
| 18 | + <p pfe-content-set--panel>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor |
| 19 | + invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores |
| 20 | + et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum |
| 21 | + dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna |
| 22 | + aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd |
| 23 | + gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur |
| 24 | + sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam |
| 25 | + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata |
| 26 | + sanctus est Lorem ipsum dolor sit amet.</p> |
| 27 | + <h2 pfe-content-set--header id="heading2">Heading 2</h2> |
| 28 | + <p pfe-content-set--panel>Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore |
| 29 | + magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd |
| 30 | + gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur |
| 31 | + sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam |
| 32 | + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata |
| 33 | + sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy |
| 34 | + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et |
| 35 | + justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus.</p> |
| 36 | + <h2 pfe-content-set--header id="heading3">Heading 3</h2> |
| 37 | + <p pfe-content-set--panel>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no |
| 38 | + sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, |
| 39 | + sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos |
| 40 | + et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum |
| 41 | + dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore |
| 42 | + dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd |
| 43 | + magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit |
| 44 | + amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam |
| 45 | + erat.</p> |
| 46 | + </pfe-content-set> |
| 47 | + </div> |
| 48 | + `; |
| 49 | + |
| 50 | +describe("<pfe-content-set>", () => { |
| 51 | + |
| 52 | + it("should upgrade", async () => { |
| 53 | + const el = await createFixture(element); |
| 54 | + const pfeContentSet = el.firstElementChild; |
| 55 | + |
| 56 | + expect(pfeContentSet).to.be.an.instanceOf( |
| 57 | + customElements.get("pfe-content-set"), |
| 58 | + "pfe-content-set should be an instance of PfeContentSet" |
| 59 | + ); |
| 60 | + }); |
| 61 | + |
| 62 | + it("should have the proper attributes for tabs", async () => { |
| 63 | + const el = await createFixture(element); |
| 64 | + const pfeContentSet = el.firstElementChild; |
| 65 | + const pfeTabs = pfeContentSet.view; |
| 66 | + |
| 67 | + const firstHeader = pfeTabs.querySelector("pfe-tab:nth-child(1)"); |
| 68 | + const thirdHeader = pfeTabs.querySelector("pfe-tab:nth-child(5)"); |
| 69 | + const panel = pfeTabs.querySelector("pfe-tab-panel"); |
| 70 | + |
| 71 | + expect(firstHeader.hasAttribute("aria-controls")).to.be.true; |
| 72 | + expect(firstHeader.getAttribute("tabindex")).to.equal("0"); |
| 73 | + expect(firstHeader.getAttribute("aria-selected")).to.equal("true"); |
| 74 | + |
| 75 | + expect(thirdHeader.hasAttribute("aria-controls")).to.be.true; |
| 76 | + expect(thirdHeader.getAttribute("tabindex")).to.equal("-1"); |
| 77 | + expect(thirdHeader.getAttribute("aria-selected")).to.equal("false"); |
| 78 | + |
| 79 | + expect(panel.hasAttribute("aria-labelledby")).to.be.true; |
| 80 | + }); |
| 81 | + |
| 82 | + // it("should be an accordion", async () => { |
| 83 | + // const el = await createFixture(element); |
| 84 | + |
| 85 | + // // Limit the size of the container |
| 86 | + // el.style.width = "600px"; |
| 87 | + |
| 88 | + // const pfeContentSet = el.firstElementChild; |
| 89 | + // const pfeAccordion = pfeContentSet.view; |
| 90 | + |
| 91 | + // const firstHeader = pfeAccordion.querySelector("pfe-accordion-header:nth-of-type(1)"); |
| 92 | + // const firstPanel = pfeAccordion.querySelector("pfe-accordion-panel:nth-of-type(2)"); |
| 93 | + // const secondPanel = pfeAccordion.querySelector("pfe-accordion-panel:nth-of-type(2)"); |
| 94 | + // const thirdHeader = pfeAccordion.querySelector("pfe-accordion-header:nth-of-type(3)"); |
| 95 | + |
| 96 | + // expect(firstHeader.hasAttribute("aria-controls")).to.be.true; |
| 97 | + // expect(firstPanel.hasAttribute("aria-labelledby")).to.be.true; |
| 98 | + // expect(secondPanel.hasAttribute("aria-labelledby")).to.be.true; |
| 99 | + // expect(thirdHeader.hasAttribute("aria-controls")).to.be.true; |
| 100 | + // }); |
| 101 | +}); |
0 commit comments