Skip to content
Snippets Groups Projects
button.spec.ts 1.73 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';
    
    Markus Kaarto's avatar
    Markus Kaarto committed
    it('should render correctly without attributes', async () => {
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const page = await newSpecPage({
        components: [Button],
    
        html: `<hy-button>Hello tests!</hy-button>`,
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      });
      expect(page.root).toEqualHtml(`
      <hy-button>
    
         <button type="submit" class="hy-button primary enabled size-normal">
    
    Markus Kaarto's avatar
    Markus Kaarto committed
           <span class="hy-button__text">
    
    Markus Kaarto's avatar
    Markus Kaarto committed
             Hello tests!
           </span>
         </button>
        </hy-button>
      `);
    });
    
    
    Markus Kaarto's avatar
    Markus Kaarto committed
    it('should have classname matching the variant', async () => {
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const page = await newSpecPage({
        components: [Button],
    
        html: `<hy-button variant="secondary">Hello icons!<hy-button>`,
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      });
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const button = page.doc.querySelector('button.secondary');
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      expect(button).toBeTruthy();
    });
    
    
    Markus Kaarto's avatar
    Markus Kaarto committed
    it('should have classname matching the state', async () => {
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const page = await newSpecPage({
        components: [Button],
    
        html: `<hy-button disabled>I am disabled!<hy-button>`,
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      });
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const button = page.doc.querySelector('button');
      expect(button).toHaveAttribute('disabled');
    
    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>`,
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      });
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const icon = page.doc.querySelector('span.hy-button__icon');
      expect(icon).toHaveClass('hy-button__icon');
    
    Markus Kaarto's avatar
    Markus Kaarto committed
    it('supports icons on both sides', async () => {
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      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>`,
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      });
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      const icons = page.doc.querySelectorAll('span.hy-button__icon');
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      expect(icons.length).toBe(2);
    });