чат по заявке через комментарии к строке списка (#14)
Tests / frontend-test (push) Successful in 1m15s
Tests / frontend-test (push) Successful in 1m15s
Обсуждение заявки поверх штатных комментариев SharePoint (PnPjs item.comments) — без новых колонок и провижининга, права на переписку раздаёт сам SharePoint по правам на элемент. Встроено в ApproveFeature и EditFeature (единственные входы в просмотр заявки для всех типов), поэтому доступно автору, всем согласующим (включая уже решивших и ещё не дошедших до своего шага) и исполнителям, а не только текущему шагу маршрута, как DecisionPanel. Автора комментария всегда ставит реальная учётка — отладочная подмена личности на запись в SharePoint не влияет, в UI есть предупреждение. --------- Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/14
This commit was merged in pull request #14.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import { displayFileName, fileStamp, sanitizeFileName, storedFileName } from './chatFileNames';
|
||||
|
||||
describe('sanitizeFileName', () => {
|
||||
it('заменяет запрещённые SharePoint символы', () => {
|
||||
expect(sanitizeFileName('от 24/08 №1: акт*.pdf')).toBe('от 24_08 №1_ акт_.pdf');
|
||||
});
|
||||
|
||||
it('убирает точки в конце — такое имя SharePoint не принимает', () => {
|
||||
expect(sanitizeFileName('акт...')).toBe('акт');
|
||||
});
|
||||
|
||||
it('пустое имя заменяет заглушкой, а не пустой строкой', () => {
|
||||
expect(sanitizeFileName(' ')).toBe('файл');
|
||||
});
|
||||
|
||||
it('длинное имя обрезает, сохраняя расширение', () => {
|
||||
const long = `${'я'.repeat(200)}.pdf`;
|
||||
const result = sanitizeFileName(long);
|
||||
|
||||
expect(result.length).toBeLessThanOrEqual(120);
|
||||
expect(result.endsWith('.pdf')).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('storedFileName / displayFileName', () => {
|
||||
it('складское имя разбирается обратно в исходное', () => {
|
||||
const stored = storedFileName('20260824-153012', 1, 'акт приёмки.pdf');
|
||||
|
||||
expect(stored).toBe('20260824-153012-1__акт приёмки.pdf');
|
||||
expect(displayFileName(stored)).toBe('акт приёмки.pdf');
|
||||
});
|
||||
|
||||
it('двойное подчёркивание в исходном имени не ломает разбор', () => {
|
||||
const stored = storedFileName('20260824-153012', 2, 'акт__итог.pdf');
|
||||
expect(displayFileName(stored)).toBe('акт__итог.pdf');
|
||||
});
|
||||
|
||||
it('файл, положенный в библиотеку не порталом, показывается как есть', () => {
|
||||
expect(displayFileName('справка.pdf')).toBe('справка.pdf');
|
||||
});
|
||||
|
||||
it('файлы одного сообщения получают разные имена', () => {
|
||||
const stamp = fileStamp(new Date(2026, 7, 24, 15, 30, 12));
|
||||
|
||||
expect(stamp).toBe('20260824-153012');
|
||||
expect(storedFileName(stamp, 1, 'скан.jpg')).not.toBe(storedFileName(stamp, 2, 'скан.jpg'));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user