Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81165 views
1
/**
2
* Copyright 2013-2014, Facebook, Inc.
3
* All rights reserved.
4
*
5
* This source code is licensed under the BSD-style license found in the
6
* LICENSE file in the root directory of this source tree. An additional grant
7
* of patent rights can be found in the PATENTS file in the same directory.
8
*
9
* @emails react-core
10
*/
11
/*jslint evil: true */
12
13
"use strict";
14
15
var React = require('React');
16
var instantiateReactComponent = require('instantiateReactComponent');
17
18
describe('Danger', function() {
19
20
describe('dangerouslyRenderMarkup', function() {
21
var Danger;
22
var transaction;
23
24
beforeEach(function() {
25
require('mock-modules').dumpCache();
26
Danger = require('Danger');
27
28
var ReactReconcileTransaction = require('ReactReconcileTransaction');
29
transaction = new ReactReconcileTransaction();
30
});
31
32
it('should render markup', function() {
33
var markup = instantiateReactComponent(
34
<div />
35
).mountComponent('.rX', transaction, 0);
36
var output = Danger.dangerouslyRenderMarkup([markup])[0];
37
38
expect(output.nodeName).toBe('DIV');
39
});
40
41
it('should render markup with props', function() {
42
var markup = instantiateReactComponent(
43
<div className="foo" />
44
).mountComponent(
45
'.rX',
46
transaction,
47
0
48
);
49
var output = Danger.dangerouslyRenderMarkup([markup])[0];
50
51
expect(output.nodeName).toBe('DIV');
52
expect(output.className).toBe('foo');
53
});
54
55
it('should render wrapped markup', function() {
56
var markup = instantiateReactComponent(
57
<th />
58
).mountComponent('.rX', transaction, 0);
59
var output = Danger.dangerouslyRenderMarkup([markup])[0];
60
61
expect(output.nodeName).toBe('TH');
62
});
63
64
it('should render lists of markup with similar `nodeName`', function() {
65
var renderedMarkup = Danger.dangerouslyRenderMarkup(
66
['<p id="A">1</p>', '<p id="B">2</p>', '<p id="C">3</p>']
67
);
68
69
expect(renderedMarkup.length).toBe(3);
70
71
expect(renderedMarkup[0].nodeName).toBe('P');
72
expect(renderedMarkup[1].nodeName).toBe('P');
73
expect(renderedMarkup[2].nodeName).toBe('P');
74
75
expect(renderedMarkup[0].innerHTML).toBe('1');
76
expect(renderedMarkup[1].innerHTML).toBe('2');
77
expect(renderedMarkup[2].innerHTML).toBe('3');
78
});
79
80
it('should render lists of markup with different `nodeName`', function() {
81
var renderedMarkup = Danger.dangerouslyRenderMarkup(
82
['<p id="A">1</p>', '<td id="B">2</td>', '<p id="C">3</p>']
83
);
84
85
expect(renderedMarkup.length).toBe(3);
86
87
expect(renderedMarkup[0].nodeName).toBe('P');
88
expect(renderedMarkup[1].nodeName).toBe('TD');
89
expect(renderedMarkup[2].nodeName).toBe('P');
90
91
expect(renderedMarkup[0].innerHTML).toBe('1');
92
expect(renderedMarkup[1].innerHTML).toBe('2');
93
expect(renderedMarkup[2].innerHTML).toBe('3');
94
});
95
96
it('should throw when rendering invalid markup', function() {
97
expect(function() {
98
Danger.dangerouslyRenderMarkup(['']);
99
}).toThrow(
100
'Invariant Violation: dangerouslyRenderMarkup(...): Missing markup.'
101
);
102
103
spyOn(console, "error");
104
105
var renderedMarkup = Danger.dangerouslyRenderMarkup(['<p></p><p></p>']);
106
var args = console.error.argsForCall[0];
107
108
expect(renderedMarkup.length).toBe(1);
109
expect(renderedMarkup[0].nodeName).toBe('P');
110
111
expect(console.error.argsForCall.length).toBe(1);
112
113
expect(args.length).toBe(2);
114
expect(args[0]).toBe('Danger: Discarding unexpected node:');
115
expect(args[1].nodeName).toBe('P');
116
});
117
});
118
119
});
120
121