← back to All Designerwallcoverings
test/vendor-host.test.js
35 lines
'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const { buildVendorHostMap, vendorHostContext, vendorRootFile } = require('../lib/vendor-host');
const hosts = buildVendorHostMap([{ name: 'Farrow & Ball' }, { name: 'Astek' }], []);
test('public and internal twins resolve to the same unified vendor', () => {
assert.deepEqual(vendorHostContext('farrow-and-ball.designerwallcoverings.com', hosts), {
vendor: 'Farrow & Ball', slug: 'farrow-and-ball', internal: false,
host: 'farrow-and-ball.designerwallcoverings.com',
});
assert.equal(vendorHostContext('farrow-and-ball-internal.designerwallcoverings.com', hosts).vendor, 'Farrow & Ball');
assert.equal(vendorHostContext('farrow-and-ball-internal.designerwallcoverings.com', hosts).internal, true);
});
test('unknown wildcard hosts are explicit non-vendors', () => {
const ctx = vendorHostContext('not-a-real-vendor.designerwallcoverings.com', hosts);
assert.equal(ctx.vendor, null);
});
test('all.dw remains outside vendor fallback routing', () => {
assert.equal(vendorHostContext('all.designerwallcoverings.com', hosts), null);
});
test('internal vendor roots use the shared full catalog build', () => {
const internal = vendorHostContext('astek-internal.designerwallcoverings.com', hosts);
const publicSite = vendorHostContext('astek.designerwallcoverings.com', hosts);
assert.equal(vendorRootFile(internal, '/'), '/vendor-internal.html');
assert.equal(vendorRootFile(internal, '/index.html'), '/vendor-internal.html');
assert.equal(vendorRootFile(internal, '/api/products'), null);
assert.equal(vendorRootFile(publicSite, '/'), null);
});