Skip to content

Commit

Permalink
test(hx-file-icon): surf-2008
Browse files Browse the repository at this point in the history
  • Loading branch information
BadeJaya committed May 20, 2020
1 parent cd92348 commit d3eb8ad
Showing 1 changed file with 154 additions and 0 deletions.
154 changes: 154 additions & 0 deletions src/elements/hx-file-icon/index.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
import { fixture, expect } from '@open-wc/testing';

/**
* <hx-file-icon> component tests
*
* @type HXFileIconElement
*
*/
describe('<hx-file-icon> component tests', () => {
const template = '<hx-file-icon>';

describe('test instantiate element', () => {
it('should be instantiated with hx-defined attribute', async () => {
const component = /** @type {HXFileIconElement} */ await fixture(template);
const attr = component.hasAttribute('hx-defined');

expect(attr).to.be.true;
});

it('should not be hidden', async () => {
const component = /** @type {HXFileIconElement} */ await fixture(template);
const prop = component.hidden;

expect(prop).to.be.false;
});

it(`the rendered Light DOM should NOT equal simple template ${template}`, async () => {
const component = /** @type {HXFileIconElement} */ await fixture(template);

expect(component).lightDom.to.not.equal(template);
});

});

describe('test Shadow DOM', () => {
describe('verify render', () => {
it('should have a static Shadow DOM', async function () {
const component = /** @type { HXFileIconElement } */ await fixture(template);

// FIXME: temp fix issue submitted https://github.com/open-wc/open-wc/issues/1540
const shadow = component.shadowRoot.innerHTML;

expect(component).shadowDom.to.equal(shadow);
});

it('should render the Shadow Root mode open', async () => {
const component = /** @type { HXFileIconElement } */ await fixture(template);
const mode = component.shadowRoot.mode;

expect(mode).to.equal("open");
});

it('should have a single <slot>', async () => {
const component = /** @type { HXFileIconElement } */ await fixture(template);
const shadow = component.shadowRoot;
const query = shadow.querySelectorAll('slot');
const len = query.length;

expect(len).to.be.equal(0);
});

it('should have an unnamed <slot>', async () => {
const component = /** @type { HXFileIconElement } */ await fixture(template);
const name = component.slot;

if ( name !== null ) {
expect(name).to.be.equal('');
} else {
expect(name).to.be.null; // IE11, Legacy Edge, and older browsers
}
});
});

describe('verify Shadow DOM markup', () => {
it('markup should contain a #hxFileIcon <div>', async () => {
const elSelector = 'div#hxFileIcon';
const id = 'hxFileIcon';
const component = /** @type { HXFileIconElement } */ await fixture(template);
const shadow = component.shadowRoot;
const query = shadow.querySelector(elSelector);
const queryId = query.id;

expect(queryId).to.equal(id);
});

it('markup should contain a #hxBase with an file type <hx-icon>', async () => {
const elSelector = 'div#hxFileIcon > hx-icon';
const Type = 'file';
const component = /** @type { HXFileIconElement } */ await fixture(template);
const shadow = component.shadowRoot;
const query = shadow.querySelector(elSelector);
const queryId = query.type;

expect(queryId).to.equal(Type);
});

it('markup should contain a #hxOverlay <div>', async () => {
const elSelector = 'div#hxOverlay';
const id = 'hxOverlay';
const component = /** @type { HXFileIconElement } */ await fixture(template);
const shadow = component.shadowRoot;
const query = shadow.querySelector(elSelector);
const queryId = query.id;

expect(queryId).to.equal(id);
});

it('markup should contain a #hxIcon <hx-icon>', async () => {
const elSelector = 'div#hxOverlay > #hxIcon';
const id = 'hxIcon';
const component = /** @type { HXFileIconElement } */ await fixture(template);
const shadow = component.shadowRoot;
const query = shadow.querySelector(elSelector);
const queryId = query.id;

expect(queryId).to.equal(id);
});

it('markup should contain a #hxExt <div>', async () => {
const elSelector = 'div#hxExt';
const id = 'hxExt';
const component = /** @type { HXFileIconElement } */ await fixture(template);
const shadow = component.shadowRoot;
const query = shadow.querySelector(elSelector);
const queryId = query.id;

expect(queryId).to.equal(id);
});
});
});

describe('test $onConnect method', () => {
it('should be type on connect', async () => {
const component = /** @type {HXFileIconElement} */ await fixture(template);
const attr = component.hasAttribute('type');

expect(attr).to.be.false;
});
});

describe('test <hx-file-icon> getter and setter methods', () => {
it('should be able to set bell [type="bell"]', async () => {
const component = /** @type {HXFileIconElement} */ await fixture(template);
const attrType = 'bell';

component.type = attrType;
const attr = component.hasAttribute('type');
const alertType = component.getAttribute('type');

expect(attr).to.be.true;
expect(alertType).to.equal(attrType);
});
});
});

0 comments on commit d3eb8ad

Please sign in to comment.