@@ -509,7 +509,7 @@ public void injectOptimizelyDoesNotDuplicateCallback() {
509509 @ Test
510510 public void initializeSyncWithUpdateOnNewDatafileDisabled () {
511511 boolean downloadToCache = true ;
512- boolean updateConfigOnNewDatafiel = false ;
512+ boolean updateConfigOnNewDatafile = false ;
513513 int pollingInterval = 0 ; // disable polling
514514
515515 DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
@@ -528,7 +528,7 @@ public Object answer(InvocationOnMock invocation) {
528528 }
529529 }).when (manager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ), any (DatafileLoadedListener .class ));
530530
531- OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafiel );
531+ OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafile );
532532
533533 try {
534534 executor .awaitTermination (1 , TimeUnit .SECONDS );
@@ -542,7 +542,7 @@ public Object answer(InvocationOnMock invocation) {
542542 @ Test
543543 public void initializeSyncWithUpdateOnNewDatafileEnabled () {
544544 boolean downloadToCache = true ;
545- boolean updateConfigOnNewDatafiel = true ;
545+ boolean updateConfigOnNewDatafile = true ;
546546 int pollingInterval = 0 ; // disable polling
547547
548548 DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
@@ -561,7 +561,7 @@ public Object answer(InvocationOnMock invocation) {
561561 }
562562 }).when (manager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ), any (DatafileLoadedListener .class ));
563563
564- OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafiel );
564+ OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafile );
565565
566566 try {
567567 executor .awaitTermination (1 , TimeUnit .SECONDS );
@@ -575,7 +575,7 @@ public Object answer(InvocationOnMock invocation) {
575575 @ Test
576576 public void initializeSyncWithDownloadToCacheDisabled () {
577577 boolean downloadToCache = false ;
578- boolean updateConfigOnNewDatafiel = true ;
578+ boolean updateConfigOnNewDatafile = true ;
579579 int pollingInterval = 0 ; // disable polling
580580
581581 DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
@@ -594,7 +594,7 @@ public Object answer(InvocationOnMock invocation) {
594594 }
595595 }).when (manager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ), any (DatafileLoadedListener .class ));
596596
597- OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafiel );
597+ OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafile );
598598
599599 try {
600600 executor .awaitTermination (1 , TimeUnit .SECONDS );
@@ -608,7 +608,39 @@ public Object answer(InvocationOnMock invocation) {
608608 @ Test
609609 public void initializeSyncWithUpdateOnNewDatafileDisabledWithPeriodicPollingEnabled () {
610610 boolean downloadToCache = true ;
611- boolean updateConfigOnNewDatafiel = false ;
611+ boolean updateConfigOnNewDatafile = false ;
612+ int pollingInterval = 30 ; // enable polling
613+
614+ DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
615+ Logger logger = mock (Logger .class );
616+ Context context = InstrumentationRegistry .getTargetContext ();
617+
618+ OptimizelyManager manager = new OptimizelyManager (testProjectId , testSdkKey , null , logger , pollingInterval , datafileHandler , null , 0 ,
619+ null , null , null , null );
620+
621+ doAnswer (
622+ (Answer <Object >) invocation -> {
623+ String newDatafile = manager .getDatafile (context , R .raw .datafile_api );
624+ datafileHandler .saveDatafile (context , manager .getDatafileConfig (), newDatafile );
625+ return null ;
626+ }).when (manager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ), any (DatafileLoadedListener .class ));
627+
628+ OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafile );
629+
630+ try {
631+ executor .awaitTermination (1 , TimeUnit .SECONDS );
632+ } catch (InterruptedException e ) {
633+ //
634+ }
635+
636+ // when periodic polling enabled, project config always updated on cache datafile update (regardless of "updateConfigOnNewDatafile" setting)
637+ assertEquals (client .getOptimizelyConfig ().getRevision (), "241" ); // wait for first download.
638+ }
639+
640+ @ Test
641+ public void initializeSyncWithUpdateOnNewDatafileEnabledWithPeriodicPollingEnabled () {
642+ boolean downloadToCache = true ;
643+ boolean updateConfigOnNewDatafile = true ;
612644 int pollingInterval = 30 ; // enable polling
613645
614646 DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
@@ -627,23 +659,22 @@ public Object answer(InvocationOnMock invocation) {
627659 }
628660 }).when (manager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ), any (DatafileLoadedListener .class ));
629661
630- OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafiel );
662+ OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafile );
631663
632664 try {
633665 executor .awaitTermination (1 , TimeUnit .SECONDS );
634666 } catch (InterruptedException e ) {
635667 //
636668 }
637669
638- // when periodic polling enabled, project config always updated on cache datafile update (regardless of "updateConfigOnNewDatafile" setting)
639670 assertEquals (client .getOptimizelyConfig ().getRevision (), "241" );
640671 }
641672
642673 @ Test
643- public void initializeSyncWithUpdateOnNewDatafileEnabledWithPeriodicPollingEnabled () {
674+ public void initializeSyncWithUpdateOnNewDatafileDisabledWithPeriodicPollingDisabled () {
644675 boolean downloadToCache = true ;
645- boolean updateConfigOnNewDatafiel = true ;
646- int pollingInterval = 30 ; // enable polling
676+ boolean updateConfigOnNewDatafile = false ;
677+ int pollingInterval = 0 ; // disable polling
647678
648679 DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
649680 Logger logger = mock (Logger .class );
@@ -661,7 +692,7 @@ public Object answer(InvocationOnMock invocation) {
661692 }
662693 }).when (manager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ), any (DatafileLoadedListener .class ));
663694
664- OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafiel );
695+ OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafile );
665696
666697 try {
667698 executor .awaitTermination (1 , TimeUnit .SECONDS );
@@ -670,13 +701,46 @@ public Object answer(InvocationOnMock invocation) {
670701 }
671702
672703 // when periodic polling enabled, project config always updated on cache datafile update (regardless of "updateConfigOnNewDatafile" setting)
704+ assertEquals (client .getOptimizelyConfig ().getRevision (), "7" ); // wait for first download.
705+ }
706+
707+ @ Test
708+ public void initializeSyncWithUpdateOnNewDatafileEnabledWithPeriodicPollingDisabled () {
709+ boolean downloadToCache = true ;
710+ boolean updateConfigOnNewDatafile = true ;
711+ int pollingInterval = 0 ; // disable polling
712+
713+ DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
714+ Logger logger = mock (Logger .class );
715+ Context context = InstrumentationRegistry .getTargetContext ();
716+
717+ OptimizelyManager manager = new OptimizelyManager (testProjectId , testSdkKey , null , logger , pollingInterval , datafileHandler , null , 0 ,
718+ null , null , null , null );
719+
720+ doAnswer (
721+ new Answer <Object >() {
722+ public Object answer (InvocationOnMock invocation ) {
723+ String newDatafile = manager .getDatafile (context , R .raw .datafile_api );
724+ datafileHandler .saveDatafile (context , manager .getDatafileConfig (), newDatafile );
725+ return null ;
726+ }
727+ }).when (manager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ), any (DatafileLoadedListener .class ));
728+
729+ OptimizelyClient client = manager .initialize (context , defaultDatafile , downloadToCache , updateConfigOnNewDatafile );
730+
731+ try {
732+ executor .awaitTermination (1 , TimeUnit .SECONDS );
733+ } catch (InterruptedException e ) {
734+ //
735+ }
736+
673737 assertEquals (client .getOptimizelyConfig ().getRevision (), "241" );
674738 }
675739
676740 @ Test
677741 public void initializeSyncWithResourceDatafileNoCache () {
678742 boolean downloadToCache = true ;
679- boolean updateConfigOnNewDatafiel = true ;
743+ boolean updateConfigOnNewDatafile = true ;
680744 int pollingInterval = 30 ; // enable polling
681745
682746 DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
@@ -687,15 +751,13 @@ public void initializeSyncWithResourceDatafileNoCache() {
687751 null , null , null , null ));
688752
689753 datafileHandler .removeSavedDatafile (context , manager .getDatafileConfig ());
690- OptimizelyClient client = manager .initialize (context , R .raw .datafile , downloadToCache , updateConfigOnNewDatafiel );
754+ OptimizelyClient client = manager .initialize (context , R .raw .datafile , downloadToCache , updateConfigOnNewDatafile );
691755
692- verify (manager ).initialize (eq (context ), eq (defaultDatafile ), eq (downloadToCache ), eq (updateConfigOnNewDatafiel ));
756+ verify (manager ).initialize (eq (context ), eq (defaultDatafile ), eq (downloadToCache ), eq (updateConfigOnNewDatafile ));
693757 }
694758
695759 @ Test
696760 public void initializeSyncWithResourceDatafileNoCacheWithDefaultParams () {
697- boolean downloadToCache = true ;
698- boolean updateConfigOnNewDatafiel = true ;
699761 int pollingInterval = 30 ; // enable polling
700762
701763 DefaultDatafileHandler datafileHandler = spy (new DefaultDatafileHandler ());
0 commit comments