@@ -928,6 +928,80 @@ describe('QueryBuilder.vue', () => {
928
928
expect ( wrapper . vm . pivotConfig ) . toEqual ( expectedPivotForLine ) ;
929
929
expect ( wrapper . vm . chartType ) . toBe ( 'line' ) ;
930
930
} ) ;
931
+ it ( 'should not reassign validatedQuery if it has not changed' , async ( ) => {
932
+ const cube = createCubeApi ( ) ;
933
+ jest
934
+ . spyOn ( cube , 'request' )
935
+ . mockImplementation ( fetchMock ( load ) )
936
+ . mockImplementationOnce ( fetchMock ( meta ) ) ;
937
+
938
+ const wrapper = shallowMount ( QueryBuilder , {
939
+ propsData : {
940
+ cubeApi : cube ,
941
+ query : {
942
+ measures : [ 'Orders.count' ] ,
943
+ timeDimensions : [
944
+ {
945
+ dimension : 'Orders.createdAt' ,
946
+ } ,
947
+ ] ,
948
+ } ,
949
+ } ,
950
+ } ) ;
951
+
952
+ const initialValidatedQuery = {
953
+ measures : [ 'measure1' ] ,
954
+ dimensions : [ 'dimension1' ] ,
955
+ } ;
956
+ wrapper . setData ( { prevValidatedQuery : initialValidatedQuery } ) ;
957
+
958
+ wrapper . setData ( {
959
+ measures : [ { name : 'measure1' } ] ,
960
+ dimensions : [ { name : 'dimension1' } ] ,
961
+ } ) ;
962
+
963
+ await wrapper . vm . $nextTick ( ) ;
964
+
965
+ expect ( wrapper . vm . prevValidatedQuery . measures ) . toEqual ( initialValidatedQuery . measures ) ;
966
+ expect ( wrapper . vm . prevValidatedQuery . dimensions ) . toEqual ( initialValidatedQuery . dimensions ) ;
967
+ } ) ;
968
+
969
+ it ( 'should reassign validatedQuery if it has changed' , async ( ) => {
970
+ const cube = createCubeApi ( ) ;
971
+ jest
972
+ . spyOn ( cube , 'request' )
973
+ . mockImplementation ( fetchMock ( load ) )
974
+ . mockImplementationOnce ( fetchMock ( meta ) ) ;
975
+
976
+ const wrapper = shallowMount ( QueryBuilder , {
977
+ propsData : {
978
+ cubeApi : cube ,
979
+ query : {
980
+ measures : [ 'Orders.count' ] ,
981
+ timeDimensions : [
982
+ {
983
+ dimension : 'Orders.createdAt' ,
984
+ } ,
985
+ ] ,
986
+ } ,
987
+ } ,
988
+ } ) ;
989
+ const initialValidatedQuery = {
990
+ measures : [ 'measure1' ] ,
991
+ dimensions : [ 'dimension1' ] ,
992
+ } ;
993
+ wrapper . setData ( { prevValidatedQuery : initialValidatedQuery } ) ;
994
+
995
+ wrapper . setData ( {
996
+ measures : [ { name : 'measure2' } ] ,
997
+ dimensions : [ { name : 'dimension1' } ] ,
998
+ } ) ;
999
+
1000
+ await wrapper . vm . $nextTick ( ) ;
1001
+
1002
+ expect ( wrapper . vm . prevValidatedQuery . measures ) . not . toEqual ( initialValidatedQuery . measures ) ;
1003
+ expect ( wrapper . vm . prevValidatedQuery . dimensions ) . toEqual ( initialValidatedQuery . dimensions ) ;
1004
+ } ) ;
931
1005
} ) ;
932
1006
describe ( 'orderMembers' , ( ) => {
933
1007
it ( 'does not contain time dimension if granularity is set to none' , async ( ) => {
@@ -1001,6 +1075,48 @@ describe('QueryBuilder.vue', () => {
1001
1075
] )
1002
1076
) ;
1003
1077
} ) ;
1078
+ it ( 'calls copyQueryFromProps if query is changed' , async ( ) => {
1079
+ const cube = createCubeApi ( ) ;
1080
+ jest
1081
+ . spyOn ( cube , 'request' )
1082
+ . mockImplementation ( fetchMock ( load ) )
1083
+ . mockImplementationOnce ( fetchMock ( meta ) ) ;
1084
+
1085
+ const copyQueryFromProps = jest . spyOn ( QueryBuilder . methods , 'copyQueryFromProps' ) ;
1086
+
1087
+ const wrapper = shallowMount ( QueryBuilder , {
1088
+ propsData : {
1089
+ cubeApi : cube ,
1090
+ query : {
1091
+ measures : [ 'Orders.count' ] ,
1092
+ timeDimensions : [
1093
+ {
1094
+ dimension : 'Orders.createdAt' ,
1095
+ } ,
1096
+ ] ,
1097
+ } ,
1098
+ } ,
1099
+ } ) ;
1100
+ await flushPromises ( ) ;
1101
+
1102
+ await wrapper . vm . $nextTick ( ) ;
1103
+ expect ( wrapper . vm . measures . length ) . toEqual ( 1 ) ;
1104
+ expect ( wrapper . vm . measures [ 0 ] . name ) . toEqual ( 'Orders.count' ) ;
1105
+
1106
+ await wrapper . vm . $nextTick ( ) ;
1107
+
1108
+ expect ( copyQueryFromProps ) . toHaveBeenCalled ( ) ;
1109
+ expect ( copyQueryFromProps ) . toHaveBeenCalledTimes ( 1 ) ;
1110
+ const initialValidatedQuery = {
1111
+ measures : [ 'measure1' ] ,
1112
+ dimensions : [ 'dimension1' ] ,
1113
+ } ;
1114
+ wrapper . setData ( { prevValidatedQuery : initialValidatedQuery } ) ;
1115
+ await wrapper . vm . $nextTick ( ) ;
1116
+
1117
+ expect ( copyQueryFromProps ) . toHaveBeenCalledTimes ( 2 ) ;
1118
+ copyQueryFromProps . mockRestore ( ) ;
1119
+ } ) ;
1004
1120
} ) ;
1005
1121
} ) ;
1006
1122
} ) ;
0 commit comments