← back to Shopify Sample Shipping

test-8-distinct.mjs

27 lines

import {query} from './query.mjs';
import fs from 'node:fs';
// Find 8 DISTINCT sample variants (variant title "Sample", ~$4.25), from 8 different products.
let cursor=null, found=[];
const pq=`query($c:String){products(first:60,after:$c,query:"status:active"){pageInfo{hasNextPage endCursor} nodes{title variants(first:5){nodes{id title price}}}}}`;
while(found.length<8){
  const d=await query(pq,{c:cursor});
  for(const p of d.products.nodes){
    const sv=p.variants.nodes.find(v=>/^sample$/i.test(v.title) && parseFloat(v.price)>0);
    if(sv){ found.push({id:sv.id, product:p.title.slice(0,42), price:sv.price}); if(found.length>=8)break; }
  }
  if(!d.products.pageInfo.hasNextPage) break;
  cursor=d.products.pageInfo.endCursor;
}
console.log(`Found ${found.length} distinct sample variants:`);
found.forEach((f,i)=>console.log(`  ${i+1}. ${f.product} — $${f.price}`));
const subtotal=found.reduce((a,f)=>a+parseFloat(f.price),0).toFixed(2);
// Quote 8 distinct samples (1 each)
const items=found.map(f=>({variantId:f.id,quantity:1}));
const rq=`query($items:[DraftOrderLineItemInput!]!){draftOrderAvailableDeliveryOptions(input:{lineItems:$items,shippingAddress:{address1:"15442 Ventura Blvd",city:"Sherman Oaks",provinceCode:"CA",countryCode:US,zip:"91403"}}){availableShippingRates{title price{amount currencyCode}}}}`;
const rates=(await query(rq,{items})).draftOrderAvailableDeliveryOptions.availableShippingRates;
const free=rates.some(x=>parseFloat(x.price.amount)===0);
const cheapest=rates.filter(x=>parseFloat(x.price.amount)>0).sort((a,b)=>parseFloat(a.price.amount)-parseFloat(b.price.amount))[0];
console.log(`\n8 DISTINCT samples, subtotal $${subtotal} (8 units):`);
console.log(`  free offered? ${free?'YES ✅':'NO ❌'}  | cheapest paid = ${cheapest?cheapest.title+' $'+cheapest.price.amount:'n/a'}`);
fs.writeFileSync(new URL('./verification/test-8-distinct.json',import.meta.url),JSON.stringify({found,subtotal,rates},null,2)+'\n');