Skip to content

Commit d955e27

Browse files
committed
WIP
1 parent 92c7fe2 commit d955e27

File tree

7 files changed

+32
-64
lines changed

7 files changed

+32
-64
lines changed

__tests__/__snapshots__/fragment.test.js.snap

Lines changed: 0 additions & 5 deletions
This file was deleted.

__tests__/__snapshots__/misc.test.js.snap

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`misc > API > encodes special characters 1`] = `"<meta name=\\"description\\" content=\\"This is &quot;quoted&quot; text and &amp; and '.\\" data-rh=\\"true\\">"`;
3+
exports[`misc API encodes special characters 1`] = `"<meta name="description" content="This is &quot;quoted&quot; text and &amp; and '." data-rh="true">"`;
44
5-
exports[`misc > API > only adds new tags and preserves tags when rendering additional Helmet instances 1`] = `"<meta name=\\"description\\" content=\\"Test description\\" data-rh=\\"true\\">"`;
5+
exports[`misc API only adds new tags and preserves tags when rendering additional Helmet instances 1`] = `"<meta name="description" content="Test description" data-rh="true">"`;
66
7-
exports[`misc > API > only adds new tags and preserves tags when rendering additional Helmet instances 2`] = `"<link href=\\"http://localhost/style.css\\" rel=\\"stylesheet\\" type=\\"text/css\\" data-rh=\\"true\\">"`;
7+
exports[`misc API only adds new tags and preserves tags when rendering additional Helmet instances 2`] = `"<link href="http://localhost/style.css" rel="stylesheet" type="text/css" data-rh="true">"`;
88
9-
exports[`misc > API > only adds new tags and preserves tags when rendering additional Helmet instances 3`] = `"<meta name=\\"description\\" content=\\"New description\\" data-rh=\\"true\\">"`;
9+
exports[`misc API only adds new tags and preserves tags when rendering additional Helmet instances 3`] = `"<meta name="description" content="New description" data-rh="true">"`;
1010
11-
exports[`misc > API > only adds new tags and preserves tags when rendering additional Helmet instances 4`] = `"<link href=\\"http://localhost/style2.css\\" rel=\\"stylesheet\\" type=\\"text/css\\" data-rh=\\"true\\">"`;
11+
exports[`misc API only adds new tags and preserves tags when rendering additional Helmet instances 4`] = `"<link href="http://localhost/style2.css" rel="stylesheet" type="text/css" data-rh="true">"`;
1212
13-
exports[`misc > API > only adds new tags and preserves tags when rendering additional Helmet instances 5`] = `"<meta name=\\"description\\" content=\\"Test description\\" data-rh=\\"true\\">"`;
13+
exports[`misc API only adds new tags and preserves tags when rendering additional Helmet instances 5`] = `"<meta name="description" content="Test description" data-rh="true">"`;
1414
15-
exports[`misc > API > recognizes valid tags regardless of attribute ordering 1`] = `"<meta content=\\"Test Description\\" name=\\"description\\" data-rh=\\"true\\">"`;
15+
exports[`misc API recognizes valid tags regardless of attribute ordering 1`] = `"<meta content="Test Description" name="description" data-rh="true">"`;
1616
17-
exports[`misc > Declarative API > encodes special characters 1`] = `"<meta name=\\"description\\" content=\\"This is &quot;quoted&quot; text and &amp; and '.\\" data-rh=\\"true\\">"`;
17+
exports[`misc Declarative API encodes special characters 1`] = `"<meta name="description" content="This is &quot;quoted&quot; text and &amp; and '." data-rh="true">"`;
1818
19-
exports[`misc > Declarative API > only adds new tags and preserves tags when rendering additional Helmet instances 1`] = `"<meta name=\\"description\\" content=\\"Test description\\" data-rh=\\"true\\">"`;
19+
exports[`misc Declarative API only adds new tags and preserves tags when rendering additional Helmet instances 1`] = `"<meta name="description" content="Test description" data-rh="true">"`;
2020
21-
exports[`misc > Declarative API > only adds new tags and preserves tags when rendering additional Helmet instances 2`] = `"<link href=\\"http://localhost/style.css\\" rel=\\"stylesheet\\" type=\\"text/css\\" data-rh=\\"true\\">"`;
21+
exports[`misc Declarative API only adds new tags and preserves tags when rendering additional Helmet instances 2`] = `"<link href="http://localhost/style.css" rel="stylesheet" type="text/css" data-rh="true">"`;
2222
23-
exports[`misc > Declarative API > only adds new tags and preserves tags when rendering additional Helmet instances 3`] = `"<meta name=\\"description\\" content=\\"New description\\" data-rh=\\"true\\">"`;
23+
exports[`misc Declarative API only adds new tags and preserves tags when rendering additional Helmet instances 3`] = `"<meta name="description" content="New description" data-rh="true">"`;
2424
25-
exports[`misc > Declarative API > only adds new tags and preserves tags when rendering additional Helmet instances 4`] = `"<link href=\\"http://localhost/style2.css\\" rel=\\"stylesheet\\" type=\\"text/css\\" data-rh=\\"true\\">"`;
25+
exports[`misc Declarative API only adds new tags and preserves tags when rendering additional Helmet instances 4`] = `"<link href="http://localhost/style2.css" rel="stylesheet" type="text/css" data-rh="true">"`;
2626
27-
exports[`misc > Declarative API > only adds new tags and preserves tags when rendering additional Helmet instances 5`] = `"<meta name=\\"description\\" content=\\"Test description\\" data-rh=\\"true\\">"`;
27+
exports[`misc Declarative API only adds new tags and preserves tags when rendering additional Helmet instances 5`] = `"<meta name="description" content="Test description" data-rh="true">"`;
2828
29-
exports[`misc > Declarative API > recognizes valid tags regardless of attribute ordering 1`] = `"<meta content=\\"Test Description\\" name=\\"description\\" data-rh=\\"true\\">"`;
29+
exports[`misc Declarative API recognizes valid tags regardless of attribute ordering 1`] = `"<meta content="Test Description" name="description" data-rh="true">"`;

