1*1fa4b3daSHector Dearman// Copyright 2016 The Chromium Authors. All rights reserved. 2*1fa4b3daSHector Dearman// Use of this source code is governed by a BSD-style license that can be 3*1fa4b3daSHector Dearman// found in the LICENSE file. 4*1fa4b3daSHector Dearman/* eslint-disable */ 5*1fa4b3daSHector Dearman 6*1fa4b3daSHector Dearman/** 7*1fa4b3daSHector Dearman * @fileoverview Tests for camelcase rule. 8*1fa4b3daSHector Dearman * @author Nicholas C. Zakas 9*1fa4b3daSHector Dearman */ 10*1fa4b3daSHector Dearman 11*1fa4b3daSHector Dearman'use strict'; 12*1fa4b3daSHector Dearman 13*1fa4b3daSHector Dearman//------------------------------------------------------------------------------ 14*1fa4b3daSHector Dearman// Requirements 15*1fa4b3daSHector Dearman//------------------------------------------------------------------------------ 16*1fa4b3daSHector Dearman 17*1fa4b3daSHector Dearmanvar rule = require("../rules/catapult-camelcase"), 18*1fa4b3daSHector Dearman RuleTester = require("../../node_runner/node_runner/node_modules/eslint/lib/testers/rule-tester"); 19*1fa4b3daSHector Dearman 20*1fa4b3daSHector Dearman//------------------------------------------------------------------------------ 21*1fa4b3daSHector Dearman// Tests 22*1fa4b3daSHector Dearman//------------------------------------------------------------------------------ 23*1fa4b3daSHector Dearman 24*1fa4b3daSHector Dearmanvar ruleTester = new RuleTester(); 25*1fa4b3daSHector Dearman 26*1fa4b3daSHector DearmanruleTester.run("camelcase", rule, { 27*1fa4b3daSHector Dearman valid: [ 28*1fa4b3daSHector Dearman "firstName = \"Nicholas\"", 29*1fa4b3daSHector Dearman "FIRST_NAME = \"Nicholas\"", 30*1fa4b3daSHector Dearman "__myPrivateVariable = \"Patrick\"", 31*1fa4b3daSHector Dearman "myPrivateVariable_ = \"Patrick\"", 32*1fa4b3daSHector Dearman "function doSomething(){}", 33*1fa4b3daSHector Dearman "do_something()", 34*1fa4b3daSHector Dearman "foo.do_something()", 35*1fa4b3daSHector Dearman "var foo = bar.baz_boom;", 36*1fa4b3daSHector Dearman "var foo = bar.baz_boom.something;", 37*1fa4b3daSHector Dearman "foo.boom_pow.qux = bar.baz_boom.something;", 38*1fa4b3daSHector Dearman "if (bar.baz_boom) {}", 39*1fa4b3daSHector Dearman "var obj = { key: foo.bar_baz };", 40*1fa4b3daSHector Dearman "var arr = [foo.bar_baz];", 41*1fa4b3daSHector Dearman "[foo.bar_baz]", 42*1fa4b3daSHector Dearman "var arr = [foo.bar_baz.qux];", 43*1fa4b3daSHector Dearman "[foo.bar_baz.nesting]", 44*1fa4b3daSHector Dearman "if (foo.bar_baz === boom.bam_pow) { [foo.baz_boom] }", 45*1fa4b3daSHector Dearman // These tests are for Catapult-specific exceptions. 46*1fa4b3daSHector Dearman "opt_firstName = \"Nicholas\"", 47*1fa4b3daSHector Dearman "g_firstName = \"Nicholas\"", 48*1fa4b3daSHector Dearman "sizeInBytes_smallerIsBetter = \"Nicholas\"", 49*1fa4b3daSHector Dearman "sizeInBytes_biggerIsBetter = \"Nicholas\"", 50*1fa4b3daSHector Dearman { 51*1fa4b3daSHector Dearman code: "var o = {key: 1}", 52*1fa4b3daSHector Dearman options: [{properties: "always"}] 53*1fa4b3daSHector Dearman }, 54*1fa4b3daSHector Dearman { 55*1fa4b3daSHector Dearman code: "var o = {bar_baz: 1}", 56*1fa4b3daSHector Dearman options: [{properties: "never"}] 57*1fa4b3daSHector Dearman }, 58*1fa4b3daSHector Dearman { 59*1fa4b3daSHector Dearman code: "obj.a_b = 2;", 60*1fa4b3daSHector Dearman options: [{properties: "never"}] 61*1fa4b3daSHector Dearman }, 62*1fa4b3daSHector Dearman { 63*1fa4b3daSHector Dearman code: "var obj = {\n a_a: 1 \n};\n obj.a_b = 2;", 64*1fa4b3daSHector Dearman options: [{properties: "never"}] 65*1fa4b3daSHector Dearman }, 66*1fa4b3daSHector Dearman { 67*1fa4b3daSHector Dearman code: "obj.foo_bar = function(){};", 68*1fa4b3daSHector Dearman options: [{properties: "never"}] 69*1fa4b3daSHector Dearman }, 70*1fa4b3daSHector Dearman { 71*1fa4b3daSHector Dearman code: "var { category_id: category } = query;", 72*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6 } 73*1fa4b3daSHector Dearman }, 74*1fa4b3daSHector Dearman { 75*1fa4b3daSHector Dearman code: "var { category_id: category } = query;", 76*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6 }, 77*1fa4b3daSHector Dearman options: [{properties: "never"}] 78*1fa4b3daSHector Dearman }, 79*1fa4b3daSHector Dearman { 80*1fa4b3daSHector Dearman code: "import { camelCased } from \"external module\";", 81*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" } 82*1fa4b3daSHector Dearman }, 83*1fa4b3daSHector Dearman { 84*1fa4b3daSHector Dearman code: "import { no_camelcased as camelCased } from \"external-module\";", 85*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" } 86*1fa4b3daSHector Dearman }, 87*1fa4b3daSHector Dearman { 88*1fa4b3daSHector Dearman code: "import { no_camelcased as camelCased, anoterCamelCased } from \"external-module\";", 89*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" } 90*1fa4b3daSHector Dearman } 91*1fa4b3daSHector Dearman ], 92*1fa4b3daSHector Dearman invalid: [ 93*1fa4b3daSHector Dearman { 94*1fa4b3daSHector Dearman code: "first_name = \"Nicholas\"", 95*1fa4b3daSHector Dearman errors: [ 96*1fa4b3daSHector Dearman { 97*1fa4b3daSHector Dearman message: "Identifier 'first_name' is not in camel case.", 98*1fa4b3daSHector Dearman type: "Identifier" 99*1fa4b3daSHector Dearman } 100*1fa4b3daSHector Dearman ] 101*1fa4b3daSHector Dearman }, 102*1fa4b3daSHector Dearman { 103*1fa4b3daSHector Dearman code: "__private_first_name = \"Patrick\"", 104*1fa4b3daSHector Dearman errors: [ 105*1fa4b3daSHector Dearman { 106*1fa4b3daSHector Dearman message: "Identifier '__private_first_name' is not in camel case.", 107*1fa4b3daSHector Dearman type: "Identifier" 108*1fa4b3daSHector Dearman } 109*1fa4b3daSHector Dearman ] 110*1fa4b3daSHector Dearman }, 111*1fa4b3daSHector Dearman { 112*1fa4b3daSHector Dearman code: "function foo_bar(){}", 113*1fa4b3daSHector Dearman errors: [ 114*1fa4b3daSHector Dearman { 115*1fa4b3daSHector Dearman message: "Identifier 'foo_bar' is not in camel case.", 116*1fa4b3daSHector Dearman type: "Identifier" 117*1fa4b3daSHector Dearman } 118*1fa4b3daSHector Dearman ] 119*1fa4b3daSHector Dearman }, 120*1fa4b3daSHector Dearman { 121*1fa4b3daSHector Dearman code: "obj.foo_bar = function(){};", 122*1fa4b3daSHector Dearman errors: [ 123*1fa4b3daSHector Dearman { 124*1fa4b3daSHector Dearman message: "Identifier 'foo_bar' is not in camel case.", 125*1fa4b3daSHector Dearman type: "Identifier" 126*1fa4b3daSHector Dearman } 127*1fa4b3daSHector Dearman ] 128*1fa4b3daSHector Dearman }, 129*1fa4b3daSHector Dearman { 130*1fa4b3daSHector Dearman code: "bar_baz.foo = function(){};", 131*1fa4b3daSHector Dearman errors: [ 132*1fa4b3daSHector Dearman { 133*1fa4b3daSHector Dearman message: "Identifier 'bar_baz' is not in camel case.", 134*1fa4b3daSHector Dearman type: "Identifier" 135*1fa4b3daSHector Dearman } 136*1fa4b3daSHector Dearman ] 137*1fa4b3daSHector Dearman }, 138*1fa4b3daSHector Dearman { 139*1fa4b3daSHector Dearman code: "[foo_bar.baz]", 140*1fa4b3daSHector Dearman errors: [ 141*1fa4b3daSHector Dearman { 142*1fa4b3daSHector Dearman message: "Identifier 'foo_bar' is not in camel case.", 143*1fa4b3daSHector Dearman type: "Identifier" 144*1fa4b3daSHector Dearman } 145*1fa4b3daSHector Dearman ] 146*1fa4b3daSHector Dearman }, 147*1fa4b3daSHector Dearman { 148*1fa4b3daSHector Dearman code: "if (foo.bar_baz === boom.bam_pow) { [foo_bar.baz] }", 149*1fa4b3daSHector Dearman errors: [ 150*1fa4b3daSHector Dearman { 151*1fa4b3daSHector Dearman message: "Identifier 'foo_bar' is not in camel case.", 152*1fa4b3daSHector Dearman type: "Identifier" 153*1fa4b3daSHector Dearman } 154*1fa4b3daSHector Dearman ] 155*1fa4b3daSHector Dearman }, 156*1fa4b3daSHector Dearman { 157*1fa4b3daSHector Dearman code: "foo.bar_baz = boom.bam_pow", 158*1fa4b3daSHector Dearman errors: [ 159*1fa4b3daSHector Dearman { 160*1fa4b3daSHector Dearman message: "Identifier 'bar_baz' is not in camel case.", 161*1fa4b3daSHector Dearman type: "Identifier" 162*1fa4b3daSHector Dearman } 163*1fa4b3daSHector Dearman ] 164*1fa4b3daSHector Dearman }, 165*1fa4b3daSHector Dearman { 166*1fa4b3daSHector Dearman code: "var foo = { bar_baz: boom.bam_pow }", 167*1fa4b3daSHector Dearman errors: [ 168*1fa4b3daSHector Dearman { 169*1fa4b3daSHector Dearman message: "Identifier 'bar_baz' is not in camel case.", 170*1fa4b3daSHector Dearman type: "Identifier" 171*1fa4b3daSHector Dearman } 172*1fa4b3daSHector Dearman ] 173*1fa4b3daSHector Dearman }, 174*1fa4b3daSHector Dearman { 175*1fa4b3daSHector Dearman code: "foo.qux.boom_pow = { bar: boom.bam_pow }", 176*1fa4b3daSHector Dearman errors: [ 177*1fa4b3daSHector Dearman { 178*1fa4b3daSHector Dearman message: "Identifier 'boom_pow' is not in camel case.", 179*1fa4b3daSHector Dearman type: "Identifier" 180*1fa4b3daSHector Dearman } 181*1fa4b3daSHector Dearman ] 182*1fa4b3daSHector Dearman }, 183*1fa4b3daSHector Dearman { 184*1fa4b3daSHector Dearman code: "var o = {bar_baz: 1}", 185*1fa4b3daSHector Dearman options: [{properties: "always"}], 186*1fa4b3daSHector Dearman errors: [ 187*1fa4b3daSHector Dearman { 188*1fa4b3daSHector Dearman message: "Identifier 'bar_baz' is not in camel case.", 189*1fa4b3daSHector Dearman type: "Identifier" 190*1fa4b3daSHector Dearman } 191*1fa4b3daSHector Dearman ] 192*1fa4b3daSHector Dearman }, 193*1fa4b3daSHector Dearman { 194*1fa4b3daSHector Dearman code: "obj.a_b = 2;", 195*1fa4b3daSHector Dearman options: [{properties: "always"}], 196*1fa4b3daSHector Dearman errors: [ 197*1fa4b3daSHector Dearman { 198*1fa4b3daSHector Dearman message: "Identifier 'a_b' is not in camel case.", 199*1fa4b3daSHector Dearman type: "Identifier" 200*1fa4b3daSHector Dearman } 201*1fa4b3daSHector Dearman ] 202*1fa4b3daSHector Dearman }, 203*1fa4b3daSHector Dearman { 204*1fa4b3daSHector Dearman code: "obj.a_b = 2;", 205*1fa4b3daSHector Dearman options: [{properties: "always"}], 206*1fa4b3daSHector Dearman errors: [ 207*1fa4b3daSHector Dearman { 208*1fa4b3daSHector Dearman message: "Identifier 'a_b' is not in camel case.", 209*1fa4b3daSHector Dearman type: "Identifier" 210*1fa4b3daSHector Dearman } 211*1fa4b3daSHector Dearman ] 212*1fa4b3daSHector Dearman }, 213*1fa4b3daSHector Dearman { 214*1fa4b3daSHector Dearman code: "var { category_id: category_id } = query;", 215*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6 }, 216*1fa4b3daSHector Dearman errors: [ 217*1fa4b3daSHector Dearman { 218*1fa4b3daSHector Dearman message: "Identifier 'category_id' is not in camel case.", 219*1fa4b3daSHector Dearman type: "Identifier" 220*1fa4b3daSHector Dearman } 221*1fa4b3daSHector Dearman ] 222*1fa4b3daSHector Dearman }, 223*1fa4b3daSHector Dearman { 224*1fa4b3daSHector Dearman code: "var { category_id } = query;", 225*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6 }, 226*1fa4b3daSHector Dearman errors: [ 227*1fa4b3daSHector Dearman { 228*1fa4b3daSHector Dearman message: "Identifier 'category_id' is not in camel case.", 229*1fa4b3daSHector Dearman type: "Identifier" 230*1fa4b3daSHector Dearman } 231*1fa4b3daSHector Dearman ] 232*1fa4b3daSHector Dearman }, 233*1fa4b3daSHector Dearman { 234*1fa4b3daSHector Dearman code: "import no_camelcased from \"external-module\";", 235*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 236*1fa4b3daSHector Dearman errors: [ 237*1fa4b3daSHector Dearman { 238*1fa4b3daSHector Dearman message: "Identifier 'no_camelcased' is not in camel case.", 239*1fa4b3daSHector Dearman type: "Identifier" 240*1fa4b3daSHector Dearman } 241*1fa4b3daSHector Dearman ] 242*1fa4b3daSHector Dearman }, 243*1fa4b3daSHector Dearman { 244*1fa4b3daSHector Dearman code: "import * as no_camelcased from \"external-module\";", 245*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 246*1fa4b3daSHector Dearman errors: [ 247*1fa4b3daSHector Dearman { 248*1fa4b3daSHector Dearman message: "Identifier 'no_camelcased' is not in camel case.", 249*1fa4b3daSHector Dearman type: "Identifier" 250*1fa4b3daSHector Dearman } 251*1fa4b3daSHector Dearman ] 252*1fa4b3daSHector Dearman }, 253*1fa4b3daSHector Dearman { 254*1fa4b3daSHector Dearman code: "import { no_camelcased } from \"external-module\";", 255*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 256*1fa4b3daSHector Dearman errors: [ 257*1fa4b3daSHector Dearman { 258*1fa4b3daSHector Dearman message: "Identifier 'no_camelcased' is not in camel case.", 259*1fa4b3daSHector Dearman type: "Identifier" 260*1fa4b3daSHector Dearman } 261*1fa4b3daSHector Dearman ] 262*1fa4b3daSHector Dearman }, 263*1fa4b3daSHector Dearman { 264*1fa4b3daSHector Dearman code: "import { no_camelcased as no_camel_cased } from \"external module\";", 265*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 266*1fa4b3daSHector Dearman errors: [ 267*1fa4b3daSHector Dearman { 268*1fa4b3daSHector Dearman message: "Identifier 'no_camel_cased' is not in camel case.", 269*1fa4b3daSHector Dearman type: "Identifier" 270*1fa4b3daSHector Dearman } 271*1fa4b3daSHector Dearman ] 272*1fa4b3daSHector Dearman }, 273*1fa4b3daSHector Dearman { 274*1fa4b3daSHector Dearman code: "import { camelCased as no_camel_cased } from \"external module\";", 275*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 276*1fa4b3daSHector Dearman errors: [ 277*1fa4b3daSHector Dearman { 278*1fa4b3daSHector Dearman message: "Identifier 'no_camel_cased' is not in camel case.", 279*1fa4b3daSHector Dearman type: "Identifier" 280*1fa4b3daSHector Dearman } 281*1fa4b3daSHector Dearman ] 282*1fa4b3daSHector Dearman }, 283*1fa4b3daSHector Dearman { 284*1fa4b3daSHector Dearman code: "import { camelCased, no_camelcased } from \"external-module\";", 285*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 286*1fa4b3daSHector Dearman errors: [ 287*1fa4b3daSHector Dearman { 288*1fa4b3daSHector Dearman message: "Identifier 'no_camelcased' is not in camel case.", 289*1fa4b3daSHector Dearman type: "Identifier" 290*1fa4b3daSHector Dearman } 291*1fa4b3daSHector Dearman ] 292*1fa4b3daSHector Dearman }, 293*1fa4b3daSHector Dearman { 294*1fa4b3daSHector Dearman code: "import { no_camelcased as camelCased, another_no_camelcased } from \"external-module\";", 295*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 296*1fa4b3daSHector Dearman errors: [ 297*1fa4b3daSHector Dearman { 298*1fa4b3daSHector Dearman message: "Identifier 'another_no_camelcased' is not in camel case.", 299*1fa4b3daSHector Dearman type: "Identifier" 300*1fa4b3daSHector Dearman } 301*1fa4b3daSHector Dearman ] 302*1fa4b3daSHector Dearman }, 303*1fa4b3daSHector Dearman { 304*1fa4b3daSHector Dearman code: "import camelCased, { no_camelcased } from \"external-module\";", 305*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 306*1fa4b3daSHector Dearman errors: [ 307*1fa4b3daSHector Dearman { 308*1fa4b3daSHector Dearman message: "Identifier 'no_camelcased' is not in camel case.", 309*1fa4b3daSHector Dearman type: "Identifier" 310*1fa4b3daSHector Dearman } 311*1fa4b3daSHector Dearman ] 312*1fa4b3daSHector Dearman }, 313*1fa4b3daSHector Dearman { 314*1fa4b3daSHector Dearman code: "import no_camelcased, { another_no_camelcased as camelCased } from \"external-module\";", 315*1fa4b3daSHector Dearman parserOptions: { ecmaVersion: 6, sourceType: "module" }, 316*1fa4b3daSHector Dearman errors: [ 317*1fa4b3daSHector Dearman { 318*1fa4b3daSHector Dearman message: "Identifier 'no_camelcased' is not in camel case.", 319*1fa4b3daSHector Dearman type: "Identifier" 320*1fa4b3daSHector Dearman } 321*1fa4b3daSHector Dearman ] 322*1fa4b3daSHector Dearman } 323*1fa4b3daSHector Dearman ] 324*1fa4b3daSHector Dearman}); 325