supplier_central_frontend/scripts/test_initiatives_validation.js
vickytechkey 16001efbd8
All checks were successful
Beta CI/CD Pipeline / build-and-test (push) Successful in 1m44s
Beta CI/CD Pipeline / deploy-beta (push) Successful in 48s
feat: implement SellerContext and dashboard pages for product management and bulk upload
2026-11-08 16:37:43 +05:30

111 lines
5.1 KiB
JavaScript

// Test suite for ODOP, GI Tag, Sustainable Product, Geographical Provenance, and Statutory Certifications
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',
'Geographical_Origin', 'Statutory_Certifications', 'Provenance_Story', 'Coordinates',
'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,Geographical_Origin,Statutory_Certifications,Provenance_Story,Coordinates,Package_Weight_Kg,Shipping_Profile,Image_URL,Additional_Images,Video_URL';
const parsedHeaders = headersStr.split(',');
assert.strictEqual(parsedHeaders.length, 22, 'Template should contain all 22 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 22 mandatory, initiative, provenance & certification 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',
geographicalOrigin: 'Kanchipuram, Tamil Nadu, India',
statutoryCertifications: 'GI Tag #26 Act (1999) Registered; Silk Mark Certified',
provenanceStory: 'Handcrafted by master weavers of Kanchipuram using pit-loom Korvai technique.',
coordinates: '12.8342° N, 79.7036° E'
};
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() : '',
geographical_origin: formState.geographicalOrigin.trim(),
statutory_certifications: formState.statutoryCertifications.trim(),
provenance_story: formState.provenanceStory.trim(),
coordinates: formState.coordinates.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');
assert.strictEqual(payload.geographical_origin, 'Kanchipuram, Tamil Nadu, India');
assert.strictEqual(payload.statutory_certifications, 'GI Tag #26 Act (1999) Registered; Silk Mark Certified');
assert.strictEqual(payload.provenance_story, 'Handcrafted by master weavers of Kanchipuram using pit-loom Korvai technique.');
assert.strictEqual(payload.coordinates, '12.8342° N, 79.7036° E');
console.log('✓ Test 2 Passed: Individual product payload correctly formats initiative flags, provenance, and certification 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 ---');