|
10 | 10 | 'use strict';
|
11 | 11 |
|
12 | 12 | 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 | + }); |
15 | 19 |
|
16 | 20 | 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'); |
19 | 29 | });
|
20 | 30 |
|
21 | 31 | it('should escape object to string', () => {
|
22 |
| - var escaped = escapeTextContentForBrowser({ |
| 32 | + var testElement = document.createElement('div'); |
| 33 | + testElement.innerHTML = escapeTextContentForBrowser({ |
23 | 34 | toString: function() {
|
24 | 35 | return 'ponys';
|
25 | 36 | },
|
26 | 37 | });
|
27 | 38 |
|
28 |
| - expect(escaped).toBe('ponys'); |
| 39 | + expect(testElement.textContent).toEqual('ponys'); |
29 | 40 | });
|
30 | 41 |
|
31 | 42 | 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('<'); |
| 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('>'); |
| 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("'"); |
33 | 75 | });
|
34 | 76 |
|
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('"'); |
43 | 80 |
|
44 |
| - escaped = escapeTextContentForBrowser('&'); |
45 |
| - expect(escaped).toBe('&'); |
| 81 | + expect(testElement.innerHTML).toEqual('"'); |
46 | 82 | });
|
47 | 83 | });
|
0 commit comments