Files
pulse-signage/test/users-form-view-model.test.js
lzstealth 203d0bfc01
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m49s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 32s
Release 2.8.0
2026-08-16 17:15:31 +01:00

37 lines
1.9 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const { buildUsersEditViewModel, buildUsersAddViewModel } = require('../src/web/routes/settings/users/form-view-model');
const usersFormTemplate = fs.readFileSync(require.resolve('../src/web/views/settings/users/form.hbs'), 'utf8');
test('user edit view model includes delete confirmation text', () => {
const model = buildUsersEditViewModel({ id: 12, inUse: false, roleIds: [] }, 'Saved.', { id: 1 }, []);
assert.equal(model.footerDeleteUrl, '/settings/users/12/delete');
assert.equal(model.footerDeleteConfirmMessage, 'Delete this user?');
assert.equal(model.footerDeleteDisabled, false);
assert.equal(model.showSaveSecondaryActions, true);
assert.equal(model.formAttrs, 'data-async-save data-async-save-close-url="/settings/users" data-async-save-new-url="/settings/users/new"');
});
test('user add view model keeps delete disabled without a confirm message', () => {
const model = buildUsersAddViewModel('Saved.', { id: 1 }, [], { name: 'New User', username: 'newuser' }, 'primary');
assert.equal(model.footerDeleteDisabled, true);
assert.equal(model.footerDeleteUrl, '');
assert.equal(model.footerDeleteConfirmMessage, undefined);
assert.equal(model.formAttrs, 'data-async-save data-async-save-close-url="/settings/users" data-async-save-new-redirect="response-url" data-async-save-new-url="/settings/users/new"');
});
test('user add view model uses success messaging for redirected saves', () => {
const model = buildUsersAddViewModel('User created.', { id: 1 }, [], { name: 'New User', username: 'newuser' });
assert.equal(model.messageVariant, 'success');
});
test('user form keeps username editable in the admin section', () => {
assert.ok(usersFormTemplate.includes('name="username"'));
assert.ok(!usersFormTemplate.includes('{{#if isEdit}}disabled{{else}}required{{/if}}'));
assert.ok(usersFormTemplate.includes('required />'));
});