@@ -3,6 +3,38 @@ import { FPMLValidationError, resolveTemplate } from './extract';
33describe ( 'Transformation' , ( ) => {
44 const resource = { list : [ { key : 1 } , { key : 2 } , { key : 3 } ] } as any ;
55
6+ test . skip ( 'null values are not removed' , ( ) => {
7+ const resourceWithEmptyArrayNullable = {
8+ root : { resourceType : 'Example' , list : [ null , { nested : null } , null ] } ,
9+ } as any ;
10+ expect (
11+ resolveTemplate (
12+ resourceWithEmptyArrayNullable ,
13+ { root : '{{ %Resource.root }}' } ,
14+ { Resource : resourceWithEmptyArrayNullable } ,
15+ null ,
16+ null ,
17+ true ,
18+ ) ,
19+ ) . toStrictEqual ( { root : { resourceType : 'Example' , list : [ null , { nested : null } ] } } ) ;
20+ } ) ;
21+
22+ test ( 'undefined value are removed' , ( ) => {
23+ const resourceWithEmptyArray = {
24+ root : { resourceType : 'Example' , list : [ undefined , { nested : undefined } ] } ,
25+ } as any ;
26+ expect (
27+ resolveTemplate (
28+ resourceWithEmptyArray ,
29+ { root : '{{ %Resource.root }}' } ,
30+ { Resource : resourceWithEmptyArray } ,
31+ null ,
32+ null ,
33+ true ,
34+ ) ,
35+ ) . toStrictEqual ( { root : { resourceType : 'Example' } } ) ;
36+ } ) ;
37+
638 test ( 'fails on accessing props of resource in strict mode' , ( ) => {
739 expect ( ( ) =>
840 resolveTemplate ( resource , { key : '{{ list.key }}' } , { } , null , null , true ) ,
@@ -61,12 +93,12 @@ describe('Transformation', () => {
6193 ) . toStrictEqual ( { key : 1 } ) ;
6294 } ) ;
6395
64- test ( 'for empty object return empty object ' , ( ) => {
65- expect ( resolveTemplate ( resource , { } ) ) . toStrictEqual ( { } ) ;
96+ test ( 'for empty object return undefined ' , ( ) => {
97+ expect ( resolveTemplate ( resource , { } ) ) . toBeUndefined ( ) ;
6698 } ) ;
6799
68- test ( 'for empty array return empty array ' , ( ) => {
69- expect ( resolveTemplate ( resource , [ ] ) ) . toStrictEqual ( [ ] ) ;
100+ test ( 'for empty array return undefined ' , ( ) => {
101+ expect ( resolveTemplate ( resource , [ ] ) ) . toBeUndefined ( ) ;
70102 } ) ;
71103
72104 test ( 'for array of arrays returns flattened array' , ( ) => {
@@ -92,8 +124,12 @@ describe('Transformation', () => {
92124 expect ( resolveTemplate ( resource , { key : null } ) ) . toStrictEqual ( { key : null } ) ;
93125 } ) ;
94126
95- test ( 'for object with undefined keys returns undefined keys' , ( ) => {
96- expect ( resolveTemplate ( resource , { key : undefined } ) ) . toStrictEqual ( { key : undefined } ) ;
127+ test ( 'for object with undefined keys returns undefined' , ( ) => {
128+ expect ( resolveTemplate ( resource , { key : undefined } ) ) . toBeUndefined ( ) ;
129+ } ) ;
130+
131+ test ( 'for object with undefined keys returns only defined keys' , ( ) => {
132+ expect ( resolveTemplate ( resource , { key : undefined , key2 : 1 } ) ) . toStrictEqual ( { key2 : 1 } ) ;
97133 } ) ;
98134
99135 test ( 'for object with non-null keys returns non-null keys' , ( ) => {
@@ -230,13 +266,18 @@ describe('Assign block', () => {
230266
231267 test ( 'works with undefined intermediate values' , ( ) => {
232268 expect (
233- resolveTemplate ( resource , {
234- '{% assign %}' : [ { varA : '{{ {} }}' } , { varB : '{{ %varA }}' } ] ,
235- valueA : '{{ %varB }}' ,
236- } ) ,
237- ) . toStrictEqual ( {
238- valueA : undefined ,
239- } ) ;
269+ resolveTemplate (
270+ resource ,
271+ {
272+ '{% assign %}' : [ { varA : '{{ {} }}' } , { varB : '{{ %varA }}' } ] ,
273+ valueA : '{{ %varB }}' ,
274+ } ,
275+ null ,
276+ null ,
277+ null ,
278+ true ,
279+ ) ,
280+ ) . toBeUndefined ( ) ;
240281 } ) ;
241282
242283 test ( 'works with multiple vars as array of objects' , ( ) => {
@@ -478,9 +519,7 @@ describe('If block', () => {
478519 "{% if key != 'value' %}" : { nested : "{{ 'true' + key }}" } ,
479520 } ,
480521 } ) ,
481- ) . toStrictEqual ( {
482- result : undefined ,
483- } ) ;
522+ ) . toBeUndefined ( ) ;
484523 } ) ;
485524
486525 test ( 'returns null for falsy condition with nullable else branch' , ( ) => {
@@ -600,7 +639,7 @@ describe('If block', () => {
600639 resolveTemplate ( resource , {
601640 result : {
602641 myKey : 1 ,
603- "{% if key = 'value' %}" : [ ] ,
642+ "{% if key = 'value' %}" : [ { key1 : true } ] ,
604643 } ,
605644 } ) ,
606645 ) . toThrow ( FPMLValidationError ) ;
@@ -612,7 +651,7 @@ describe('If block', () => {
612651 result : {
613652 myKey : 1 ,
614653 "{% if key != 'value' %}" : { } ,
615- '{% else %}' : [ ] ,
654+ '{% else %}' : [ { key1 : true } ] ,
616655 } ,
617656 } ) ,
618657 ) . toThrow ( FPMLValidationError ) ;
0 commit comments