@@ -948,19 +948,77 @@ describe('RemoteConfig', () => {
948
948
} ) ;
949
949
} ) ;
950
950
951
- it ( 'overrides local default when value exists' , ( ) => {
951
+ it ( 'uses local default when in-app default value specified after loading remote values' , async ( ) => {
952
+ // We had a bug caused by forgetting the first argument to
953
+ // Object.assign. This resulted in defaultConfig being overwritten
954
+ // by the remote values. So this test asserts we can use in-app
955
+ // default after loading remote values.
956
+ const template = remoteConfig . initServerTemplate ( {
957
+ defaultConfig : {
958
+ dog_type : 'corgi'
959
+ }
960
+ } ) ;
961
+
962
+ const response = deepCopy ( SERVER_REMOTE_CONFIG_RESPONSE ) ;
963
+
964
+ response . parameters = {
965
+ dog_type : {
966
+ defaultValue : {
967
+ value : 'pug'
968
+ } ,
969
+ valueType : 'STRING'
970
+ } ,
971
+ }
972
+
973
+ template . cache = response as ServerTemplateData ;
974
+
975
+ let config = template . evaluate ( ) ;
976
+
977
+ expect ( config . dog_type ) . to . equal ( 'pug' ) ;
978
+
979
+ response . parameters = {
980
+ dog_type : {
981
+ defaultValue : {
982
+ useInAppDefault : true
983
+ } ,
984
+ valueType : 'STRING'
985
+ } ,
986
+ }
987
+
988
+ template . cache = response as ServerTemplateData ;
989
+
990
+ config = template . evaluate ( ) ;
991
+
992
+ expect ( config . dog_type ) . to . equal ( 'corgi' ) ;
993
+ } ) ;
994
+
995
+ it ( 'overrides local default when remote value exists' , ( ) => {
996
+ const response = deepCopy ( SERVER_REMOTE_CONFIG_RESPONSE ) ;
997
+ response . parameters = {
998
+ dog_type_enabled : {
999
+ defaultValue : {
1000
+ // Defines remote value
1001
+ value : 'true'
1002
+ } ,
1003
+ valueType : 'BOOLEAN'
1004
+ } ,
1005
+ }
1006
+
952
1007
const stub = sinon
953
1008
. stub ( RemoteConfigApiClient . prototype , 'getServerTemplate' )
954
- . resolves ( SERVER_REMOTE_CONFIG_RESPONSE_2 as ServerTemplateData ) ;
1009
+ . resolves ( response as ServerTemplateData ) ;
955
1010
stubs . push ( stub ) ;
1011
+
956
1012
return remoteConfig . getServerTemplate ( {
957
1013
defaultConfig : {
1014
+ // Defines local default
958
1015
dog_type_enabled : false
959
1016
}
960
1017
} )
961
1018
. then ( ( template : ServerTemplate ) => {
962
- const config = template . evaluate ! ( ) ;
963
- expect ( config . dog_type_enabled ) . to . equal ( template . defaultConfig . dog_type_enabled ) ;
1019
+ const config = template . evaluate ( ) ;
1020
+ // Asserts remote value overrides local default.
1021
+ expect ( config . dog_type_enabled ) . to . be . true ;
964
1022
} ) ;
965
1023
} ) ;
966
1024
} ) ;
0 commit comments