//Importante que los import vengas de @open-wc/testing para que tener la m谩xima compatibilidad con lit-element
import { defineCE, elementUpdated, expect, fixture, fixtureCleanup, html} from "@open-wc/testing";
//Librer铆a de MOCK
import sinon from "sinon";
//Importamos el componente
import { Example } from "../index";
describe("Testing Lit WebComponent ", () => {
let sandbox: sinon.SinonSandbox;
//creaci贸n de un sandbox para el mock
before(() => {
sandbox = sinon.createSandbox();
});
//Se restaura el sandbox y se limpia el fixture despu茅s de cada test
afterEach(() => {
sandbox.restore();
fixtureCleanup();
});
//test de renderizado del componente example-test-component
it("should render a default value of property", async () => {
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<example-test-component></example-test-component>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('default value');
expect(el.someProperty).to.equal('default value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('default value');
});
it("should render a default value of property in a web component with random test tag", async () => {
const tag = defineCE(Example);
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<${tag}></${tag}>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('default value');
expect(el.someProperty).to.equal('default value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('default value');
});
it("should render a initialize value property", async () => {
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<example-test-component .someProperty=${'init value'} ></example-test-component>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('init value');
expect(el.someProperty).to.equal('init value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('init value');
});
it("should render a initialize value property in a web component with random test tag", async () => {
const tag = defineCE(Example);
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<${tag} .someProperty=${'init value'}></${tag}>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('init value');
expect(el.someProperty).to.equal('init value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('init value');
});
it("should render a changed value property", async () => {
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<example-test-component .someProperty=${'init value'} ></example-test-component>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('init value');
expect(el.someProperty).to.equal('init value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('init value');
el.someProperty = 'new value';
await elementUpdated(el);
expect(el.getAttribute('someProperty')).to.equal('new value');
expect(el.someProperty).to.equal('new value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('new value');
});
it("should render a changed value property in a web component with random test tag", async () => {
const tag = defineCE(Example);
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<${tag} .someProperty=${'init value'}></${tag}>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('init value');
expect(el.someProperty).to.equal('init value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('init value');
el.someProperty = 'new value';
await elementUpdated(el);
expect(el.getAttribute('someProperty')).to.equal('new value');
expect(el.someProperty).to.equal('new value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('new value');
});
it("should render a reactive changed value property", async () => {
let propertyReactiveBind = 'init value';
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<example-test-component .someProperty=${propertyReactiveBind} ></example-test-component>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('init value');
expect(el.someProperty).to.equal('init value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('init value');
propertyReactiveBind = 'new value';
await elementUpdated(el);
expect(el.getAttribute('someProperty')).to.equal('new value');
expect(el.someProperty).to.equal('new value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('new value');
});
it("should render a reactive changed value property in a web component with random test tag", async () => {
let propertyReactiveBind = 'init value';
const tag = defineCE(Example);
//await fixture espera hasta que se renderice el componente
const el = await fixture< Example >(html`<${tag} .someProperty=${propertyReactiveBind}></${tag}>`);
expect(el).to.exist;
// si tiene shadowRoot es que es un webcomponent y que se ha renderizado de forma correcta
expect(el.shadowRoot).to.exist;
expect(el.getAttribute('someProperty')).to.equal('init value');
expect(el.someProperty).to.equal('init value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('init value');
propertyReactiveBind = 'new value';
await elementUpdated(el);
expect(el.getAttribute('someProperty')).to.equal('new value');
expect(el.someProperty).to.equal('new value');
//Cuidado!!!!! este c贸digo genera acoplamiento al render del componente, no es recomendable ya que los test deben ser funcionales. Nos sirve para testear que el valor de la propiedad se renderiza correctamente, no solo que se ha definido
expect(el.shadowRoot?.getElementById("property-value")).to.equal('new value');
});
}); |