98 lines
4 KiB
JavaScript
98 lines
4 KiB
JavaScript
// Test suite for ODOP, GI Tag, and Sustainable Product slabs
|
|
import assert from 'assert';
|
|
|
|
console.log('--- Running Frontend Initiatives Test Suite ---');
|
|
|
|
// Test 1: Sample CSV Headers Validation
|
|
function testSampleCsvHeaders() {
|
|
const expectedHeaders = [
|
|
'Title', 'SKU', 'Category', 'Price', 'MRP', 'Stock', 'Description',
|
|
'ODOP_Product', 'ODOP_District', 'GI_Tagged', 'GI_Tag_Name',
|
|
'Sustainable_Product', 'Sustainable_Type', 'Package_Weight_Kg',
|
|
'Shipping_Profile', 'Image_URL', 'Additional_Images', 'Video_URL'
|
|
];
|
|
|
|
const headersStr = 'Title,SKU,Category,Price,MRP,Stock,Description,ODOP_Product,ODOP_District,GI_Tagged,GI_Tag_Name,Sustainable_Product,Sustainable_Type,Package_Weight_Kg,Shipping_Profile,Image_URL,Additional_Images,Video_URL';
|
|
const parsedHeaders = headersStr.split(',');
|
|
|
|
assert.strictEqual(parsedHeaders.length, 18, 'Template should contain all 18 headers');
|
|
expectedHeaders.forEach(h => {
|
|
assert.ok(parsedHeaders.includes(h), `Header ${h} must be present in sample CSV`);
|
|
});
|
|
console.log('✓ Test 1 Passed: Sample CSV template contains all 18 mandatory & initiative columns');
|
|
}
|
|
|
|
// Test 2: Payload Construction for Individual Product Upload
|
|
function testIndividualUploadPayload() {
|
|
const formState = {
|
|
title: 'Kanchipuram Silk Saree',
|
|
sku: 'TRDX-KSS-001',
|
|
category: 'Clothing & Textiles',
|
|
price: 6500,
|
|
mrp: 8500,
|
|
stock: 12,
|
|
isOdop: true,
|
|
odopDistrict: 'Kanchipuram, Tamil Nadu',
|
|
giTagged: true,
|
|
giTagName: 'Kancheepuram Silk (GI-12)',
|
|
isSustainable: true,
|
|
sustainableType: '100% Biodegradable & Natural Fibers'
|
|
};
|
|
|
|
const payload = {
|
|
title: formState.title,
|
|
sku: formState.sku,
|
|
category: formState.category,
|
|
price: formState.price,
|
|
mrp: formState.mrp,
|
|
stock: formState.stock,
|
|
is_odop: formState.isOdop,
|
|
odop_district: formState.isOdop ? formState.odopDistrict.trim() : '',
|
|
is_gi_tagged: formState.giTagged,
|
|
gi_tag_name: formState.giTagged ? formState.giTagName.trim() : '',
|
|
is_sustainable: formState.isSustainable,
|
|
sustainable_type: formState.isSustainable ? formState.sustainableType.trim() : ''
|
|
};
|
|
|
|
assert.strictEqual(payload.is_odop, true);
|
|
assert.strictEqual(payload.odop_district, 'Kanchipuram, Tamil Nadu');
|
|
assert.strictEqual(payload.is_gi_tagged, true);
|
|
assert.strictEqual(payload.gi_tag_name, 'Kancheepuram Silk (GI-12)');
|
|
assert.strictEqual(payload.is_sustainable, true);
|
|
assert.strictEqual(payload.sustainable_type, '100% Biodegradable & Natural Fibers');
|
|
console.log('✓ Test 2 Passed: Individual product payload correctly formats initiative flags and text fields');
|
|
}
|
|
|
|
// Test 3: Disabled Initiatives Clear Sub-Fields
|
|
function testDisabledInitiativesSanitization() {
|
|
const formState = {
|
|
isOdop: false,
|
|
odopDistrict: 'Stale District',
|
|
giTagged: false,
|
|
giTagName: 'Stale Tag',
|
|
isSustainable: false,
|
|
sustainableType: 'Stale Type'
|
|
};
|
|
|
|
const payload = {
|
|
is_odop: formState.isOdop,
|
|
odop_district: formState.isOdop ? formState.odopDistrict.trim() : '',
|
|
is_gi_tagged: formState.giTagged,
|
|
gi_tag_name: formState.giTagged ? formState.giTagName.trim() : '',
|
|
is_sustainable: formState.isSustainable,
|
|
sustainable_type: formState.isSustainable ? formState.sustainableType.trim() : ''
|
|
};
|
|
|
|
assert.strictEqual(payload.is_odop, false);
|
|
assert.strictEqual(payload.odop_district, '', 'District must be empty when ODOP is disabled');
|
|
assert.strictEqual(payload.is_gi_tagged, false);
|
|
assert.strictEqual(payload.gi_tag_name, '', 'GI Tag name must be empty when GI is disabled');
|
|
assert.strictEqual(payload.is_sustainable, false);
|
|
assert.strictEqual(payload.sustainable_type, '', 'Sustainability type must be empty when sustainable is disabled');
|
|
console.log('✓ Test 3 Passed: Toggling flags off cleanly resets associated sub-attributes');
|
|
}
|
|
|
|
testSampleCsvHeaders();
|
|
testIndividualUploadPayload();
|
|
testDisabledInitiativesSanitization();
|
|
console.log('--- All Frontend Initiatives Tests Passed Successfully ---');
|