Skip to main content
Glama
amazon.getProductDetails.test.ts4.59 kB
import { getProductDetails, searchProducts } from './products.js' import { USE_MOCKS } from './config.js' async function getTestASINs() { try { // Search for common products that are likely to be available const searchTerms = ['usb cable', 'notebook', 'pen']; for (const term of searchTerms) { console.log(`Searching for "${term}" to get test ASINs...`); const results = await searchProducts(term); if (results && results.length > 0) { // Find a regular product and one that might have subscribe & save const regularProduct = results.find(p => p.asin && !p.title.toLowerCase().includes('sponsored')); const subscribeProduct = results.find(p => p.asin && (p.title.toLowerCase().includes('pack') || p.title.toLowerCase().includes('count'))); return { regular: regularProduct?.asin || results[0].asin, subscribe: subscribeProduct?.asin || results[1]?.asin || results[0].asin }; } } throw new Error('Could not find any products to test with'); } catch (error) { console.error('Error getting test ASINs:', error); // Fallback to some commonly available ASINs return { regular: 'B07THHPGCV', // Common USB cable subscribe: 'B07232M876' // Common office supplies }; } } async function testGetProductDetails_regular() { console.log('\n\n--------------------------------------') console.log('Run testGetProductDetails_regular...') if (USE_MOCKS) { console.log('Using mock data - skipping dynamic ASIN lookup'); const testAsin = 'B0F2255HFW'; try { const result = await getProductDetails(testAsin); console.log('✅ Mock test passed'); return; } catch (error) { console.error('❌ Mock test failed:', error); return; } } try { const asins = await getTestASINs(); const testAsin = asins.regular; console.log(`Testing getProductDetails with ASIN: ${testAsin}`) const result = await getProductDetails(testAsin) console.log('Result data:') console.log(JSON.stringify(result.data, null, 2)) // Basic validation if (result.data.asin === testAsin && result.data.title && result.data.price) { console.log('✅ Test passed: Product details successfully retrieved') console.log(` Title: ${result.data.title}`) console.log(` Price: ${result.data.price}`) console.log(` Reviews: ${result.data.reviews.averageRating || 'N/A'} (${result.data.reviews.reviewsCount || '0'} reviews)`) } else { console.log('❌ Test failed: Missing required product data') } } catch (error) { console.error('❌ Test failed with error:', error) } } async function testGetProductDetails_subscribeAndSave() { console.log('\n\n--------------------------------------') console.log('Run testGetProductDetails_subscribeAndSave...') if (USE_MOCKS) { console.log('Using mock data - skipping dynamic ASIN lookup'); return; } try { const asins = await getTestASINs(); const testAsin = asins.subscribe; console.log(`Testing getProductDetails with ASIN: ${testAsin}`) const result = await getProductDetails(testAsin) console.log('Result data:') console.log(JSON.stringify(result.data, null, 2)) // Basic validation if (result.data.asin === testAsin && result.data.title && result.data.price) { console.log('✅ Test passed: Product details successfully retrieved') console.log(` Title: ${result.data.title}`) console.log(` Price: ${result.data.price}`) console.log(` Subscribe & Save available: ${result.data.canUseSubscribeAndSave}`) } else { console.log('❌ Test failed: Missing required product data') } } catch (error) { console.error('❌ Test failed with error:', error) } } async function testInvalidAsin() { console.log('\n\n--------------------------------------') console.log('Run testInvalidAsin...') try { console.log('\nTesting getProductDetails with invalid ASIN...') await getProductDetails('INVALID') console.log('❌ Test failed: Should have thrown an error for invalid ASIN') } catch (error: any) { console.log('✅ Test passed: Correctly rejected invalid ASIN') console.log(` Error: ${error.message}`) } } async function main() { console.log('Running getProductDetails tests...\n') await testGetProductDetails_regular() await testGetProductDetails_subscribeAndSave() await testInvalidAsin() console.log('\nTests completed.') } main().catch(console.error)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/drahmad89/amazon-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server