@@ -232,4 +232,136 @@ describe('segmentsPlugin', () => {
232232 expect ( result ) . toEqual ( [ ] ) ;
233233 } ) ;
234234 } ) ;
235+
236+ describe ( 'segments.list() with sizes' , ( ) => {
237+ it ( 'should pass sizes param when true' , async ( ) => {
238+ const mockGet = vi . fn ( ) . mockResolvedValue ( [ ] ) ;
239+ ( sdk as any ) . transport . get = mockGet ;
240+
241+ await ( sdk as any ) . segments . list ( { sizes : true } ) ;
242+
243+ expect ( mockGet ) . toHaveBeenCalledWith ( '/v2/segment' , { sizes : true } ) ;
244+ } ) ;
245+
246+ it ( 'should not pass sizes param when false or omitted' , async ( ) => {
247+ const mockGet = vi . fn ( ) . mockResolvedValue ( [ ] ) ;
248+ ( sdk as any ) . transport . get = mockGet ;
249+
250+ await ( sdk as any ) . segments . list ( { sizes : false } ) ;
251+
252+ expect ( mockGet ) . toHaveBeenCalledWith ( '/v2/segment' , undefined ) ;
253+ } ) ;
254+
255+ it ( 'should combine sizes with other params' , async ( ) => {
256+ const mockGet = vi . fn ( ) . mockResolvedValue ( [ ] ) ;
257+ ( sdk as any ) . transport . get = mockGet ;
258+
259+ await ( sdk as any ) . segments . list ( { table : 'user' , kind : 'segment' , sizes : true } ) ;
260+
261+ expect ( mockGet ) . toHaveBeenCalledWith ( '/v2/segment' , {
262+ table : 'user' ,
263+ kind : 'segment' ,
264+ sizes : true ,
265+ } ) ;
266+ } ) ;
267+ } ) ;
268+
269+ describe ( 'segments.groups()' , ( ) => {
270+ it ( 'should fetch segment groups' , async ( ) => {
271+ const mockGroups = [
272+ {
273+ id : 'g1' ,
274+ aid : 123 ,
275+ account_id : 'acc-1' ,
276+ created : '2024-01-01' ,
277+ updated : '2024-01-01' ,
278+ author : 'test@example.com' ,
279+ name : 'VIP Segments' ,
280+ description : 'High-value audience groups' ,
281+ segment_ids : [ 'seg-1' , 'seg-2' ] ,
282+ } ,
283+ ] ;
284+ const mockGet = vi . fn ( ) . mockResolvedValue ( mockGroups ) ;
285+ ( sdk as any ) . transport . get = mockGet ;
286+
287+ const result = await ( sdk as any ) . segments . groups ( ) ;
288+
289+ expect ( mockGet ) . toHaveBeenCalledWith ( '/v2/segment/group' ) ;
290+ expect ( result ) . toEqual ( mockGroups ) ;
291+ } ) ;
292+
293+ it ( 'should return empty array when API returns null' , async ( ) => {
294+ const mockGet = vi . fn ( ) . mockResolvedValue ( null ) ;
295+ ( sdk as any ) . transport . get = mockGet ;
296+
297+ const result = await ( sdk as any ) . segments . groups ( ) ;
298+
299+ expect ( result ) . toEqual ( [ ] ) ;
300+ } ) ;
301+ } ) ;
302+
303+ describe ( 'segments.scan()' , ( ) => {
304+ it ( 'should require segment ID' , async ( ) => {
305+ await expect ( ( sdk as any ) . segments . scan ( '' ) ) . rejects . toThrow ( 'Segment ID is required' ) ;
306+ } ) ;
307+
308+ it ( 'should scan segment with no options' , async ( ) => {
309+ const mockData = [ { _uid : 'user-1' , lytics_content_ai : 0.9 } ] ;
310+ const mockGet = vi . fn ( ) . mockResolvedValue ( { data : mockData } ) ;
311+ ( sdk as any ) . transport . get = mockGet ;
312+
313+ const result = await ( sdk as any ) . segments . scan ( 'seg-123' ) ;
314+
315+ expect ( mockGet ) . toHaveBeenCalledWith ( '/api/segment/seg-123/scan' , undefined ) ;
316+ expect ( result ) . toEqual ( mockData ) ;
317+ } ) ;
318+
319+ it ( 'should pass limit, table, and fields params' , async ( ) => {
320+ const mockGet = vi . fn ( ) . mockResolvedValue ( { data : [ ] } ) ;
321+ ( sdk as any ) . transport . get = mockGet ;
322+
323+ await ( sdk as any ) . segments . scan ( 'seg-123' , {
324+ limit : 50 ,
325+ table : 'user' ,
326+ fields : [ '_uid' , 'lytics_content_ai' ] ,
327+ } ) ;
328+
329+ expect ( mockGet ) . toHaveBeenCalledWith ( '/api/segment/seg-123/scan' , {
330+ limit : 50 ,
331+ table : 'user' ,
332+ fields : '_uid,lytics_content_ai' ,
333+ } ) ;
334+ } ) ;
335+
336+ it ( 'should pass sort params' , async ( ) => {
337+ const mockGet = vi . fn ( ) . mockResolvedValue ( { data : [ ] } ) ;
338+ ( sdk as any ) . transport . get = mockGet ;
339+
340+ await ( sdk as any ) . segments . scan ( 'seg-123' , {
341+ sortfield : 'created' ,
342+ sortorder : 'desc' ,
343+ } ) ;
344+
345+ expect ( mockGet ) . toHaveBeenCalledWith ( '/api/segment/seg-123/scan' , {
346+ sortfield : 'created' ,
347+ sortorder : 'desc' ,
348+ } ) ;
349+ } ) ;
350+
351+ it ( 'should return empty array when data is null' , async ( ) => {
352+ const mockGet = vi . fn ( ) . mockResolvedValue ( { } ) ;
353+ ( sdk as any ) . transport . get = mockGet ;
354+
355+ const result = await ( sdk as any ) . segments . scan ( 'seg-123' ) ;
356+
357+ expect ( result ) . toEqual ( [ ] ) ;
358+ } ) ;
359+
360+ it ( 'should propagate transport errors' , async ( ) => {
361+ const mockGet = vi . fn ( ) . mockRejectedValue ( new Error ( 'Not found' ) ) ;
362+ ( sdk as any ) . transport . get = mockGet ;
363+
364+ await expect ( ( sdk as any ) . segments . scan ( 'bad-id' ) ) . rejects . toThrow ( 'Not found' ) ;
365+ } ) ;
366+ } ) ;
235367} ) ;
0 commit comments