eleventy-plugin-wcc
Version:
An Eleventy plugin for rendering Web Components with WCC.
99 lines (68 loc) • 3.23 kB
JavaScript
import { stripWrappingParagraphs } from '../src/utils.js';
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
describe('stripWrappingParagraphs', () => {
describe('Html fragment', () => {
it('removes wrapping p tags', async () => {
const input = '<p><x-greeting></x-greeting></p>';
const expected = '<x-greeting></x-greeting>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
it('removes wrapping p tags (inner content)', async () => {
const input = '<p><x-greeting>inner content</x-greeting></p>';
const expected = '<x-greeting>inner content</x-greeting>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
it('removes wrapping p tags (inner content, newlines)', async () => {
const input = '<p><x-greeting>inner\ncontent</x-greeting></p>';
const expected = '<x-greeting>inner\ncontent</x-greeting>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
it('removes wrapping p tags (whitespace)', async () => {
const input = '<p> \n\t<x-greeting></x-greeting> \n</p>';
const expected = '<x-greeting></x-greeting>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
it('does not remove wrapping p tags if it includes other content', async () => {
const input = '<p>Hello <x-greeting></x-greeting></p>';
const result = stripWrappingParagraphs(input);
assert.equal(result, input);
});
it('removes wrapping p tags (multiple)', async () => {
const input =
'<p><x-greeting></x-greeting></p>\n<p><x-test></x-test></p>';
const expected = '<x-greeting></x-greeting>\n<x-test></x-test>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
it('removes nested wrapping p tags', async () => {
const input = '<main><p><x-greeting></x-greeting></p></main>';
const expected = '<main><x-greeting></x-greeting></main>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
it('removes double nested wrapping p tags', async () => {
const input = '<main><div><p><x-greeting></x-greeting></p></div></main>';
const expected = '<main><div><x-greeting></x-greeting></div></main>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
});
describe('Html document', () => {
it('preserves html, head, and body tags', () => {
const input = '<html lang="en"><head></head><body><p>Hello</p></body></html>';
const result = stripWrappingParagraphs(input);
assert.equal(result, input);
});
it('strips p tags in body', () => {
const input = '<html lang="en"><head></head><body><p><x-greeting></x-greeting></p></body></html>';
const expected = '<html lang="en"><head></head><body><x-greeting></x-greeting></body></html>';
const result = stripWrappingParagraphs(input);
assert.equal(result, expected);
});
});
});