@@ -904,6 +904,7 @@ describe('Offchain marketplace', () => {
904904 const maxGpuTagOrders = [ ] ;
905905 const minMaxTeeTagOrders = [ ] ;
906906 const minVolumeOrders = [ ] ;
907+ const bulkOrders = [ ] ;
907908 let consumedOrders ;
908909 let deadOrders ;
909910 let datasetAddress ;
@@ -949,6 +950,30 @@ describe('Offchain marketplace', () => {
949950 noRestrictOrders . push ( ...datasetPrice0 ) ;
950951 allOrders . push ( ...datasetPrice0 ) ;
951952
953+ const bulk = await Promise . all (
954+ Array ( 2 )
955+ . fill ( null )
956+ . map ( async ( ) => {
957+ const order = await iexecUser . order
958+ . createDatasetorder ( {
959+ dataset : datasetAddress ,
960+ datasetprice : 0 , // bulk order must be free
961+ volume : Number . MAX_SAFE_INTEGER , // bulk order must have max volume
962+ } )
963+ . then ( iexecUser . order . signDatasetorder ) ;
964+ const orderHash = await iexecUser . order . hashDatasetorder ( order ) ;
965+ return {
966+ order,
967+ orderHash,
968+ signer : ownerAddress ,
969+ } ;
970+ } ) ,
971+ ) ;
972+ bulkOrders . push ( ...bulk ) ;
973+ minVolumeOrders . push ( ...bulk ) ;
974+ noRestrictOrders . push ( ...bulk ) ;
975+ allOrders . push ( ...bulk ) ;
976+
952977 const datasetPrice20 = await Promise . all (
953978 Array ( 5 )
954979 . fill ( null )
@@ -1803,6 +1828,52 @@ describe('Offchain marketplace', () => {
18031828 } ) ;
18041829 } ) ;
18051830
1831+ test ( 'GET /datasetorders (bulkOnly filter)' , async ( ) => {
1832+ const onlyBulkRes = await request
1833+ . get (
1834+ buildQuery ( '/datasetorders' , {
1835+ chainId, // *
1836+ dataset : datasetAddress , // *
1837+ bulkOnly : true ,
1838+ } ) ,
1839+ )
1840+ . then ( parseResult ) ;
1841+ expect ( onlyBulkRes . status ) . toBe ( OK_STATUS ) ;
1842+ expect ( onlyBulkRes . data . ok ) . toBe ( true ) ;
1843+ expect ( onlyBulkRes . data . count ) . toBe ( bulkOrders . length ) ;
1844+ expect ( onlyBulkRes . data . orders ) . toBeDefined ( ) ;
1845+ expect ( Array . isArray ( onlyBulkRes . data . orders ) ) . toBe ( true ) ;
1846+ expect ( onlyBulkRes . data . orders . length ) . toBe ( bulkOrders . length ) ;
1847+ onlyBulkRes . data . orders . forEach ( ( e ) => {
1848+ expect ( e . bulk ) . toBe ( true ) ;
1849+ } ) ;
1850+
1851+ const notOnlyBulkRes = await request
1852+ . get (
1853+ buildQuery ( '/datasetorders' , {
1854+ chainId, // *
1855+ dataset : datasetAddress , // *
1856+ // bulkOnly: false,
1857+ } ) ,
1858+ )
1859+ . then ( parseResult ) ;
1860+ expect ( notOnlyBulkRes . status ) . toBe ( OK_STATUS ) ;
1861+ expect ( notOnlyBulkRes . data . ok ) . toBe ( true ) ;
1862+ expect ( notOnlyBulkRes . data . count ) . toBe ( publicOrders . length ) ;
1863+ expect ( notOnlyBulkRes . data . orders ) . toBeDefined ( ) ;
1864+ expect ( Array . isArray ( notOnlyBulkRes . data . orders ) ) . toBe ( true ) ;
1865+ notOnlyBulkRes . data . orders . forEach ( ( e ) => {
1866+ if (
1867+ e . order . volume >= Number . MAX_SAFE_INTEGER &&
1868+ e . order . datasetprice === 0
1869+ ) {
1870+ expect ( e . bulk ) . toBe ( true ) ;
1871+ } else {
1872+ expect ( e . bulk ) . toBe ( false ) ;
1873+ }
1874+ } ) ;
1875+ } ) ;
1876+
18061877 test ( 'GET /datasetorders (isAppStrict = true & app = undefined): should return public orders including "any" app' , async ( ) => {
18071878 const result = await request
18081879 . get (
0 commit comments