@@ -182,6 +182,133 @@ void testIncludeMetadata() {
182182 assertEquals (true , asset .urlQueries .get ("include_metadata" ));
183183 }
184184
185+ // ========== ASSET FIELDS TESTS (CDA asset_fields[] parameter) ==========
186+
187+ @ Test
188+ void testAssetFieldsWithSupportedValues () {
189+ Asset result = asset .assetFields ("user_defined_fields" , "embedded" , "ai_suggested" , "visual_markups" );
190+ assertSame (asset , result );
191+ assertTrue (asset .urlQueries .has ("asset_fields[]" ));
192+ Object val = asset .urlQueries .get ("asset_fields[]" );
193+ assertTrue (val instanceof JSONArray );
194+ JSONArray arr = (JSONArray ) val ;
195+ assertEquals (4 , arr .length ());
196+ assertEquals ("user_defined_fields" , arr .get (0 ));
197+ assertEquals ("embedded" , arr .get (1 ));
198+ assertEquals ("ai_suggested" , arr .get (2 ));
199+ assertEquals ("visual_markups" , arr .get (3 ));
200+ }
201+
202+ @ Test
203+ void testAssetFieldsReturnsThis () {
204+ Asset result = asset .assetFields ("user_defined_fields" );
205+ assertSame (asset , result );
206+ }
207+
208+ @ Test
209+ void testAssetFieldsWithNoArgsDoesNotSetParam () {
210+ asset .assetFields ();
211+ assertFalse (asset .urlQueries .has ("asset_fields[]" ));
212+ }
213+
214+ @ Test
215+ void testAssetFieldsWithNullDoesNotSetParam () {
216+ asset .assetFields ((String []) null );
217+ assertFalse (asset .urlQueries .has ("asset_fields[]" ));
218+ }
219+
220+ @ Test
221+ void testAssetFieldsChainingWithOtherMethods () {
222+ Asset result = asset .assetFields ("embedded" , "visual_markups" )
223+ .includeMetadata ()
224+ .includeDimension ();
225+ assertSame (asset , result );
226+ assertTrue (asset .urlQueries .has ("asset_fields[]" ));
227+ assertTrue (asset .urlQueries .has ("include_metadata" ));
228+ assertTrue (asset .urlQueries .has ("include_dimension" ));
229+ JSONArray arr = asset .urlQueries .getJSONArray ("asset_fields[]" );
230+ assertEquals (2 , arr .length ());
231+ assertEquals ("embedded" , arr .get (0 ));
232+ assertEquals ("visual_markups" , arr .get (1 ));
233+ }
234+
235+ /**
236+ * Usage: stack.asset(assetUid).assetFields(...).fetch()
237+ * Verifies the full chain sets asset_fields[] on the asset before fetch.
238+ */
239+ @ Test
240+ void testUsageSingleAssetFetchWithAssetFields () throws IllegalAccessException {
241+ Stack stack = Contentstack .stack ("api_key" , "delivery_token" , "env" );
242+ Asset asset = stack .asset ("asset_uid_123" )
243+ .assetFields ("embedded" , "visual_markups" );
244+ assertTrue (asset .urlQueries .has ("asset_fields[]" ));
245+ JSONArray arr = asset .urlQueries .getJSONArray ("asset_fields[]" );
246+ assertEquals (2 , arr .length ());
247+ assertEquals ("embedded" , arr .get (0 ));
248+ assertEquals ("visual_markups" , arr .get (1 ));
249+ }
250+
251+
252+ @ Test
253+ void testAssetFieldsSingleField () {
254+ asset .assetFields ("embedded" );
255+ assertTrue (asset .urlQueries .has ("asset_fields[]" ));
256+ JSONArray arr = asset .urlQueries .getJSONArray ("asset_fields[]" );
257+ assertEquals (1 , arr .length ());
258+ assertEquals ("embedded" , arr .get (0 ));
259+ }
260+
261+ @ Test
262+ void testAssetFieldsEmptyVarargsArrayDoesNotSetParam () {
263+ asset .assetFields (new String [0 ]);
264+ assertFalse (asset .urlQueries .has ("asset_fields[]" ));
265+ }
266+
267+ @ Test
268+ void testAssetFieldsDuplicateValuesAllowed () {
269+ asset .assetFields ("embedded" , "embedded" );
270+ JSONArray arr = asset .urlQueries .getJSONArray ("asset_fields[]" );
271+ assertEquals (2 , arr .length ());
272+ assertEquals ("embedded" , arr .get (0 ));
273+ assertEquals ("embedded" , arr .get (1 ));
274+ }
275+
276+ @ Test
277+ void testAssetFieldsSecondCallOverwrites () {
278+ asset .assetFields ("user_defined_fields" , "embedded" );
279+ asset .assetFields ("ai_suggested" );
280+ JSONArray arr = asset .urlQueries .getJSONArray ("asset_fields[]" );
281+ assertEquals (1 , arr .length ());
282+ assertEquals ("ai_suggested" , arr .get (0 ));
283+ }
284+
285+ @ Test
286+ void testAssetFieldsWithEmptyStringInArray () {
287+ asset .assetFields ("valid" , "" , "embedded" );
288+ JSONArray arr = asset .urlQueries .getJSONArray ("asset_fields[]" );
289+ assertEquals (3 , arr .length ());
290+ assertEquals ("valid" , arr .get (0 ));
291+ assertEquals ("" , arr .get (1 ));
292+ assertEquals ("embedded" , arr .get (2 ));
293+ }
294+
295+ @ Test
296+ void testAssetFieldsWithNullInArray () {
297+ asset .assetFields ("valid" , null , "embedded" );
298+ JSONArray arr = asset .urlQueries .getJSONArray ("asset_fields[]" );
299+ assertEquals (3 , arr .length ());
300+ assertEquals ("valid" , arr .get (0 ));
301+ assertEquals ("embedded" , arr .get (2 ));
302+ }
303+
304+ @ Test
305+ void testAssetFieldsSingleEmptyStringSetsParam () {
306+ asset .assetFields ("" );
307+ assertTrue (asset .urlQueries .has ("asset_fields[]" ));
308+ assertEquals (1 , asset .urlQueries .getJSONArray ("asset_fields[]" ).length ());
309+ assertEquals ("" , asset .urlQueries .getJSONArray ("asset_fields[]" ).get (0 ));
310+ }
311+
185312 // ========== CHAINING TESTS ==========
186313
187314 @ Test
0 commit comments