From f29236ecb80cdf04a8226662dd93bb15d472848d Mon Sep 17 00:00:00 2001 From: "Welch, Chris" Date: Mon, 27 Mar 2017 17:17:05 -0700 Subject: [PATCH 1/4] test: added test to exemplify bug --- test/HelmetDeclarativeTest.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/HelmetDeclarativeTest.js b/test/HelmetDeclarativeTest.js index 04087ea5..a3ba0ac0 100644 --- a/test/HelmetDeclarativeTest.js +++ b/test/HelmetDeclarativeTest.js @@ -260,6 +260,27 @@ describe("Helmet - Declarative API", () => { done(); }); }); + + context("initialized outside of helmet", () => { + before(() => { + document.title = "Existing Title"; + }); + + it("are not cleared", (done) => { + ReactDOM.render( + + + , + container + ); + + requestIdleCallback(() => { + expect(document.title).to.equal("Existing Title"); + + done(); + }); + }); + }); }); describe("title attributes", () => { From c8c85c5816a3ddebdad97791b60c4014df288c65 Mon Sep 17 00:00:00 2001 From: Richard Herrera Date: Mon, 27 Mar 2017 17:59:24 -0700 Subject: [PATCH 2/4] fix: prevent clearing existing title --- src/HelmetUtils.js | 6 +++--- test/HelmetDeclarativeTest.js | 32 ++++++++++++++------------------ 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/HelmetUtils.js b/src/HelmetUtils.js index 802c1b53..6f4e1e13 100644 --- a/src/HelmetUtils.js +++ b/src/HelmetUtils.js @@ -35,7 +35,7 @@ const getTitleFromPropsList = (propsList) => { const innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE); - return innermostTitle || innermostDefaultTitle || ""; + return innermostTitle || innermostDefaultTitle || undefined; }; const getOnChangeClientState = (propsList) => { @@ -301,7 +301,7 @@ const handleClientStateChange = (newState) => { }; const updateTitle = (title, attributes) => { - if (document.title !== title) { + if (typeof title === "string" && document.title !== title) { document.title = title; } @@ -508,7 +508,7 @@ const mapStateOnServer = ({ noscriptTags, scriptTags, styleTags, - title, + title = "", titleAttributes }) => ({ base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode), diff --git a/test/HelmetDeclarativeTest.js b/test/HelmetDeclarativeTest.js index 7949a7e8..5a0c27ab 100644 --- a/test/HelmetDeclarativeTest.js +++ b/test/HelmetDeclarativeTest.js @@ -261,24 +261,20 @@ describe("Helmet - Declarative API", () => { }); }); - context("initialized outside of helmet", () => { - before(() => { - document.title = "Existing Title"; - }); + it("retains existing title tag when no title tag is defined", (done) => { + headElement.innerHTML = `Existing Title`; - it("are not cleared", (done) => { - ReactDOM.render( - - - , - container - ); + ReactDOM.render( + + + , + container + ); - requestIdleCallback(() => { - expect(document.title).to.equal("Existing Title"); + requestIdleCallback(() => { + expect(document.title).to.equal("Existing Title"); - done(); - }); + done(); }); }); }); @@ -3097,7 +3093,7 @@ describe("Helmet - Declarative API", () => { Test Title - Title you'll never see + Title you will never see , container @@ -3123,7 +3119,7 @@ describe("Helmet - Declarative API", () => { Test Title
- Title you'll never see + Title you will never see
, container @@ -3184,7 +3180,7 @@ describe("Helmet - Declarative API", () => { Test Title , container From 8cd3c6b67573ff8529b09c7a284e7246a6f983aa Mon Sep 17 00:00:00 2001 From: Richard Herrera Date: Mon, 27 Mar 2017 18:26:26 -0700 Subject: [PATCH 3/4] test: check for empty title --- test/HelmetDeclarativeTest.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/HelmetDeclarativeTest.js b/test/HelmetDeclarativeTest.js index 5a0c27ab..41b6c375 100644 --- a/test/HelmetDeclarativeTest.js +++ b/test/HelmetDeclarativeTest.js @@ -277,6 +277,33 @@ describe("Helmet - Declarative API", () => { done(); }); }); + + it("clears title tag if empty title is defined", (done) => { + ReactDOM.render( + + Existing Title + + , + container + ); + + requestIdleCallback(() => { + expect(document.title).to.equal("Existing Title"); + + ReactDOM.render( + + {" "} + + , + container + ); + + requestIdleCallback(() => { + expect(document.title).to.equal(""); + done(); + }); + }); + }); }); describe("title attributes", () => { From 76d82b77d59d069cac35ee8d004ac5f8c708507d Mon Sep 17 00:00:00 2001 From: Richard Herrera Date: Mon, 27 Mar 2017 18:41:04 -0700 Subject: [PATCH 4/4] Bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d0d7d845..15768d8e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-helmet", "description": "A document head manager for React", - "version": "5.0.1", + "version": "5.0.2", "main": "./lib/Helmet.js", "author": "NFL ", "contributors": [