eslint-plugin-extjs
Version:
ESLint rules for projects using the ExtJS framework.
223 lines (219 loc) • 5.66 kB
JavaScript
/**
* @fileoverview Tests for ext-deps rule.
* @author Nat Burns
*/
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
var linter = require("eslint").linter;
var ESLintTester = require("eslint-tester");
var eslintTester = new ESLintTester(linter);
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
eslintTester.addRuleTest("lib/rules/ext-deps", {
valid: [
{
code: "Ext.require('App.Class');",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.util.History.back();",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { requires: ['Ext.panel.Panel'], constructor: function() { this.panel = new Ext.panel.Panel(); } });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { requires: ['Ext.Ajax'], constructor: function() { this.timeout = Ext.Ajax.defaultTimeout; } });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { requires: ['Ext.container.Viewport'], constructor: function() { this.viewport = new Ext.Viewport(); } });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { requires: ['Ext.Viewport'], constructor: function() { this.viewport = new Ext.container.Viewport(); } });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { uses: ['App.Panel'], constructor: function() { this.panel = Ext.create('App.Panel'); } });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { uses: ['Ext.state.Manager', 'Ext.state.CookieProvider'], init: function() { Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); } });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { extend: 'App.Parent' });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { extend: 'Ext.data.proxy.Ajax', requires: ['Ext.data.reader.Array', 'Ext.data.writer.Xml'], defaultReaderType: 'array', defaultWriterType: 'xml' });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { extend: 'App.Parent', constructor: function() { App.Parent.register(this); } });",
global: {
Ext: true,
App: true
}
},
{
code: "Ext.define('App.Class', { constructor: function() { this.names = Ext.Array.from(Ext.ClassManager.getName(this.self)); } });",
global: {
Ext: true,
App: true
}
}
],
invalid: [
{
code: "Ext.define('App.Class', { requires: ['Ext.panel.Panel'] });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "The dependency Ext.panel.Panel is never used by the parent class App.Class.",
type: "CallExpression"
}
]
},
{
code: "Ext.define('App.Class', { uses: ['Ext.panel.Panel'] });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "The dependency Ext.panel.Panel is never used by the parent class App.Class.",
type: "CallExpression"
}
]
},
{
code: "Ext.define('App.Class', { constructor: function() { this.panel = new Ext.panel.Panel(); } });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "Class Ext.panel.Panel is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
}
]
},
{
code: "Ext.define('App.Class', { constructor: function() { this.panel = Ext.create('Ext.panel.Panel'); } });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "Class Ext.panel.Panel is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
}
]
},
{
code: "Ext.define('App.Class', { constructor: function() { Ext.tip.QuickTipManager.init(); } });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "Class Ext.tip.QuickTipManager is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
}
]
},
{
code: "Ext.define('App.Class', { layout: 'fit' });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "Class Ext.layout.container.Fit is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
}
]
},
{
code: "Ext.define('App.Class', { proxy: { type: 'ajax', reader: 'json', writer: 'xml' } });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "Class Ext.data.proxy.Ajax is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
},
{
message: "Class Ext.data.reader.Json is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
},
{
message: "Class Ext.data.writer.Xml is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
}
]
},
{
code: "Ext.define('App.Class', { constructor: function() { Ext.apply(this, { items: [{ xtype: 'button', text: 'Label' }, 'grid'] }); } });",
global: {
Ext: true,
App: true
},
errors: [
{
message: "Class Ext.button.Button is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
},
{
message: "Class Ext.grid.Panel is referenced by App.Class but not listed as a dependency.",
type: "CallExpression"
}
]
}
]
});