@@ -11,16 +11,22 @@ import { validateName } from './NameField'
11
11
12
12
describe ( 'validateName' , ( ) => {
13
13
const validate = ( name : string ) => validateName ( name , 'Name' , true )
14
+
14
15
it ( 'returns undefined for valid names' , ( ) => {
15
16
expect ( validate ( 'abc' ) ) . toBeUndefined ( )
16
17
expect ( validate ( 'abc-def' ) ) . toBeUndefined ( )
17
18
expect ( validate ( 'abc9-d0ef-6' ) ) . toBeUndefined ( )
18
19
} )
19
20
20
21
it ( 'detects names starting with something other than lower-case letter' , ( ) => {
21
- expect ( validate ( 'Abc' ) ) . toEqual ( 'Must start with a lower-case letter' )
22
22
expect ( validate ( '9bc' ) ) . toEqual ( 'Must start with a lower-case letter' )
23
- expect ( validate ( 'Abc-' ) ) . toEqual ( 'Must start with a lower-case letter' )
23
+ } )
24
+
25
+ // this fails if we check last letter before we check all chars
26
+ it ( 'gives correct error on ending with capital letter' , ( ) => {
27
+ expect ( validate ( 'freeBSD' ) ) . toEqual (
28
+ 'Can only contain lower-case letters, numbers, and dashes'
29
+ )
24
30
} )
25
31
26
32
it ( 'requires names to end with letter or number' , ( ) => {
@@ -29,13 +35,13 @@ describe('validateName', () => {
29
35
} )
30
36
31
37
it ( 'rejects invalid characters' , ( ) => {
32
- expect ( validate ( 'aBc' ) ) . toEqual (
33
- 'Can only contain lower-case letters, numbers, and dashes'
34
- )
35
- expect ( validate ( 'asldk:c' ) ) . toEqual (
36
- 'Can only contain lower-case letters, numbers, and dashes'
37
- )
38
+ const err = 'Can only contain lower-case letters, numbers, and dashes'
39
+ expect ( validate ( 'aBc' ) ) . toEqual ( err )
40
+ expect ( validate ( 'asldk:c' ) ) . toEqual ( err )
41
+ expect ( validate ( 'Abc-' ) ) . toEqual ( err )
42
+ expect ( validate ( 'Abc' ) ) . toEqual ( err )
38
43
} )
44
+
39
45
it ( 'rejects names that are too long' , ( ) => {
40
46
expect ( validate ( 'a' . repeat ( 64 ) ) ) . toEqual ( 'Must be 63 characters or fewer' )
41
47
} )
0 commit comments