__tests__/browser/helmetData.test.tsx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1+
/** @jest-environment jsdom */
2+
3+
import { renderClient } from '../../jest/browser-utils';
4+
15
import { Helmet } from '../../src';
26
import { HELMET_ATTRIBUTE } from '../../src/constants';
37

48
describe('Helmet Data', () => {
59
describe('browser', () => {
610
it('renders without context', () => {
7-
const helmetData = new HelmetData({});
8-
911
renderClient(
10-
<Helmet helmetData={helmetData} base={{ target: '_blank', href: 'http://localhost/' }} />,
12+
<Helmet base={{ target: '_blank', href: 'http://localhost/' }} />,
1113
);
1214

1315
const existingTags = [...document.head.querySelectorAll(`base[${HELMET_ATTRIBUTE}]`)];
@@ -23,10 +25,8 @@ describe('Helmet Data', () => {
2325
});
2426

2527
it('renders declarative without context', () => {
26-
const helmetData = new HelmetData({});
27-
2828
renderClient(
29-
<Helmet helmetData={helmetData}>
29+
<Helmet>
3030
<base target="_blank" href="http://localhost/" />
3131
</Helmet>,
3232
);
@@ -44,14 +44,12 @@ describe('Helmet Data', () => {
4444
});
4545

4646
it('sets base tag based on deepest nested component', () => {
47-
const helmetData = new HelmetData({});
48-
4947
renderClient(
5048
<div>
51-
<Helmet helmetData={helmetData}>
49+
<Helmet>
5250
<base href="http://mysite.com" />
5351
</Helmet>
54-
<Helmet helmetData={helmetData}>
52+
<Helmet>
5553
<base href="http://mysite.com/public" />
5654
</Helmet>
5755
</div>,

__tests__/fragment.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { Helmet } from '../src';
44

5-
import { renderClient } from '../jest/server-utils';
5+
import { renderClient } from '../jest/browser-utils';
66

77
describe('fragments', () => {
88
it('parses Fragments', () => {

__tests__/misc.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Helmet } from '../src';
44
import { HELMET_ATTRIBUTE } from '../src/constants';
55
import type { OnChangeClientState } from '../src/Helmet';
66

7-
import { renderClient } from '../jest/server-utils';
7+
import { renderClient } from '../jest/browser-utils';
88

99
describe('misc', () => {
1010
describe('API', () => {

src/Helmet.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,14 @@ function assertChildType(
4040
`Only elements types ${VALID_TAG_NAMES.join(', ')} are allowed. Helmet does not support rendering <${childType}> elements. Refer to our API for more information.`,
4141
);
4242

43-
if (!nestedChildren || typeof nestedChildren === 'string' || (
44-
Array.isArray(nestedChildren)
45-
&& nestedChildren.every((item) => typeof item === 'string')
46-
)) return;
43+
if (
44+
!nestedChildren
45+
|| typeof nestedChildren === 'string'
46+
|| Array.isArray(nestedChildren)
47+
// TODO: This piece of the check is wrong when parent is a fragment,
48+
// and thus children may not be an array of strings.
49+
// && nestedChildren.every((item) => typeof item === 'string')
50+
) return;
4751

4852
throw Error(
4953
`Helmet expects a string as a child of <${childType}>. Did you forget to wrap your children in braces? ( <${childType}>{\`\`}</${childType}> ) Refer to our API for more information.`,

0 commit comments

Comments
 (0)