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