From 5cced41a2716b540590313fef1f5578b608278e9 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Mon, 12 Aug 2024 13:47:43 +0530 Subject: [PATCH] feat: fetch asset by query implementation and test cases --- .../com/contentstack/sdk/AssetTestCase.java | 75 +++++++++++++++++++ .../com/contentstack/sdk/AssetLibrary.java | 15 ++++ 2 files changed, 90 insertions(+) diff --git a/contentstack/src/androidTest/java/com/contentstack/sdk/AssetTestCase.java b/contentstack/src/androidTest/java/com/contentstack/sdk/AssetTestCase.java index 7137b885..3f46ad7f 100644 --- a/contentstack/src/androidTest/java/com/contentstack/sdk/AssetTestCase.java +++ b/contentstack/src/androidTest/java/com/contentstack/sdk/AssetTestCase.java @@ -9,9 +9,11 @@ import org.junit.runners.MethodSorters; import java.util.List; +import java.util.concurrent.CountDownLatch; import static junit.framework.Assert.assertTrue; import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.assertNotNull; import androidx.test.InstrumentationRegistry; import androidx.test.core.app.ApplicationProvider; @@ -22,6 +24,8 @@ public class AssetTestCase { private final String TAG = AssetTestCase.class.getSimpleName(); private static String assetUid = BuildConfig.assetUID; private static Stack stack; + private static CountDownLatch latch; + @BeforeClass public static void oneTimeSetUp() throws Exception { @@ -191,4 +195,75 @@ public void test_GCP_NA() throws Exception { stack = Contentstack.stack(appContext, DEFAULT_API_KEY, DEFAULT_DELIVERY_TOKEN, DEFAULT_ENV, config); } + @Test + public void test_I_fetch_asset_by_title() { + final AssetLibrary assetLibrary = stack.assetLibrary().where("title", "iot-icon.png"); + assetLibrary.fetchAll(new FetchAssetsCallback() { + @Override + public void onCompletion(ResponseType responseType, List assets, Error error) { + if (error == null) { + for (Asset asset : assets) { + Log.d("RESULT:", "resp" + asset.json); + } + } + } + }); + } + + @Test + public void test_J_fetch_asset_by_tags() { + final AssetLibrary assetLibrary = stack.assetLibrary().where("tags","tag1"); + assetLibrary.fetchAll(new FetchAssetsCallback() { + @Override + public void onCompletion(ResponseType responseType, List assets, Error error) { + if (error == null) { + for( Asset asset : assets){ + Log.d("RESULT:", "resp" + asset.json); + } + assertTrue(assets.size()>0); + } + } + }); + } + + @Test + public void test_K_fetch_asset_by_description() { + final AssetLibrary assetLibrary= stack.assetLibrary().where("description","Page1"); + assetLibrary.fetchAll(new FetchAssetsCallback() { + @Override + public void onCompletion(ResponseType responseType, List assets, Error error) { + for(Asset asset : assets){ + Log.d("RESULT:", "resp" + asset.toJSON()); + } + assertTrue(assets.size()>0); + } + }); + } + + @Test + public void test_L_fetch_asset_invalid() { + final AssetLibrary assetLibrary = stack.assetLibrary().where("title",null); + assetLibrary.fetchAll(new FetchAssetsCallback() { + @Override + public void onCompletion(ResponseType responseType, List assets, Error error) { + Log.e("RESULT:", "ERROR:"+ error.errorMessage); + } + }); + + } + + @Test + public void test_M_fetch_asset_empty_title() { + final AssetLibrary assetLibrary = stack.assetLibrary().where("title",""); + assetLibrary.fetchAll(new FetchAssetsCallback() { + @Override + public void onCompletion(ResponseType responseType, List assets, Error error) { + for(Asset asset : assets){ + Log.d("RESULT:", "resp: " + asset.toJSON()); + } + assertEquals(0, assets.size()); + } + }); + } + } diff --git a/contentstack/src/main/java/com/contentstack/sdk/AssetLibrary.java b/contentstack/src/main/java/com/contentstack/sdk/AssetLibrary.java index 48a081d8..973a3c08 100644 --- a/contentstack/src/main/java/com/contentstack/sdk/AssetLibrary.java +++ b/contentstack/src/main/java/com/contentstack/sdk/AssetLibrary.java @@ -452,5 +452,20 @@ public AssetLibrary includeMetadata() { } return this; } + public AssetLibrary where(String key, String value) { + if (value != null) { + try { + JSONObject queryParams = new JSONObject(); + queryParams.put(key, value); + urlQueries.put("query", queryParams); + } catch (JSONException e) { + Log.e(TAG, "JSON error: " + e.getLocalizedMessage()); + } + } else { + Log.e(TAG, "Value for key '" + key + "' is null. Skipping addition to query."); + } + return this; + } + }