Corp/frontend/src/lib/document-acknowledgement-audience.test.js

63 lines
2.1 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import { getDocumentAcknowledgementAudience } from "./document-acknowledgement-audience.ts";
const accounting = { id: 10, name: "Бухгалтерия" };
const procurement = { id: 20, name: "Закупки" };
const employee = { id: 7, first_name: "Иван", last_name: "Иванов" };
test("company-wide badge is based on acknowledgement audience, not access alone", () => {
assert.equal(
getDocumentAcknowledgementAudience({
sent_to_all: true,
acknowledgement_required: true,
acknowledgement_for_all: false,
acknowledgement_departments: [accounting],
}).companyWide,
false,
);
});
test("acknowledgement for everyone inherits a selectively shared audience", () => {
const audience = getDocumentAcknowledgementAudience({
sent_to_all: false,
departments: [accounting],
recipients: [employee],
acknowledgement_required: true,
acknowledgement_for_all: true,
acknowledgement_departments: [procurement],
});
assert.equal(audience.companyWide, false);
assert.deepEqual(audience.departments, [accounting]);
assert.deepEqual(audience.recipients, [employee]);
});
test("selective acknowledgement ignores the broader access audience", () => {
const audience = getDocumentAcknowledgementAudience({
sent_to_all: true,
departments: [accounting],
acknowledgement_required: true,
acknowledgement_for_all: false,
acknowledgement_departments: [procurement],
acknowledgement_recipients: [employee],
});
assert.deepEqual(audience.departments, [procurement]);
assert.deepEqual(audience.recipients, [employee]);
});
test("documents without acknowledgement have no presentation audience", () => {
const audience = getDocumentAcknowledgementAudience({
sent_to_all: true,
acknowledgement_required: false,
acknowledgement_for_all: true,
});
assert.equal(audience.required, false);
assert.equal(audience.companyWide, false);
assert.deepEqual(audience.departments, []);
assert.deepEqual(audience.recipients, []);
});