84 lines
3.1 KiB
JavaScript
84 lines
3.1 KiB
JavaScript
/**
|
|
* Node.js script to verify i18n translations for MyBookingsBook component
|
|
* Run with: node test/i18n-verify.js
|
|
*/
|
|
import { readFileSync } from 'fs';
|
|
import { fileURLToPath } from 'url';
|
|
import { dirname, join } from 'path';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
const enPath = join(__dirname, '../src/i18n/locales/en.json');
|
|
const daPath = join(__dirname, '../src/i18n/locales/da.json');
|
|
|
|
const en = JSON.parse(readFileSync(enPath, 'utf-8'));
|
|
const da = JSON.parse(readFileSync(daPath, 'utf-8'));
|
|
|
|
const bookingKeys = [
|
|
'guest_mode_warning', 'guest_mode_login_prompt', 'login', 'select_wash_hall',
|
|
'select_vehicle', 'is_this_your_vehicle', 'next_step_addons',
|
|
'product_selection_unavailable', 'login_for_products', 'interior_wash',
|
|
'exterior_wash', 'no_items_in_basket', 'total', 'required', 'expected_date_time',
|
|
'reference', 'po_number', 'note', 'customer_number', 'enter_customer_number',
|
|
'customer_not_found', 'pickup', 'incl_pickup', 'basket', 'step_x_of_y',
|
|
'select_a_wash_hall', 'enter_vehicle', 'select_products', 'select_date_time_customer',
|
|
'back', 'next', 'go_to_confirmation', 'missing_wash_hall', 'missing_customer_number',
|
|
'missing_valid_customer_number', 'missing_vehicle', 'missing_date', 'missing_products',
|
|
'error_copied', 'guest_info_html', 'confirm_booking'
|
|
];
|
|
|
|
const commonKeys = ['select', 'during_the_day', 'approx', 'thank_you', 'booking_created',
|
|
'unknown_error', 'error_creating_booking', 'try_again', 'copy_error', 'cancel', 'close', 'confirm'];
|
|
|
|
let allPassed = true;
|
|
|
|
console.log('=== i18n Translation Verification ===\n');
|
|
|
|
// Check EN booking keys
|
|
const enBook = en.user_dashboard?.bookings?.book || {};
|
|
const enBookMissing = bookingKeys.filter(k => !enBook[k]);
|
|
if (enBookMissing.length > 0) {
|
|
console.log('❌ EN booking keys missing:', enBookMissing);
|
|
allPassed = false;
|
|
} else {
|
|
console.log('✅ EN booking keys: All', bookingKeys.length, 'keys present');
|
|
}
|
|
|
|
// Check DA booking keys
|
|
const daBook = da.user_dashboard?.bookings?.book || {};
|
|
const daBookMissing = bookingKeys.filter(k => !daBook[k]);
|
|
if (daBookMissing.length > 0) {
|
|
console.log('❌ DA booking keys missing:', daBookMissing);
|
|
allPassed = false;
|
|
} else {
|
|
console.log('✅ DA booking keys: All', bookingKeys.length, 'keys present');
|
|
}
|
|
|
|
// Check EN common keys
|
|
const enCommonMissing = commonKeys.filter(k => !en.common?.[k]);
|
|
if (enCommonMissing.length > 0) {
|
|
console.log('❌ EN common keys missing:', enCommonMissing);
|
|
allPassed = false;
|
|
} else {
|
|
console.log('✅ EN common keys: All', commonKeys.length, 'keys present');
|
|
}
|
|
|
|
// Check DA common keys
|
|
const daCommonMissing = commonKeys.filter(k => !da.common?.[k]);
|
|
if (daCommonMissing.length > 0) {
|
|
console.log('❌ DA common keys missing:', daCommonMissing);
|
|
allPassed = false;
|
|
} else {
|
|
console.log('✅ DA common keys: All', commonKeys.length, 'keys present');
|
|
}
|
|
|
|
console.log('\n=== Result ===');
|
|
if (allPassed) {
|
|
console.log('✅ All translation keys are properly defined!');
|
|
process.exit(0);
|
|
} else {
|
|
console.log('❌ Some translation keys are missing!');
|
|
process.exit(1);
|
|
}
|