@@ -3,74 +3,96 @@ import assert from 'node:assert/strict';
33import { describe , it } from 'node:test' ;
44
55describe ( 'stripWrappingParagraphs' , ( ) => {
6- it ( 'removes wrapping p tags' , async ( ) => {
7- const input = '<p><x-greeting></x-greeting></p>' ;
8- const expected = '<x-greeting></x-greeting>' ;
6+ describe ( 'Html fragment' , ( ) => {
7+ it ( 'removes wrapping p tags' , async ( ) => {
8+ const input = '<p><x-greeting></x-greeting></p>' ;
9+ const expected = '<x-greeting></x-greeting>' ;
910
10- const result = stripWrappingParagraphs ( input ) ;
11+ const result = stripWrappingParagraphs ( input ) ;
1112
12- assert . equal ( result , expected ) ;
13- } ) ;
13+ assert . equal ( result , expected ) ;
14+ } ) ;
1415
15- it ( 'removes wrapping p tags (inner content)' , async ( ) => {
16- const input = '<p><x-greeting>inner content</x-greeting></p>' ;
17- const expected = '<x-greeting>inner content</x-greeting>' ;
16+ it ( 'removes wrapping p tags (inner content)' , async ( ) => {
17+ const input = '<p><x-greeting>inner content</x-greeting></p>' ;
18+ const expected = '<x-greeting>inner content</x-greeting>' ;
1819
19- const result = stripWrappingParagraphs ( input ) ;
20+ const result = stripWrappingParagraphs ( input ) ;
2021
21- assert . equal ( result , expected ) ;
22- } ) ;
22+ assert . equal ( result , expected ) ;
23+ } ) ;
2324
24- it ( 'removes wrapping p tags (inner content, newlines)' , async ( ) => {
25- const input = '<p><x-greeting>inner\ncontent</x-greeting></p>' ;
26- const expected = '<x-greeting>inner\ncontent</x-greeting>' ;
25+ it ( 'removes wrapping p tags (inner content, newlines)' , async ( ) => {
26+ const input = '<p><x-greeting>inner\ncontent</x-greeting></p>' ;
27+ const expected = '<x-greeting>inner\ncontent</x-greeting>' ;
2728
28- const result = stripWrappingParagraphs ( input ) ;
29+ const result = stripWrappingParagraphs ( input ) ;
2930
30- assert . equal ( result , expected ) ;
31- } ) ;
31+ assert . equal ( result , expected ) ;
32+ } ) ;
3233
33- it ( 'removes wrapping p tags (whitespace)' , async ( ) => {
34- const input = '<p> \n\t<x-greeting></x-greeting> \n</p>' ;
35- const expected = '<x-greeting></x-greeting>' ;
34+ it ( 'removes wrapping p tags (whitespace)' , async ( ) => {
35+ const input = '<p> \n\t<x-greeting></x-greeting> \n</p>' ;
36+ const expected = '<x-greeting></x-greeting>' ;
3637
37- const result = stripWrappingParagraphs ( input ) ;
38+ const result = stripWrappingParagraphs ( input ) ;
3839
39- assert . equal ( result , expected ) ;
40- } ) ;
40+ assert . equal ( result , expected ) ;
41+ } ) ;
4142
42- it ( 'does not remove wrapping p tags if it includes other content' , async ( ) => {
43- const input = '<p>Hello <x-greeting></x-greeting></p>' ;
43+ it ( 'does not remove wrapping p tags if it includes other content' , async ( ) => {
44+ const input = '<p>Hello <x-greeting></x-greeting></p>' ;
4445
45- const result = stripWrappingParagraphs ( input ) ;
46+ const result = stripWrappingParagraphs ( input ) ;
4647
47- assert . equal ( result , input ) ;
48- } ) ;
48+ assert . equal ( result , input ) ;
49+ } ) ;
4950
50- it ( 'removes wrapping p tags (multiple)' , async ( ) => {
51- const input = '<p><x-greeting></x-greeting></p>\n<p><x-test></x-test></p>' ;
52- const expected = '<x-greeting></x-greeting>\n<x-test></x-test>' ;
51+ it ( 'removes wrapping p tags (multiple)' , async ( ) => {
52+ const input =
53+ '<p><x-greeting></x-greeting></p>\n<p><x-test></x-test></p>' ;
54+ const expected = '<x-greeting></x-greeting>\n<x-test></x-test>' ;
5355
54- const result = stripWrappingParagraphs ( input ) ;
56+ const result = stripWrappingParagraphs ( input ) ;
5557
56- assert . equal ( result , expected ) ;
57- } ) ;
58+ assert . equal ( result , expected ) ;
59+ } ) ;
5860
59- it ( 'removes nested wrapping p tags' , async ( ) => {
60- const input = '<main><p><x-greeting></x-greeting></p></main>' ;
61- const expected = '<main><x-greeting></x-greeting></main>' ;
61+ it ( 'removes nested wrapping p tags' , async ( ) => {
62+ const input = '<main><p><x-greeting></x-greeting></p></main>' ;
63+ const expected = '<main><x-greeting></x-greeting></main>' ;
6264
63- const result = stripWrappingParagraphs ( input ) ;
65+ const result = stripWrappingParagraphs ( input ) ;
6466
65- assert . equal ( result , expected ) ;
67+ assert . equal ( result , expected ) ;
68+ } ) ;
69+
70+ it ( 'removes double nested wrapping p tags' , async ( ) => {
71+ const input = '<main><div><p><x-greeting></x-greeting></p></div></main>' ;
72+ const expected = '<main><div><x-greeting></x-greeting></div></main>' ;
73+
74+ const result = stripWrappingParagraphs ( input ) ;
75+
76+ assert . equal ( result , expected ) ;
77+ } ) ;
6678 } ) ;
6779
68- it ( 'removes double nested wrapping p tags' , async ( ) => {
69- const input = '<main><div><p><x-greeting></x-greeting></p></div></main>' ;
70- const expected = '<main><div><x-greeting></x-greeting></div></main>' ;
80+ describe ( 'Html document' , ( ) => {
81+ it ( 'preserves html, head, and body tags' , ( ) => {
82+ const input = '<!DOCTYPE html><html lang="en"><head></head><body><p>Hello</p></body></html>' ;
83+
84+ const result = stripWrappingParagraphs ( input ) ;
85+
86+ assert . equal ( result , input ) ;
87+ } ) ;
88+
89+ it ( 'strips p tags in body' , ( ) => {
90+ const input = '<!DOCTYPE html><html lang="en"><head></head><body><p><x-greeting></x-greeting></p></body></html>' ;
91+ const expected = '<!DOCTYPE html><html lang="en"><head></head><body><x-greeting></x-greeting></body></html>' ;
7192
72- const result = stripWrappingParagraphs ( input ) ;
93+ const result = stripWrappingParagraphs ( input ) ;
7394
74- assert . equal ( result , expected ) ;
95+ assert . equal ( result , expected ) ;
96+ } ) ;
7597 } ) ;
7698} ) ;
0 commit comments