@@ -884,7 +884,12 @@ describe('IsArray', () => {
884
884
} ) ;
885
885
886
886
describe ( 'IsEnum' , ( ) => {
887
- enum MyEnum {
887
+ enum MyDefaultIndexedEnum {
888
+ First ,
889
+ Second ,
890
+ }
891
+
892
+ enum MyCustomIndexedEnum {
888
893
First = 1 ,
889
894
Second = 999 ,
890
895
}
@@ -894,62 +899,73 @@ describe('IsEnum', () => {
894
899
Second = 'second' ,
895
900
}
896
901
897
- const validValues = [ MyEnum . First , MyEnum . Second ] ;
902
+ const validValues = [ MyCustomIndexedEnum . First , MyCustomIndexedEnum . Second ] ;
898
903
const validStringValues = [ MyStringEnum . First , MyStringEnum . Second ] ;
899
- const invalidValues = [ true , false , 0 , { } , null , undefined , 'F2irst' ] ;
904
+ const invalidValues = [ true , false , 42 , { } , null , undefined , 'F2irst' ] ;
900
905
901
- class MyClass {
902
- @IsEnum ( MyEnum )
903
- someProperty : MyEnum ;
906
+ class MyClassOne {
907
+ @IsEnum ( MyDefaultIndexedEnum )
908
+ someProperty : MyDefaultIndexedEnum ;
904
909
}
905
910
906
- class MyClass2 {
911
+ class MyClassTwo {
912
+ @IsEnum ( MyCustomIndexedEnum )
913
+ someProperty : MyCustomIndexedEnum ;
914
+ }
915
+
916
+ class MyClassThree {
907
917
@IsEnum ( MyStringEnum )
908
918
someProperty : MyStringEnum ;
909
919
}
910
920
911
921
it ( 'should not fail if validator.validate said that its valid' , ( ) => {
912
- return checkValidValues ( new MyClass ( ) , validValues ) ;
922
+ return checkValidValues ( new MyClassTwo ( ) , validValues ) ;
913
923
} ) ;
914
924
915
925
it ( 'should not fail if validator.validate said that its valid (string enum)' , ( ) => {
916
- return checkValidValues ( new MyClass2 ( ) , validStringValues ) ;
926
+ return checkValidValues ( new MyClassThree ( ) , validStringValues ) ;
917
927
} ) ;
918
928
919
929
it ( 'should fail if validator.validate said that its invalid' , ( ) => {
920
- return checkInvalidValues ( new MyClass ( ) , invalidValues ) ;
930
+ return checkInvalidValues ( new MyClassTwo ( ) , invalidValues ) ;
921
931
} ) ;
922
932
923
933
it ( 'should fail if validator.validate said that its invalid (string enum)' , ( ) => {
924
- return checkInvalidValues ( new MyClass2 ( ) , invalidValues ) ;
934
+ return checkInvalidValues ( new MyClassThree ( ) , invalidValues ) ;
925
935
} ) ;
926
936
927
937
it ( 'should not fail if method in validator said that its valid' , ( ) => {
928
- validValues . forEach ( value => expect ( isEnum ( value , MyEnum ) ) . toBeTruthy ( ) ) ;
938
+ validValues . forEach ( value => expect ( isEnum ( value , MyCustomIndexedEnum ) ) . toBeTruthy ( ) ) ;
929
939
} ) ;
930
940
931
941
it ( 'should not fail if method in validator said that its valid (string enum)' , ( ) => {
932
942
validStringValues . forEach ( value => expect ( isEnum ( value , MyStringEnum ) ) . toBeTruthy ( ) ) ;
933
943
} ) ;
934
944
935
945
it ( 'should fail if method in validator said that its invalid' , ( ) => {
936
- invalidValues . forEach ( value => expect ( isEnum ( value , MyEnum ) ) . toBeFalsy ( ) ) ;
946
+ invalidValues . forEach ( value => expect ( isEnum ( value , MyCustomIndexedEnum ) ) . toBeFalsy ( ) ) ;
937
947
} ) ;
938
948
939
949
it ( 'should fail if method in validator said that its invalid (string enum)' , ( ) => {
940
950
invalidValues . forEach ( value => expect ( isEnum ( value , MyStringEnum ) ) . toBeFalsy ( ) ) ;
941
951
} ) ;
942
952
943
- it ( 'should return error object with proper data ' , ( ) => {
953
+ it ( 'should return error with proper message for default indexed enum ' , ( ) => {
944
954
const validationType = 'isEnum' ;
945
- const message = 'someProperty must be a valid enum value' ;
946
- return checkReturnedError ( new MyClass ( ) , invalidValues , validationType , message ) ;
955
+ const message = 'someProperty must be one of the following values: 0, 1' ;
956
+ return checkReturnedError ( new MyClassOne ( ) , invalidValues , validationType , message ) ;
957
+ } ) ;
958
+
959
+ it ( 'should return error with proper message for custom indexed enum' , ( ) => {
960
+ const validationType = 'isEnum' ;
961
+ const message = 'someProperty must be one of the following values: 1, 999' ;
962
+ return checkReturnedError ( new MyClassTwo ( ) , invalidValues , validationType , message ) ;
947
963
} ) ;
948
964
949
- it ( 'should return error object with proper data ( string enum) ' , ( ) => {
965
+ it ( 'should return error with proper message for string enum' , ( ) => {
950
966
const validationType = 'isEnum' ;
951
- const message = 'someProperty must be a valid enum value ' ;
952
- checkReturnedError ( new MyClass2 ( ) , invalidValues , validationType , message ) ;
967
+ const message = 'someProperty must be one of the following values: first, second ' ;
968
+ return checkReturnedError ( new MyClassThree ( ) , invalidValues , validationType , message ) ;
953
969
} ) ;
954
970
} ) ;
955
971
0 commit comments