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