@@ -719,6 +719,216 @@ public void shouldRenderMethodRefereneType() {
719
719
assertThat (transform ("type(a)" ), is (Document .parse ("{ \" $type\" : \" $a\" }" )));
720
720
}
721
721
722
+ @ Test // DATAMONGO-2077
723
+ public void shouldRenderArrayToObjectWithFieldReference () {
724
+ assertThat (transform ("arrayToObject(field)" ), is (Document .parse ("{ \" $arrayToObject\" : \" $field\" }" )));
725
+ }
726
+
727
+ @ Test // DATAMONGO-2077
728
+ public void shouldRenderArrayToObjectWithArray () {
729
+
730
+ assertThat (transform ("arrayToObject(new String[]{'key', 'value'})" ),
731
+ is (Document .parse ("{ \" $arrayToObject\" : [\" key\" , \" value\" ]}" )));
732
+ }
733
+
734
+ @ Test // DATAMONGO-2077
735
+ public void shouldRenderObjectToArrayWithFieldReference () {
736
+ assertThat (transform ("objectToArray(field)" ), is (Document .parse ("{ \" $objectToArray\" : \" $field\" }" )));
737
+ }
738
+
739
+ @ Test // DATAMONGO-2077
740
+ public void shouldRenderMergeObjects () {
741
+
742
+ assertThat (transform ("mergeObjects(field1, $$ROOT)" ),
743
+ is (Document .parse ("{ \" $mergeObjects\" : [\" $field1\" , \" $$ROOT\" ]}" )));
744
+ }
745
+
746
+ @ Test // DATAMONGO-2077
747
+ public void shouldRenderTrimWithoutChars () {
748
+ assertThat (transform ("trim(field)" ), is (Document .parse ("{ \" $trim\" : {\" input\" : \" $field\" }}" )));
749
+ }
750
+
751
+ @ Test // DATAMONGO-2077
752
+ public void shouldRenderTrimWithChars () {
753
+
754
+ assertThat (transform ("trim(field, 'ie')" ),
755
+ is (Document .parse ("{ \" $trim\" : {\" input\" : \" $field\" , \" chars\" : \" ie\" }}" )));
756
+ }
757
+
758
+ @ Test // DATAMONGO-2077
759
+ public void shouldRenderTrimWithCharsFromFieldReference () {
760
+
761
+ assertThat (transform ("trim(field1, field2)" ),
762
+ is (Document .parse ("{ \" $trim\" : {\" input\" : \" $field1\" , \" chars\" : \" $field2\" }}" )));
763
+ }
764
+
765
+ @ Test // DATAMONGO-2077
766
+ public void shouldRenderLtrimWithoutChars () {
767
+ assertThat (transform ("ltrim(field)" ), is (Document .parse ("{ \" $ltrim\" : {\" input\" : \" $field\" }}" )));
768
+ }
769
+
770
+ @ Test // DATAMONGO-2077
771
+ public void shouldRenderLtrimWithChars () {
772
+
773
+ assertThat (transform ("ltrim(field, 'ie')" ),
774
+ is (Document .parse ("{ \" $ltrim\" : {\" input\" : \" $field\" , \" chars\" : \" ie\" }}" )));
775
+ }
776
+
777
+ @ Test // DATAMONGO-2077
778
+ public void shouldRenderLtrimWithCharsFromFieldReference () {
779
+
780
+ assertThat (transform ("ltrim(field1, field2)" ),
781
+ is (Document .parse ("{ \" $ltrim\" : {\" input\" : \" $field1\" , \" chars\" : \" $field2\" }}" )));
782
+ }
783
+
784
+ @ Test // DATAMONGO-2077
785
+ public void shouldRenderRtrimWithoutChars () {
786
+ assertThat (transform ("rtrim(field)" ), is (Document .parse ("{ \" $rtrim\" : {\" input\" : \" $field\" }}" )));
787
+ }
788
+
789
+ @ Test // DATAMONGO-2077
790
+ public void shouldRenderRtrimWithChars () {
791
+
792
+ assertThat (transform ("rtrim(field, 'ie')" ),
793
+ is (Document .parse ("{ \" $rtrim\" : {\" input\" : \" $field\" , \" chars\" : \" ie\" }}" )));
794
+ }
795
+
796
+ @ Test // DATAMONGO-2077
797
+ public void shouldRenderRtrimWithCharsFromFieldReference () {
798
+
799
+ assertThat (transform ("rtrim(field1, field2)" ),
800
+ is (Document .parse ("{ \" $rtrim\" : {\" input\" : \" $field1\" , \" chars\" : \" $field2\" }}" )));
801
+ }
802
+
803
+ @ Test // DATAMONGO-2077
804
+ public void shouldRenderConvertWithoutOptionalParameters () {
805
+
806
+ assertThat (transform ("convert(field, 'string')" ),
807
+ is (Document .parse ("{ \" $convert\" : {\" input\" : \" $field\" , \" to\" : \" string\" }}" )));
808
+ }
809
+
810
+ @ Test // DATAMONGO-2077
811
+ public void shouldRenderConvertWithOnError () {
812
+
813
+ assertThat (transform ("convert(field, 'int', 'Not an integer.')" ), is (Document
814
+ .parse ("{ \" $convert\" : {\" input\" : \" $field\" , \" to\" : \" int\" , \" onError\" : \" Not an integer.\" }}" )));
815
+ }
816
+
817
+ @ Test // DATAMONGO-2077
818
+ public void shouldRenderConvertWithOnErrorOnNull () {
819
+
820
+ assertThat (transform ("convert(field, 'int', 'Not an integer.', -1)" ), is (Document .parse (
821
+ "{ \" $convert\" : {\" input\" : \" $field\" , \" to\" : \" int\" , \" onError\" : \" Not an integer.\" , \" onNull\" : -1 }}" )));
822
+ }
823
+
824
+ @ Test // DATAMONGO-2077
825
+ public void shouldRenderToBool () {
826
+ assertThat (transform ("toBool(field)" ), is (Document .parse ("{ \" $toBool\" : \" $field\" }" )));
827
+ }
828
+
829
+ @ Test // DATAMONGO-2077
830
+ public void shouldRenderToDate () {
831
+ assertThat (transform ("toDate(field)" ), is (Document .parse ("{ \" $toDate\" : \" $field\" }" )));
832
+ }
833
+
834
+ @ Test // DATAMONGO-2077
835
+ public void shouldRenderToDecimal () {
836
+ assertThat (transform ("toDecimal(field)" ), is (Document .parse ("{ \" $toDecimal\" : \" $field\" }" )));
837
+ }
838
+
839
+ @ Test // DATAMONGO-2077
840
+ public void shouldRenderToDouble () {
841
+ assertThat (transform ("toDouble(field)" ), is (Document .parse ("{ \" $toDouble\" : \" $field\" }" )));
842
+ }
843
+
844
+ @ Test // DATAMONGO-2077
845
+ public void shouldRenderToInt () {
846
+ assertThat (transform ("toInt(field)" ), is (Document .parse ("{ \" $toInt\" : \" $field\" }" )));
847
+ }
848
+
849
+ @ Test // DATAMONGO-2077
850
+ public void shouldRenderToLong () {
851
+ assertThat (transform ("toLong(field)" ), is (Document .parse ("{ \" $toLong\" : \" $field\" }" )));
852
+ }
853
+
854
+ @ Test // DATAMONGO-2077
855
+ public void shouldRenderToObjectId () {
856
+ assertThat (transform ("toObjectId(field)" ), is (Document .parse ("{ \" $toObjectId\" : \" $field\" }" )));
857
+ }
858
+
859
+ @ Test // DATAMONGO-2077
860
+ public void shouldRenderToString () {
861
+ assertThat (transform ("toString(field)" ), is (Document .parse ("{ \" $toString\" : \" $field\" }" )));
862
+ }
863
+
864
+ @ Test // DATAMONGO-2077
865
+ public void shouldRenderDateFromStringWithoutOptionalParameters () {
866
+
867
+ assertThat (transform ("dateFromString(field)" ),
868
+ is (Document .parse ("{ \" $dateFromString\" : {\" dateString\" : \" $field\" }}" )));
869
+ }
870
+
871
+ @ Test // DATAMONGO-2077
872
+ public void shouldRenderDateFromStringWithFormat () {
873
+
874
+ assertThat (transform ("dateFromString(field, 'DD-MM-YYYY')" ),
875
+ is (Document .parse ("{ \" $dateFromString\" : {\" dateString\" : \" $field\" , \" format\" : \" DD-MM-YYYY\" }}" )));
876
+ }
877
+
878
+ @ Test // DATAMONGO-2077
879
+ public void shouldRenderDateFromStringWithFormatAndTimezone () {
880
+
881
+ assertThat (transform ("dateFromString(field, 'DD-MM-YYYY', 'UTC')" ), is (Document .parse (
882
+ "{ \" $dateFromString\" : {\" dateString\" : \" $field\" , \" format\" : \" DD-MM-YYYY\" , \" timezone\" : \" UTC\" }}" )));
883
+ }
884
+
885
+ @ Test // DATAMONGO-2077
886
+ public void shouldRenderDateFromStringWithFormatTimezoneAndOnError () {
887
+
888
+ assertThat (transform ("dateFromString(field, 'DD-MM-YYYY', 'UTC', -1)" ), is (Document .parse (
889
+ "{ \" $dateFromString\" : {\" dateString\" : \" $field\" , \" format\" : \" DD-MM-YYYY\" , \" timezone\" : \" UTC\" , \" onError\" : -1 }}" )));
890
+ }
891
+
892
+ @ Test // DATAMONGO-2077
893
+ public void shouldRenderDateFromStringWithFormatTimezoneOnErrorAndOnNull () {
894
+
895
+ assertThat (transform ("dateFromString(field, 'DD-MM-YYYY', 'UTC', -1, -2)" ), is (Document .parse (
896
+ "{ \" $dateFromString\" : {\" dateString\" : \" $field\" , \" format\" : \" DD-MM-YYYY\" , \" timezone\" : \" UTC\" , \" onError\" : -1, \" onNull\" : -2}}" )));
897
+ }
898
+
899
+ @ Test // DATAMONGO-2077
900
+ public void shouldRenderDateFromParts () {
901
+
902
+ assertThat (transform ("dateFromParts(y, m, d, h, mm, s, ms, 'UTC')" ), is (Document .parse (
903
+ "{ \" $dateFromParts\" : {\" year\" : \" $y\" , \" month\" : \" $m\" , \" day\" : \" $d\" , \" hour\" : \" $h\" , \" minute\" : \" $mm\" , \" second\" : \" $s\" , \" milliseconds\" : \" $ms\" , \" timezone\" : \" UTC\" }}" )));
904
+ }
905
+
906
+ @ Test // DATAMONGO-2077
907
+ public void shouldRenderIsoDateFromParts () {
908
+
909
+ assertThat (transform ("isoDateFromParts(y, m, d, h, mm, s, ms, 'UTC')" ), is (Document .parse (
910
+ "{ \" $dateFromParts\" : {\" isoWeekYear\" : \" $y\" , \" isoWeek\" : \" $m\" , \" isoDayOfWeek\" : \" $d\" , \" hour\" : \" $h\" , \" minute\" : \" $mm\" , \" second\" : \" $s\" , \" milliseconds\" : \" $ms\" , \" timezone\" : \" UTC\" }}" )));
911
+ }
912
+
913
+ @ Test // DATAMONGO-2077
914
+ public void shouldRenderDateToParts () {
915
+
916
+ assertThat (transform ("dateToParts(field, 'UTC', false)" ), is (
917
+ Document .parse ("{ \" $dateToParts\" : {\" date\" : \" $field\" , \" timezone\" : \" UTC\" , \" iso8601\" : false}}" )));
918
+ }
919
+
920
+ @ Test // DATAMONGO-2077
921
+ public void shouldRenderIndexOfArray () {
922
+
923
+ assertThat (transform ("indexOfArray(field, 2)" ), is (Document .parse ("{ \" $indexOfArray\" : [\" $field\" , 2 ]}" )));
924
+ }
925
+
926
+ @ Test // DATAMONGO-2077
927
+ public void shouldRenderRange () {
928
+
929
+ assertThat (transform ("range(0, 10, 2)" ), is (Document .parse ("{ \" $range\" : [0, 10, 2 ]}" )));
930
+ }
931
+
722
932
private Object transform (String expression , Object ... params ) {
723
933
Object result = transformer .transform (expression , Aggregation .DEFAULT_CONTEXT , params );
724
934
return result == null ? null : (!(result instanceof org .bson .Document ) ? result .toString () : result );
0 commit comments