diff --git a/packages/react-dom/src/__tests__/escapeTextContentForBrowser-test.js b/packages/react-dom/src/__tests__/escapeTextContentForBrowser-test.js index 889eeae8c3fbb..95be89ca0bf4a 100644 --- a/packages/react-dom/src/__tests__/escapeTextContentForBrowser-test.js +++ b/packages/react-dom/src/__tests__/escapeTextContentForBrowser-test.js @@ -10,38 +10,74 @@ 'use strict'; describe('escapeTextContentForBrowser', () => { - // TODO: can we express this test with only public API? - var escapeTextContentForBrowser = require('escapeTextContentForBrowser'); + var escapeTextContentForBrowser; + + beforeEach(() => { + jest.resetModules(); + escapeTextContentForBrowser = require('escapeTextContentForBrowser'); + }); it('should escape boolean to string', () => { - expect(escapeTextContentForBrowser(true)).toBe('true'); - expect(escapeTextContentForBrowser(false)).toBe('false'); + var firstTestElement = document.createElement('div'); + firstTestElement.innerHTML = escapeTextContentForBrowser(true); + + var secondTestElement = document.createElement('div'); + secondTestElement.innerHTML = escapeTextContentForBrowser(false); + + expect(firstTestElement.textContent).toEqual('true'); + expect(secondTestElement.textContent).toEqual('false'); }); it('should escape object to string', () => { - var escaped = escapeTextContentForBrowser({ + var testElement = document.createElement('div'); + testElement.innerHTML = escapeTextContentForBrowser({ toString: function() { return 'ponys'; }, }); - expect(escaped).toBe('ponys'); + expect(testElement.textContent).toEqual('ponys'); }); it('should escape number to string', () => { - expect(escapeTextContentForBrowser(42)).toBe('42'); + var testElement = document.createElement('div'); + testElement.innerHTML = escapeTextContentForBrowser(42); + + expect(testElement.textContent).toEqual('42'); + }); + + it('should escape ampersand entity', () => { + var testElement = document.createElement('div'); + testElement.innerHTML = escapeTextContentForBrowser('&'); + + expect(testElement.innerHTML).toEqual('&'); + }); + + it('should escape lower than entity', () => { + var testElement = document.createElement('div'); + testElement.innerHTML = escapeTextContentForBrowser('<'); + + expect(testElement.innerHTML).toEqual('<'); + }); + + it('should escape greater than entity', () => { + var testElement = document.createElement('div'); + testElement.innerHTML = escapeTextContentForBrowser('>'); + + expect(testElement.innerHTML).toEqual('>'); + }); + + it('should escape single quote entity', () => { + var testElement = document.createElement('div'); + testElement.innerHTML = escapeTextContentForBrowser("'"); + + expect(testElement.textContent).toEqual("'"); }); - it('should escape string', () => { - var escaped = escapeTextContentForBrowser( - '', - ); - expect(escaped).not.toContain('<'); - expect(escaped).not.toContain('>'); - expect(escaped).not.toContain("'"); - expect(escaped).not.toContain('"'); + it('should escape double quote entity', () => { + var testElement = document.createElement('div'); + testElement.innerHTML = escapeTextContentForBrowser('"'); - escaped = escapeTextContentForBrowser('&'); - expect(escaped).toBe('&'); + expect(testElement.innerHTML).toEqual('"'); }); });