@@ -390,39 +390,58 @@ describe('RemoteConfig', () => {
390390 const ETAG = 'etag' ;
391391 const CONFIG = { key : 'val' } ;
392392 const NEW_ETAG = 'new_etag' ;
393+ const TEMPLATE_VERSION = 1 ;
393394
394395 let getLastSuccessfulFetchResponseStub : sinon . SinonStub ;
395396 let getActiveConfigEtagStub : sinon . SinonStub ;
397+ let getActiveConfigTemplateVersionStub : sinon . SinonStub ;
396398 let setActiveConfigEtagStub : sinon . SinonStub ;
397399 let setActiveConfigStub : sinon . SinonStub ;
400+ let setActiveConfigTemplateVersionStub : sinon . SinonStub ;
398401
399402 beforeEach ( ( ) => {
400403 getLastSuccessfulFetchResponseStub = sinon . stub ( ) ;
401404 getActiveConfigEtagStub = sinon . stub ( ) ;
405+ getActiveConfigTemplateVersionStub = sinon . stub ( ) ;
402406 setActiveConfigEtagStub = sinon . stub ( ) ;
403407 setActiveConfigStub = sinon . stub ( ) ;
408+ setActiveConfigTemplateVersionStub = sinon . stub ( ) ;
404409
405410 storage . getLastSuccessfulFetchResponse =
406411 getLastSuccessfulFetchResponseStub ;
407412 storage . getActiveConfigEtag = getActiveConfigEtagStub ;
413+ storage . getActiveConfigTemplateVersion =
414+ getActiveConfigTemplateVersionStub ;
408415 storage . setActiveConfigEtag = setActiveConfigEtagStub ;
409416 storageCache . setActiveConfig = setActiveConfigStub ;
417+ storage . setActiveConfigTemplateVersion =
418+ setActiveConfigTemplateVersionStub ;
410419 } ) ;
411420
412421 it ( 'does not activate if last successful fetch response is undefined' , async ( ) => {
413422 getLastSuccessfulFetchResponseStub . returns ( Promise . resolve ( ) ) ;
414423 getActiveConfigEtagStub . returns ( Promise . resolve ( ETAG ) ) ;
424+ getActiveConfigTemplateVersionStub . returns (
425+ Promise . resolve ( TEMPLATE_VERSION )
426+ ) ;
415427
416428 const activateResponse = await activate ( rc ) ;
417429
418430 expect ( activateResponse ) . to . be . false ;
419431 expect ( storage . setActiveConfigEtag ) . to . not . have . been . called ;
420432 expect ( storageCache . setActiveConfig ) . to . not . have . been . called ;
433+ expect ( storage . setActiveConfigTemplateVersion ) . to . not . have . been . calledWith (
434+ TEMPLATE_VERSION
435+ ) ;
421436 } ) ;
422437
423438 it ( 'does not activate if fetched and active etags are the same' , async ( ) => {
424439 getLastSuccessfulFetchResponseStub . returns (
425- Promise . resolve ( { config : { } , etag : ETAG } )
440+ Promise . resolve ( {
441+ config : { } ,
442+ eTag : ETAG ,
443+ templateVersion : TEMPLATE_VERSION
444+ } )
426445 ) ;
427446 getActiveConfigEtagStub . returns ( Promise . resolve ( ETAG ) ) ;
428447
@@ -431,11 +450,18 @@ describe('RemoteConfig', () => {
431450 expect ( activateResponse ) . to . be . false ;
432451 expect ( storage . setActiveConfigEtag ) . to . not . have . been . called ;
433452 expect ( storageCache . setActiveConfig ) . to . not . have . been . called ;
453+ expect ( storage . setActiveConfigTemplateVersion ) . to . not . have . been . calledWith (
454+ TEMPLATE_VERSION
455+ ) ;
434456 } ) ;
435457
436458 it ( 'activates if fetched and active etags are different' , async ( ) => {
437459 getLastSuccessfulFetchResponseStub . returns (
438- Promise . resolve ( { config : CONFIG , eTag : NEW_ETAG } )
460+ Promise . resolve ( {
461+ config : CONFIG ,
462+ eTag : NEW_ETAG ,
463+ templateVersion : TEMPLATE_VERSION
464+ } )
439465 ) ;
440466 getActiveConfigEtagStub . returns ( Promise . resolve ( ETAG ) ) ;
441467
@@ -444,11 +470,18 @@ describe('RemoteConfig', () => {
444470 expect ( activateResponse ) . to . be . true ;
445471 expect ( storage . setActiveConfigEtag ) . to . have . been . calledWith ( NEW_ETAG ) ;
446472 expect ( storageCache . setActiveConfig ) . to . have . been . calledWith ( CONFIG ) ;
473+ expect ( storage . setActiveConfigTemplateVersion ) . to . have . been . calledWith (
474+ TEMPLATE_VERSION
475+ ) ;
447476 } ) ;
448477
449478 it ( 'activates if fetched is defined but active config is not' , async ( ) => {
450479 getLastSuccessfulFetchResponseStub . returns (
451- Promise . resolve ( { config : CONFIG , eTag : NEW_ETAG } )
480+ Promise . resolve ( {
481+ config : CONFIG ,
482+ eTag : NEW_ETAG ,
483+ templateVersion : TEMPLATE_VERSION
484+ } )
452485 ) ;
453486 getActiveConfigEtagStub . returns ( Promise . resolve ( ) ) ;
454487
@@ -457,6 +490,9 @@ describe('RemoteConfig', () => {
457490 expect ( activateResponse ) . to . be . true ;
458491 expect ( storage . setActiveConfigEtag ) . to . have . been . calledWith ( NEW_ETAG ) ;
459492 expect ( storageCache . setActiveConfig ) . to . have . been . calledWith ( CONFIG ) ;
493+ expect ( storage . setActiveConfigTemplateVersion ) . to . have . been . calledWith (
494+ TEMPLATE_VERSION
495+ ) ;
460496 } ) ;
461497 } ) ;
462498
0 commit comments