From ba26ccd90fee4873f360898167096cdf9beb5d0d Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Thu, 14 Sep 2023 10:10:56 -0300 Subject: [PATCH] Additional query string test --- .../integration/sets/FlagSetsPollingTest.java | 20 ++++++++++++++++++- .../service/splits/SplitChangeProcessor.java | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java b/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java index 3a549259d..8c3c095f7 100644 --- a/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java +++ b/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java @@ -14,11 +14,13 @@ import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; import fake.HttpClientMock; import fake.HttpResponseMock; @@ -46,6 +48,7 @@ public class FlagSetsPollingTest { private CountDownLatch secondChangeLatch; private CountDownLatch thirdChangeLatch; private SplitRoomDatabase mRoomDb; + private volatile String mSplitChangesUri; @Before public void setUp() throws Exception { @@ -157,6 +160,19 @@ public void featureFlagSetsAreIgnoredWhenSetsAreNotConfigured() throws IOExcepti assertTrue(awaitHits); } + @Test + public void queryStringIsBuiltCorrectlyWhenSetsAreConfigured() throws IOException, InterruptedException { + // 1. Initialize a factory with polling and sets set_1 & set_2 configured. + createFactory(mContext, mRoomDb, "set_x", "set_x", "set_3", "set_2", "set_3", "set_ww", "invalid+"); + + boolean awaitFirst = firstChangeLatch.await(5, TimeUnit.SECONDS); + + String uri = mSplitChangesUri; + + assertTrue(awaitFirst); + assertEquals("https://sdk.split.io/api/splitChanges?since=-1&sets=set_2,set_3,set_ww,set_x", uri); + } + private SplitFactory createFactory( Context mContext, SplitRoomDatabase splitRoomDatabase, @@ -169,6 +185,8 @@ private SplitFactory createFactory( .impressionsCountersRefreshRate(1000) .syncConfig(SyncConfig.builder() .addSplitFilter(SplitFilter.bySet(Arrays.asList(sets))) + .addSplitFilter(SplitFilter.byName(Arrays.asList("workm", "workm_set_3"))) // added to test that this filter is ignored + .addSplitFilter(SplitFilter.byPrefix(Collections.singletonList("pref"))) // added to test that this filter is ignored .build()) .featuresRefreshRate(2) .streamingEnabled(false) @@ -177,8 +195,8 @@ private SplitFactory createFactory( Map responses = new HashMap<>(); responses.put("splitChanges", (uri, httpMethod, body) -> { + mSplitChangesUri = uri.toString(); String since = getSinceFromUri(uri); - hitsLatch.countDown(); if (since.equals("-1")) { firstChangeLatch.countDown(); diff --git a/src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java b/src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java index a24848d42..88abaf09d 100644 --- a/src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java +++ b/src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java @@ -61,7 +61,7 @@ private ProcessedSplitChange buildProcessedSplitChange(List featureFlags, FeatureFlagProcessStrategy processStrategy = getProcessStrategy(mSplitFilter); for (Split featureFlag : featureFlags) { - if (featureFlag.name == null) { + if (featureFlag == null || featureFlag.name == null) { continue; }