stylelint-selector-pattern

A stylelint plugin that allows to check selectors with regular expressions.
git clone https://git.ce9e.org/stylelint-selector-pattern.git

commit
366304d63decc82c4a47193c1429a7a1c1342167
parent
06be400da1dfb9eb9e42494ae0f7c23af6542f42
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2017-02-17 08:27
add tests

Diffstat

M package.json 7 +++++--
A test/index.js 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2 files changed, 132 insertions, 2 deletions


diff --git a/package.json b/package.json

@@ -4,7 +4,8 @@
    4     4   "description": "A stylelint plugin checks selectors with a regular expression",
    5     5   "main": "index.js",
    6     6   "scripts": {
    7    -1     "lint": "jshint --exclude node_modules ."
   -1     7     "lint": "jshint --exclude node_modules .",
   -1     8     "test": "istanbul cover test/index.js"
    8     9   },
    9    10   "repository": {
   10    11     "type": "git",
@@ -29,6 +30,8 @@
   29    30     "stylelint": "^7.8.0"
   30    31   },
   31    32   "devDependencies": {
   32    -1     "jshint": "^2.9.4"
   -1    33     "istanbul": "^0.4.5",
   -1    34     "jshint": "^2.9.4",
   -1    35     "stylelint-test-rule-tape": "^0.2.0"
   33    36   }
   34    37 }

diff --git a/test/index.js b/test/index.js

@@ -0,0 +1,127 @@
   -1     1 var testRule = require('stylelint-test-rule-tape');
   -1     2 var selectorPattern = require('..');
   -1     3 
   -1     4 testRule(selectorPattern.rule, {
   -1     5   ruleName: selectorPattern.ruleName,
   -1     6   config: 'bem',
   -1     7   skipBasicChecks: true,
   -1     8 
   -1     9   accept: [
   -1    10     { code: '.block {}' },
   -1    11     { code: '.block-test {}' },
   -1    12     { code: '.block-test__element-test {}' },
   -1    13     { code: '.block-test--modifier-test {}' },
   -1    14     { code: '.block__element--modifier {}' },
   -1    15     { code: '.u-utility-class {}' },
   -1    16   ],
   -1    17 
   -1    18   reject: [
   -1    19     { code: '.blockTest {}', },
   -1    20     { code: '.block_test {}' },
   -1    21     { code: '.block__element__element {}' },
   -1    22     { code: '.block.has-state {}' },
   -1    23     { code: '.u-utilityClass {}' },
   -1    24     { code: '.block.block {}' },
   -1    25     { code: '.block .block {}' },
   -1    26   ],
   -1    27 });
   -1    28 
   -1    29 testRule(selectorPattern.rule, {
   -1    30   ruleName: selectorPattern.ruleName,
   -1    31   config: 'suit',
   -1    32   skipBasicChecks: true,
   -1    33 
   -1    34   accept: [
   -1    35     { code: '.Component {}' },
   -1    36     { code: '.ComponentTest {}' },
   -1    37     { code: '.ComponentTest-elementTest {}' },
   -1    38     { code: '.ComponentTest--modifierTest {}' },
   -1    39     { code: '.Component.has-state {}' },
   -1    40     { code: '.Component { &.has-state {} }' },
   -1    41     { code: '.Component-element--modifier.has-state {}' },
   -1    42     { code: '.u-utilityClass {}' },
   -1    43   ],
   -1    44 
   -1    45   reject: [
   -1    46     { code: '.component {}' },
   -1    47     { code: '.Component_test {}' },
   -1    48     { code: '.Component-element-element {}' },
   -1    49     { code: '.u-utility-class {}' },
   -1    50     { code: '.Component.Component {}' },
   -1    51     { code: '.Component .Component {}' },
   -1    52   ],
   -1    53 });
   -1    54 
   -1    55 testRule(selectorPattern.rule, {
   -1    56   ruleName: selectorPattern.ruleName,
   -1    57   config: 'itcss',
   -1    58   skipBasicChecks: true,
   -1    59 
   -1    60   accept: [
   -1    61     { code: '.o-object-test {}' },
   -1    62     { code: '.c-component-test {}' },
   -1    63     { code: '.u-utility-test {}' },
   -1    64     { code: '.t-theme-test {}' },
   -1    65     { code: '.s-scope-test {}' },
   -1    66     { code: '.is-state-test {}' },
   -1    67     { code: '.has-state-test {}' },
   -1    68     { code: '._hack-test {}' },
   -1    69     { code: '.js-hook-test {}' },
   -1    70     { code: '.qa-hook-test {}' },
   -1    71   ],
   -1    72 
   -1    73   reject: [
   -1    74     { code: '.o-objectTest {}' },
   -1    75     { code: '.o-object_test {}' },
   -1    76     { code: '.component {}' },
   -1    77     { code: '.o-object.has-state {}' },
   -1    78     { code: '.o-object .o-object {}' },
   -1    79   ],
   -1    80 });
   -1    81 
   -1    82 testRule(selectorPattern.rule, {
   -1    83   ruleName: selectorPattern.ruleName,
   -1    84   config: '^[a-z]+$',
   -1    85   skipBasicChecks: true,
   -1    86 
   -1    87   accept: [
   -1    88     { code: 'foobar {}' },
   -1    89     { code: 'abc {}' },
   -1    90     { code: 'foobar { &nested {} }' },
   -1    91     { code: 'foobar, abs {}' },
   -1    92   ],
   -1    93 
   -1    94   reject: [
   -1    95     { code: '.foobar {}' },
   -1    96     { code: 'fooBar {}' },
   -1    97     { code: 'foo bar {}' },
   -1    98     { code: 'foo_bar {}' },
   -1    99     { code: 'foo-bar {}' },
   -1   100     { code: 'foobar, .abs {}' },
   -1   101   ],
   -1   102 });
   -1   103 
   -1   104 testRule(selectorPattern.rule, {
   -1   105   ruleName: selectorPattern.ruleName,
   -1   106   config: ['^{foo}({bar})?$', {
   -1   107     filter: /^[a-z]/,
   -1   108     subpatterns: {
   -1   109       foo: 'foo-*',
   -1   110       bar: 'bar',
   -1   111     }
   -1   112   }],
   -1   113   skipBasicChecks: true,
   -1   114 
   -1   115   accept: [
   -1   116     { code: 'foobar {}' },
   -1   117     { code: 'foo {}' },
   -1   118     { code: 'foo--- {}' },
   -1   119     { code: 'foo---bar {}' },
   -1   120     { code: '#foo_bar {}' },
   -1   121   ],
   -1   122 
   -1   123   reject: [
   -1   124     { code: 'fooo {}' },
   -1   125     { code: 'bar {}' },
   -1   126   ],
   -1   127 });