/
no-deprecated.js
116 lines (108 loc) · 3.81 KB
/
no-deprecated.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/**
* @fileoverview Prevent usage of deprecated methods
* @author Yannick Croissant
* @author Scott Feeney
*/
'use strict';
// ------------------------------------------------------------------------------
// Requirements
// ------------------------------------------------------------------------------
var rule = require('../../../lib/rules/no-deprecated');
var RuleTester = require('eslint').RuleTester;
require('babel-eslint');
// ------------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------------
var ruleTester = new RuleTester();
ruleTester.run('no-deprecated', rule, {
valid: [
// Not deprecated
'var element = React.createElement(\'p\', {}, null);',
'var clone = React.cloneElement(element);',
'ReactDOM.render(element, container);',
'ReactDOM.unmountComponentAtNode(container);',
'ReactDOM.findDOMNode(instance);',
'ReactDOMServer.renderToString(element);',
'ReactDOMServer.renderToStaticMarkup(element);',
// Deprecated in a later version
{code: 'React.renderComponent()', settings: {react: {version: '0.11.0'}}},
{code: 'React.createClass()', settings: {react: {version: '15.4.0'}}},
{code: 'React.PropTypes', settings: {react: {version: '15.4.0'}}}
],
invalid: [{
code: 'React.renderComponent()',
settings: {react: {version: '0.12.0'}},
errors: [{
message: 'React.renderComponent is deprecated since React 0.12.0, use React.render instead'
}]
}, {
code: 'Foo.renderComponent()',
settings: {react: {pragma: 'Foo', version: '0.12.0'}},
errors: [{
message: 'Foo.renderComponent is deprecated since React 0.12.0, use Foo.render instead'
}]
}, {
code: '/** @jsx Foo */ Foo.renderComponent()',
settings: {react: {version: '0.12.0'}},
errors: [{
message: 'Foo.renderComponent is deprecated since React 0.12.0, use Foo.render instead'
}]
}, {
code: 'this.transferPropsTo()',
errors: [{
message: 'this.transferPropsTo is deprecated since React 0.12.0, use spread operator ({...}) instead'
}]
}, {
code: 'React.addons.classSet()',
errors: [{
message: 'React.addons.classSet is deprecated since React 0.13.0, use the npm module classnames instead'
}]
}, {
code: 'React.render(element, container);',
errors: [{
message: 'React.render is deprecated since React 0.14.0, use ReactDOM.render instead'
}]
}, {
code: 'React.unmountComponentAtNode(container);',
errors: [{
message: (
'React.unmountComponentAtNode is deprecated since React 0.14.0, ' +
'use ReactDOM.unmountComponentAtNode instead'
)
}]
}, {
code: 'React.findDOMNode(instance);',
errors: [{
message: 'React.findDOMNode is deprecated since React 0.14.0, use ReactDOM.findDOMNode instead'
}]
}, {
code: 'React.renderToString(element);',
errors: [{
message: 'React.renderToString is deprecated since React 0.14.0, use ReactDOMServer.renderToString instead'
}]
}, {
code: 'React.renderToStaticMarkup(element);',
errors: [{
message: (
'React.renderToStaticMarkup is deprecated since React 0.14.0, ' +
'use ReactDOMServer.renderToStaticMarkup instead'
)
}]
}, {
code: 'React.createClass({});',
errors: [{
message: 'React.createClass is deprecated since React 15.5.0, use the npm module create-react-class instead'
}]
}, {
code: 'Foo.createClass({});',
settings: {react: {pragma: 'Foo'}},
errors: [{
message: 'Foo.createClass is deprecated since React 15.5.0, use the npm module create-react-class instead'
}]
}, {
code: 'React.PropTypes',
errors: [{
message: 'React.PropTypes is deprecated since React 15.5.0, use the npm module prop-types instead'
}]
}]
});