63 lines
2.1 KiB
JavaScript
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, []);
|
|
});
|