Skip to content
Snippets Groups Projects
button.spec.ts 1.51 KiB
Newer Older
  • Learn to ignore specific revisions
  • Markus Kaarto's avatar
    Markus Kaarto committed
    import { Button } from "./button";
    import { newSpecPage } from "@stencil/core/testing";
    
    it("should render correctly without attributes", async () => {
      const page = await newSpecPage({
        components: [Button],
        html: `<hy-button>Hello tests!</hy-button>`
      });
      expect(page.root).toEqualHtml(`
      <hy-button>
         <button class="default hy-button">
           <span class="button-text">
             Hello tests!
           </span>
         </button>
        </hy-button>
      `);
    });
    
    it("should have classname matching the variant", async () => {
      const page = await newSpecPage({
        components: [Button],
        html: `<hy-button variant="secondary">Hello icons!<hy-button>`
      });
      const button = page.doc.querySelector("button.secondary");
      expect(button).toBeTruthy();
    });
    
    
    Markus Kaarto's avatar
    Markus Kaarto committed
    it("should display an arrow element", async () => {
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const page = await newSpecPage({
        components: [Button],
        html: `<hy-button
          icon="hy-icon-arrow-left"
          >Hello icons!<hy-button>`
      });
      const icon = page.doc.querySelector("span.button-icon");
      expect(icon).toHaveClass("button-icon-left");
    });
    
    it("supports icons on both sides", async () => {
      const page = await newSpecPage({
        components: [Button],
        html: `<hy-button
          variant="secondary"
          icon="hy-icon-arrow-left"
          icon-right="hy-icon-arrow-right">Hello icons!<hy-button>`
      });
      const icons = page.doc.querySelectorAll("span.button-icon");
      expect(icons.length).toBe(2);
      expect(icons[0]).toHaveClass("button-icon-left");
      expect(icons[1]).toHaveClass("button-icon-right");
    });