@@ -53,10 +53,81 @@ test('positive on stub message and opts', async t => {
5353 t . true ( actual . valid ) ;
5454} ) ;
5555
56- test ( 'should throw for invalid rule names' , async t => {
56+ test ( 'throws for invalid rule names' , async t => {
5757 const error = await t . throws (
5858 lint ( 'foo' , { foo : [ 2 , 'always' ] , bar : [ 1 , 'never' ] } )
5959 ) ;
6060
61- t . is ( error . message . indexOf ( 'Found invalid rule names: foo, bar' ) , 0 ) ;
61+ t . is ( error . message . indexOf ( 'Found missing rule names: foo, bar' ) , 0 ) ;
62+ } ) ;
63+
64+ test ( 'throws for invalid rule config' , async t => {
65+ const error = await t . throws (
66+ lint ( 'type(scope): foo' , {
67+ 'type-enum' : 1 ,
68+ 'scope-enum' : { 0 : 2 , 1 : 'never' , 2 : [ 'foo' ] , length : 3 }
69+ } )
70+ ) ;
71+
72+ t . true ( error . message . indexOf ( 'type-enum must be array' ) > - 1 ) ;
73+ t . true ( error . message . indexOf ( 'scope-enum must be array' ) > - 1 ) ;
74+ } ) ;
75+
76+ test ( 'throws for rule with invalid length' , async t => {
77+ const error = await t . throws (
78+ lint ( 'type(scope): foo' , { 'type-enum' : [ ] , 'scope-enum' : [ 1 , 2 , 3 , 4 ] } )
79+ ) ;
80+
81+ t . true ( error . message . indexOf ( 'type-enum must be 2 or 3 items long' ) > - 1 ) ;
82+ t . true ( error . message . indexOf ( 'scope-enum must be 2 or 3 items long' ) > - 1 ) ;
83+ } ) ;
84+
85+ test ( 'throws for rule with invalid level' , async t => {
86+ const error = await t . throws (
87+ lint ( 'type(scope): foo' , {
88+ 'type-enum' : [ '2' , 'always' ] ,
89+ 'header-max-length' : [ { } , 'always' ]
90+ } )
91+ ) ;
92+
93+ t . true ( error . message . indexOf ( 'rule type-enum must be number' ) > - 1 ) ;
94+ t . true ( error . message . indexOf ( 'rule type-enum must be number' ) > - 1 ) ;
95+ } ) ;
96+
97+ test ( 'throws for rule with out of range level' , async t => {
98+ const error = await t . throws (
99+ lint ( 'type(scope): foo' , {
100+ 'type-enum' : [ - 1 , 'always' ] ,
101+ 'header-max-length' : [ 3 , 'always' ]
102+ } )
103+ ) ;
104+
105+ t . true ( error . message . indexOf ( 'rule type-enum must be between 0 and 2' ) > - 1 ) ;
106+ t . true ( error . message . indexOf ( 'rule type-enum must be between 0 and 2' ) > - 1 ) ;
107+ } ) ;
108+
109+ test ( 'throws for rule with invalid condition' , async t => {
110+ const error = await t . throws (
111+ lint ( 'type(scope): foo' , {
112+ 'type-enum' : [ 1 , 2 ] ,
113+ 'header-max-length' : [ 1 , { } ]
114+ } )
115+ ) ;
116+
117+ t . true ( error . message . indexOf ( 'type-enum must be string' ) > - 1 ) ;
118+ t . true ( error . message . indexOf ( 'header-max-length must be string' ) > - 1 ) ;
119+ } ) ;
120+
121+ test ( 'throws for rule with out of range condition' , async t => {
122+ const error = await t . throws (
123+ lint ( 'type(scope): foo' , {
124+ 'type-enum' : [ 1 , 'foo' ] ,
125+ 'header-max-length' : [ 1 , 'bar' ]
126+ } )
127+ ) ;
128+
129+ t . true ( error . message . indexOf ( 'type-enum must be "always" or "never"' ) > - 1 ) ;
130+ t . true (
131+ error . message . indexOf ( 'header-max-length must be "always" or "never"' ) > - 1
132+ ) ;
62133} ) ;
0 commit comments