Skip to content

Commit dd7feec

Browse files
Gardening and improvements on escapeTextContentForBrowser tests
1 parent 2d7c754 commit dd7feec

File tree

1 file changed

+53
-17
lines changed

1 file changed

+53
-17
lines changed

packages/react-dom/src/__tests__/escapeTextContentForBrowser-test.js

Lines changed: 53 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,74 @@
1010
'use strict';
1111

1212
describe('escapeTextContentForBrowser', () => {
13-
// TODO: can we express this test with only public API?
14-
var escapeTextContentForBrowser = require('escapeTextContentForBrowser');
13+
var escapeTextContentForBrowser;
14+
15+
beforeEach(() => {
16+
jest.resetModules();
17+
escapeTextContentForBrowser = require('escapeTextContentForBrowser');
18+
});
1519

1620
it('should escape boolean to string', () => {
17-
expect(escapeTextContentForBrowser(true)).toBe('true');
18-
expect(escapeTextContentForBrowser(false)).toBe('false');
21+
var firstTestElement = document.createElement('div');
22+
firstTestElement.innerHTML = escapeTextContentForBrowser(true);
23+
24+
var secondTestElement = document.createElement('div');
25+
secondTestElement.innerHTML = escapeTextContentForBrowser(false);
26+
27+
expect(firstTestElement.textContent).toEqual('true');
28+
expect(secondTestElement.textContent).toEqual('false');
1929
});
2030

2131
it('should escape object to string', () => {
22-
var escaped = escapeTextContentForBrowser({
32+
var testElement = document.createElement('div');
33+
testElement.innerHTML = escapeTextContentForBrowser({
2334
toString: function() {
2435
return 'ponys';
2536
},
2637
});
2738

28-
expect(escaped).toBe('ponys');
39+
expect(testElement.textContent).toEqual('ponys');
2940
});
3041

3142
it('should escape number to string', () => {
32-
expect(escapeTextContentForBrowser(42)).toBe('42');
43+
var testElement = document.createElement('div');
44+
testElement.innerHTML = escapeTextContentForBrowser(42);
45+
46+
expect(testElement.textContent).toEqual('42');
47+
});
48+
49+
it('should escape ampersand entity', () => {
50+
var testElement = document.createElement('div');
51+
testElement.innerHTML = escapeTextContentForBrowser('&');
52+
53+
expect(testElement.innerHTML).toEqual('&');
54+
});
55+
56+
it('should escape lower than entity', () => {
57+
var testElement = document.createElement('div');
58+
testElement.innerHTML = escapeTextContentForBrowser('<');
59+
60+
expect(testElement.innerHTML).toEqual('&lt;');
61+
});
62+
63+
it('should escape greater than entity', () => {
64+
var testElement = document.createElement('div');
65+
testElement.innerHTML = escapeTextContentForBrowser('>');
66+
67+
expect(testElement.innerHTML).toEqual('&gt;');
68+
});
69+
70+
it('should escape single quote entity', () => {
71+
var testElement = document.createElement('div');
72+
testElement.innerHTML = escapeTextContentForBrowser("'");
73+
74+
expect(testElement.textContent).toEqual("'");
3375
});
3476

35-
it('should escape string', () => {
36-
var escaped = escapeTextContentForBrowser(
37-
'<script type=\'\' src=""></script>',
38-
);
39-
expect(escaped).not.toContain('<');
40-
expect(escaped).not.toContain('>');
41-
expect(escaped).not.toContain("'");
42-
expect(escaped).not.toContain('"');
77+
it('should escape double quote entity', () => {
78+
var testElement = document.createElement('div');
79+
testElement.innerHTML = escapeTextContentForBrowser('"');
4380

44-
escaped = escapeTextContentForBrowser('&');
45-
expect(escaped).toBe('&amp;');
81+
expect(testElement.innerHTML).toEqual('"');
4682
});
4783
});

0 commit comments

Comments
 (0)