Initial commit: Complete Shopify Price Updater implementation
- Full Node.js application with Shopify GraphQL API integration - Compare At price support for promotional pricing - Comprehensive error handling and retry logic - Progress tracking with markdown logging - Complete test suite with unit and integration tests - Production-ready with proper exit codes and signal handling
This commit is contained in:
61
test-additional-price-cases.js
Normal file
61
test-additional-price-cases.js
Normal file
@@ -0,0 +1,61 @@
|
||||
// Additional edge case tests for price utilities
|
||||
const {
|
||||
calculateNewPrice,
|
||||
isValidPrice,
|
||||
formatPrice,
|
||||
calculatePercentageChange,
|
||||
isValidPercentage,
|
||||
} = require("./src/utils/price.js");
|
||||
|
||||
console.log("Testing Additional Edge Cases...\n");
|
||||
|
||||
// Test very small prices
|
||||
console.log("=== Testing Small Prices ===");
|
||||
console.log("1% increase on $0.01:", calculateNewPrice(0.01, 1)); // Should be 0.01
|
||||
console.log("50% increase on $0.02:", calculateNewPrice(0.02, 50)); // Should be 0.03
|
||||
|
||||
// Test large prices
|
||||
console.log("\n=== Testing Large Prices ===");
|
||||
console.log("10% increase on $9999.99:", calculateNewPrice(9999.99, 10)); // Should be 10999.99
|
||||
|
||||
// Test decimal percentages
|
||||
console.log("\n=== Testing Decimal Percentages ===");
|
||||
console.log("0.5% increase on $100:", calculateNewPrice(100, 0.5)); // Should be 100.50
|
||||
console.log("2.75% decrease on $80:", calculateNewPrice(80, -2.75)); // Should be 77.80
|
||||
|
||||
// Test rounding edge cases
|
||||
console.log("\n=== Testing Rounding Edge Cases ===");
|
||||
console.log("33.33% increase on $3:", calculateNewPrice(3, 33.33)); // Should round properly
|
||||
console.log("Formatting 99.999:", formatPrice(99.999)); // Should be "100.00" due to rounding
|
||||
|
||||
// Test invalid inputs
|
||||
console.log("\n=== Testing Invalid Inputs ===");
|
||||
try {
|
||||
calculateNewPrice(null, 10);
|
||||
} catch (error) {
|
||||
console.log("✓ Null price error:", error.message);
|
||||
}
|
||||
|
||||
try {
|
||||
calculateNewPrice(100, null);
|
||||
} catch (error) {
|
||||
console.log("✓ Null percentage error:", error.message);
|
||||
}
|
||||
|
||||
try {
|
||||
calculateNewPrice(100, Infinity);
|
||||
} catch (error) {
|
||||
console.log("✓ Infinity percentage handled");
|
||||
}
|
||||
|
||||
// Test percentage change with zero
|
||||
console.log("\n=== Testing Percentage Change Edge Cases ===");
|
||||
try {
|
||||
console.log("Change from $0 to $10:", calculatePercentageChange(0, 10)); // Should be Infinity
|
||||
} catch (error) {
|
||||
console.log("Zero base price handled:", error.message);
|
||||
}
|
||||
|
||||
console.log("Change from $10 to $0:", calculatePercentageChange(10, 0)); // Should be -100
|
||||
|
||||
console.log("\n✓ Additional edge case tests completed!");
|
||||
Reference in New Issue
Block a user