@@ -11,6 +11,24 @@ describe('Expression', () => {
1111 expect ( expression . value ) . toEqual ( { All : [ true ] } )
1212 } )
1313
14+ test ( 'builds an expression from a boolean constant' , ( ) => {
15+ const expression = Expression . build ( true )
16+ expect ( expression ) . toBeInstanceOf ( Constant )
17+ expect ( expression . value ) . toEqual ( true )
18+ } )
19+
20+ test ( 'builds an expression from a string constant' , ( ) => {
21+ const expression = Expression . build ( 'hello' )
22+ expect ( expression ) . toBeInstanceOf ( Constant )
23+ expect ( expression . value ) . toEqual ( 'hello' )
24+ } )
25+
26+ test ( 'builds an expression from a null constant' , ( ) => {
27+ const expression = Expression . build ( null )
28+ expect ( expression ) . toBeInstanceOf ( Constant )
29+ expect ( expression . value ) . toEqual ( null )
30+ } )
31+
1432 test ( 'throws error on invalid expression' , ( ) => {
1533 expect ( ( ) => Expression . build ( [ ] ) ) . toThrowError ( TypeError )
1634 expect ( ( ) => Expression . build ( new Date ( ) ) ) . toThrowError ( TypeError )
@@ -25,8 +43,13 @@ describe('Expression', () => {
2543 expect ( expression . args [ 1 ] . schema ) . toEqual ( schema . items [ 1 ] )
2644 } )
2745
46+ test ( 'sets schema for constant' , ( ) => {
47+ const expression = Expression . build ( false )
48+ expect ( expression . schema . $id ) . toEqual ( Schema . resolve ( '#' ) . $id )
49+ } )
50+
2851 test ( 'each subexpression uses its own schema' , ( ) => {
29- const expression = Expression . build ( { GreaterThan : [ { Now : [ ] } , { Property : [ 'released_at' ] } ] } )
52+ const expression = Expression . build ( { GreaterThan : [ { Now : [ ] } , { Property : [ 'released_at' ] } ] } )
3053 expect ( expression . schema ) . toEqual ( Schema . resolve ( 'GreaterThan.schema.json' ) )
3154 expect ( expression . args [ 0 ] . schema ) . toEqual ( Schema . resolve ( 'Now.schema.json' ) )
3255 expect ( expression . args [ 1 ] . schema ) . toEqual ( Schema . resolve ( 'Property.schema.json' ) )
0 commit comments