Initial commit
This commit is contained in:
184
test-utils.js
Normal file
184
test-utils.js
Normal file
@@ -0,0 +1,184 @@
|
||||
/**
|
||||
* Test utilities for Kitchen Agent
|
||||
* Use these functions to manually test the system
|
||||
*/
|
||||
|
||||
const database = require('./database');
|
||||
|
||||
// Initialize database first
|
||||
database.init();
|
||||
|
||||
/**
|
||||
* Insert a mock order for testing UI
|
||||
*/
|
||||
function insertMockOrder(orderId = null) {
|
||||
const id = orderId || Math.floor(Math.random() * 10000);
|
||||
const now = Math.floor(Date.now() / 1000);
|
||||
|
||||
const mockOrder = {
|
||||
id: id,
|
||||
botId: 1,
|
||||
orderStatus: 'new',
|
||||
order: {
|
||||
type: Math.random() > 0.5 ? 'delivery' : 'pickup',
|
||||
items: [
|
||||
{
|
||||
id: 1,
|
||||
itemName: 'Cheeseburger',
|
||||
qty: 2,
|
||||
price: 12.99,
|
||||
addons: [{ name: 'Extra Cheese', price: 1.00 }],
|
||||
exclude: [{ name: 'Onions', price: 0 }]
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
itemName: 'French Fries',
|
||||
qty: 1,
|
||||
price: 4.99,
|
||||
addons: [],
|
||||
exclude: []
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
itemName: 'Coca-Cola',
|
||||
qty: 2,
|
||||
price: 2.50,
|
||||
addons: [],
|
||||
exclude: []
|
||||
}
|
||||
],
|
||||
amount: 35.97,
|
||||
taxRate: 8.5,
|
||||
taxAmount: 3.06,
|
||||
deliveryFee: 5.00,
|
||||
totalAmount: 44.03,
|
||||
deliveryAddress: '123 Main Street, Anytown, USA 12345',
|
||||
deliveryInstructions: 'Ring doorbell, leave at door',
|
||||
specialInstructions: 'Extra napkins please, no ketchup',
|
||||
foodAllergy: Math.random() > 0.7,
|
||||
foodAllergyNotes: 'Severe peanut allergy - please ensure no cross-contamination'
|
||||
},
|
||||
customer: {
|
||||
id: 1,
|
||||
name: 'John Doe',
|
||||
phoneNumber: '+15551234567',
|
||||
email: 'john.doe@example.com'
|
||||
},
|
||||
totalAmount: 44.03,
|
||||
createdAt: now,
|
||||
updatedAt: now
|
||||
};
|
||||
|
||||
try {
|
||||
database.insertOrder(mockOrder);
|
||||
console.log(`✓ Mock order #${id} inserted successfully`);
|
||||
return mockOrder;
|
||||
} catch (error) {
|
||||
console.error('Failed to insert mock order:', error.message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert multiple mock orders
|
||||
*/
|
||||
function insertMultipleMockOrders(count = 5) {
|
||||
console.log(`Inserting ${count} mock orders...`);
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
const baseId = 10000 + i;
|
||||
insertMockOrder(baseId);
|
||||
}
|
||||
|
||||
console.log(`✓ ${count} mock orders inserted`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all orders from database (for testing)
|
||||
*/
|
||||
function clearAllOrders() {
|
||||
try {
|
||||
database.db.exec('DELETE FROM orders');
|
||||
database.db.exec('DELETE FROM print_queue');
|
||||
console.log('✓ All orders cleared');
|
||||
} catch (error) {
|
||||
console.error('Failed to clear orders:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* View current configuration
|
||||
*/
|
||||
function viewConfig() {
|
||||
const config = database.getConfig();
|
||||
console.log('\nCurrent Configuration:');
|
||||
console.log('=====================');
|
||||
for (const [key, value] of Object.entries(config)) {
|
||||
if (key === 'authToken' && value) {
|
||||
console.log(`${key}: [ENCRYPTED]`);
|
||||
} else {
|
||||
console.log(`${key}: ${value}`);
|
||||
}
|
||||
}
|
||||
console.log('=====================\n');
|
||||
}
|
||||
|
||||
/**
|
||||
* View order statistics
|
||||
*/
|
||||
function viewStats() {
|
||||
const stats = database.getOrderStats();
|
||||
console.log('\nOrder Statistics:');
|
||||
console.log('=================');
|
||||
console.log(`Total Today: ${stats.total}`);
|
||||
console.log(`New: ${stats.new}`);
|
||||
console.log(`Preparing: ${stats.preparing}`);
|
||||
console.log(`Ready: ${stats.ready}`);
|
||||
console.log('=================\n');
|
||||
}
|
||||
|
||||
/**
|
||||
* List all orders
|
||||
*/
|
||||
function listOrders(limit = 10) {
|
||||
const orders = database.getOrders({ limit });
|
||||
console.log(`\nRecent Orders (${orders.length}):`);
|
||||
console.log('===================');
|
||||
|
||||
orders.forEach(order => {
|
||||
console.log(`#${order.id} | ${order.customer.name} | ${order.localStatus} | $${order.totalAmount.toFixed(2)}`);
|
||||
});
|
||||
|
||||
console.log('===================\n');
|
||||
}
|
||||
|
||||
// Export functions
|
||||
module.exports = {
|
||||
insertMockOrder,
|
||||
insertMultipleMockOrders,
|
||||
clearAllOrders,
|
||||
viewConfig,
|
||||
viewStats,
|
||||
listOrders
|
||||
};
|
||||
|
||||
// If run directly, show help
|
||||
if (require.main === module) {
|
||||
console.log('\nKitchen Agent Test Utilities');
|
||||
console.log('============================\n');
|
||||
console.log('Usage:');
|
||||
console.log(' node test-utils.js\n');
|
||||
console.log('Available in Node REPL:');
|
||||
console.log(' const test = require("./test-utils");\n');
|
||||
console.log(' test.insertMockOrder(); // Insert one mock order');
|
||||
console.log(' test.insertMultipleMockOrders(5); // Insert 5 mock orders');
|
||||
console.log(' test.listOrders(); // List recent orders');
|
||||
console.log(' test.viewStats(); // View order statistics');
|
||||
console.log(' test.viewConfig(); // View configuration');
|
||||
console.log(' test.clearAllOrders(); // Clear all orders (careful!)\n');
|
||||
|
||||
// Show current stats
|
||||
viewStats();
|
||||
listOrders(5);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user