← 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);
});