diff options
author | 2022-05-16 18:16:30 +0200 | |
---|---|---|
committer | 2022-05-16 12:16:30 -0400 | |
commit | fe61e469b243c27781112499f151782baf9004a4 (patch) | |
tree | 4bcc4a7cb6a6f984ed7425bde64e7d7a7391430a /packages/integrations/lit/test/server.test.js | |
parent | b6f7a4fb4bc01dccd9bf3a35a66657a6e8c8d842 (diff) | |
download | astro-fe61e469b243c27781112499f151782baf9004a4.tar.gz astro-fe61e469b243c27781112499f151782baf9004a4.tar.zst astro-fe61e469b243c27781112499f151782baf9004a4.zip |
test(@astrojs/lit): adding tests (#3375)
* test(@astrojs/lit): adding tests
* changeset
Diffstat (limited to 'packages/integrations/lit/test/server.test.js')
-rw-r--r-- | packages/integrations/lit/test/server.test.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/packages/integrations/lit/test/server.test.js b/packages/integrations/lit/test/server.test.js new file mode 100644 index 000000000..a4b691209 --- /dev/null +++ b/packages/integrations/lit/test/server.test.js @@ -0,0 +1,80 @@ +import { expect } from 'chai'; +import server from '../server.js' +import { LitElement, html } from 'lit' +import * as cheerio from 'cheerio' + +const { check, renderToStaticMarkup } = server + +describe('check', () => { + it('should be false with no component', async () => { + expect(await check()).to.equal(false) + }) + + it('should be false with a registered non-lit component', async () => { + const tagName = 'non-lit-component' + customElements.define(tagName, class TestComponent extends HTMLElement {}) + expect(await check(tagName)).to.equal(false) + }) + + it('should be true with a registered lit component', async () => { + const tagName = 'lit-component' + customElements.define(tagName, class extends LitElement {}) + expect(await check(tagName)).to.equal(true) + }) +}) + +describe('renderToStaticMarkup', () => { + it('should throw error if trying to render an unregistered component', async () => { + const tagName = 'non-registrered-component' + try { + await renderToStaticMarkup(tagName) + } catch (e) { + expect(e).to.be.an.instanceOf(TypeError) + } + }) + + it('should render emtpy component with default markup', async () => { + const tagName = 'nothing-component' + customElements.define(tagName, class extends LitElement {}) + const render = await renderToStaticMarkup(tagName) + expect(render).to.deep.equal({ + html: `<${tagName}><template shadowroot="open"><!--lit-part--><!--/lit-part--></template></${tagName}>` + }) + }) + + it('should render component with default markup', async () => { + const tagName = 'simple-component' + customElements.define(tagName, class extends LitElement { + render() { + return html`<p>hola</p>` + } + }) + const render = await renderToStaticMarkup(tagName) + const $ = cheerio.load(render.html) + expect($(`${tagName} template`).html()).to.contain('<p>hola</p>') + }) + + it('should render component with properties and attributes', async () => { + const tagName = 'props-and-attrs-component' + const attr1 = 'test' + const prop1 = 'Daniel' + customElements.define(tagName, class extends LitElement { + static properties = { + prop1: { type: String }, + } + + constructor() { + super(); + this.prop1 = 'someone'; + } + + render() { + return html`<p>Hello ${this.prop1}</p>` + } + }) + const render = await renderToStaticMarkup(tagName, { prop1, attr1 }) + const $ = cheerio.load(render.html) + expect($(tagName).attr('attr1')).to.equal(attr1) + expect($(`${tagName} template`).text()).to.contain(`Hello ${prop1}`) + }) +}) |