75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import { test } from 'node:test';
|
|
import {
|
|
canCreateDesc,
|
|
missingCreateDesc,
|
|
missingCreateDescLabels,
|
|
} from './createDescGate';
|
|
|
|
const full = {
|
|
contentLlmEnabled: true,
|
|
title: 'Figured Walnut Live Edge Slab',
|
|
shortDescription: 'Figured Walnut Live Edge Slab, 9ft …',
|
|
speciesId: 11,
|
|
woodCategoryIds: [21],
|
|
primaryCatId: 21,
|
|
edgeTermId: '321',
|
|
figureTermIds: [328],
|
|
gradeTermId: 342,
|
|
moistureTermId: '326',
|
|
};
|
|
|
|
test('Create desc gate: full set passes; does not require description', () => {
|
|
assert.equal(canCreateDesc(full), true);
|
|
assert.deepEqual(missingCreateDesc(full), []);
|
|
});
|
|
|
|
test('Create desc gate: empty price still passes when other fields full', () => {
|
|
// Price is publish-only; Create desc must not gate on it.
|
|
assert.equal(canCreateDesc(full), true);
|
|
assert.deepEqual(missingCreateDesc(full), []);
|
|
});
|
|
|
|
test('Create desc gate: lists each missing field; no description or price key', () => {
|
|
const miss = missingCreateDesc({
|
|
...full,
|
|
contentLlmEnabled: false,
|
|
title: '',
|
|
shortDescription: ' ',
|
|
speciesId: null,
|
|
woodCategoryIds: [],
|
|
primaryCatId: '',
|
|
edgeTermId: '',
|
|
figureTermIds: [],
|
|
gradeTermId: '',
|
|
moistureTermId: '',
|
|
});
|
|
assert.deepEqual(miss, [
|
|
'content_llm',
|
|
'title',
|
|
'short_description',
|
|
'species',
|
|
'wood_categories',
|
|
'primary',
|
|
'edge',
|
|
'figure',
|
|
'grade',
|
|
'moisture',
|
|
]);
|
|
assert.equal(miss.includes('description'), false);
|
|
assert.equal(miss.includes('price'), false);
|
|
const labels = missingCreateDescLabels({
|
|
...full,
|
|
figureTermIds: [],
|
|
});
|
|
assert.ok(labels.includes('≥1 figure'));
|
|
assert.equal(labels.includes('price'), false);
|
|
});
|
|
|
|
test('Create desc gate: recomputes on field change (reactive-ready)', () => {
|
|
assert.equal(canCreateDesc({ ...full, figureTermIds: [] }), false);
|
|
assert.equal(canCreateDesc({ ...full, figureTermIds: [1] }), true);
|
|
assert.equal(canCreateDesc({ ...full, moistureTermId: '' }), false);
|
|
assert.equal(canCreateDesc({ ...full, moistureTermId: 326 }), true);
|
|
});
|