← back to Dw Daily Catchup 20260909
test/publication-result.test.js
27 lines
'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const { confirmedPublishMutation, confirmedOnlineStore } = require('../lib/publication-result');
test('publication requires a complete successful mutation reply', () => {
assert.equal(confirmedPublishMutation({ status: 200, json: { data: { publishablePublish: { userErrors: [] } } } }), true);
for (const r of [null, {}, { status: 200, json: null }, { status: 200, json: {} },
{ status: 429, json: { data: { publishablePublish: { userErrors: [] } } } },
{ status: 200, json: { errors: [{ message: 'THROTTLED' }] } },
{ status: 200, json: { data: { publishablePublish: { userErrors: [{ message: 'not allowed' }] } } } },
{ status: 200, json: { data: { publishablePublish: {} } } }])
assert.equal(confirmedPublishMutation(r), false);
});
test('publication additionally requires an independent current Online Store read', () => {
const good = { status: 200, json: { data: { product: { id: 'p1', onStore: true } } } };
assert.equal(confirmedOnlineStore(good, 'p1'), true);
assert.equal(confirmedOnlineStore(good, 'p2'), false);
for (const r of [null, {}, { status: 200, json: null }, { status: 200, json: {} },
{ status: 200, json: { data: { product: null } } },
{ status: 200, json: { data: { product: { id: 'p1', onStore: false } } } },
{ status: 500, json: good.json },
{ status: 200, json: { ...good.json, errors: [{ message: 'access denied' }] } }])
assert.equal(confirmedOnlineStore(r, 'p1'), false);
});