@@ -11,16 +11,22 @@ import { validateName } from './NameField'
1111
1212describe ( 'validateName' , ( ) => {
1313 const validate = ( name : string ) => validateName ( name , 'Name' , true )
14+
1415 it ( 'returns undefined for valid names' , ( ) => {
1516 expect ( validate ( 'abc' ) ) . toBeUndefined ( )
1617 expect ( validate ( 'abc-def' ) ) . toBeUndefined ( )
1718 expect ( validate ( 'abc9-d0ef-6' ) ) . toBeUndefined ( )
1819 } )
1920
2021 it ( 'detects names starting with something other than lower-case letter' , ( ) => {
21- expect ( validate ( 'Abc' ) ) . toEqual ( 'Must start with a lower-case letter' )
2222 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+ )
2430 } )
2531
2632 it ( 'requires names to end with letter or number' , ( ) => {
@@ -29,13 +35,13 @@ describe('validateName', () => {
2935 } )
3036
3137 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 )
3843 } )
44+
3945 it ( 'rejects names that are too long' , ( ) => {
4046 expect ( validate ( 'a' . repeat ( 64 ) ) ) . toEqual ( 'Must be 63 characters or fewer' )
4147 } )
0 commit comments