-
Notifications
You must be signed in to change notification settings - Fork 45.5k
/
ReactDOMIDOperations-test.js
67 lines (56 loc) · 1.83 KB
/
ReactDOMIDOperations-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* Copyright 2013-2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @emails react-core
*/
'use strict';
describe('ReactDOMIDOperations', function() {
var DOMPropertyOperations = require('DOMPropertyOperations');
var ReactDOMIDOperations = require('ReactDOMIDOperations');
var ReactMount = require('ReactMount');
var ReactMultiChildUpdateTypes = require('ReactMultiChildUpdateTypes');
var keyOf = require('keyOf');
it('should disallow updating special properties', function() {
spyOn(ReactMount, 'getNode');
spyOn(DOMPropertyOperations, 'setValueForProperty');
expect(function() {
ReactDOMIDOperations.updatePropertyByID(
'testID',
keyOf({dangerouslySetInnerHTML: null}),
{__html: 'testContent'}
);
}).toThrow();
expect(
ReactMount.getNode.argsForCall[0][0]
).toBe('testID');
expect(
DOMPropertyOperations.setValueForProperty.calls.length
).toBe(0);
});
it('should update innerHTML and preserve whitespace', function() {
var stubNode = document.createElement('div');
spyOn(ReactMount, 'getNode').andReturn(stubNode);
var html = '\n \t <span> \n testContent \t </span> \n \t';
ReactDOMIDOperations.dangerouslyProcessChildrenUpdates(
[{
parentID: 'testID',
parentNode: null,
type: ReactMultiChildUpdateTypes.SET_MARKUP,
markupIndex: null,
content: html,
fromIndex: null,
toIndex: null,
}],
[]
);
expect(
ReactMount.getNode.argsForCall[0][0]
).toBe('testID');
expect(stubNode.innerHTML).toBe(html);
});
});