mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-16 18:53:18 +03:00
test(web-test): группа БольшойСписок (60 элементов) для дин-список сценариев
Справочник Номенклатура: третья группа БольшойСписок с 60 элементами (Позиция 001..060) — заведомо больше окна виртуализации (~22-30 строк). Нужна для тестов reveal-loop и hasMore.above/below на ДИНАМИЧЕСКОМ списке (до этого длинный список был только в табчасти LongDoc). Группы Товары (15) и Услуги (10) оставлены как есть — существующие тесты (05/06/12) полагаются на то, что обе помещаются в DOM-окно. 08-hierarchy и 16-tree-form обновлены под 3 группы верхнего уровня (было жёстко зашито 2): проверяют наличие всех трёх + БольшойСписок. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -322,6 +322,8 @@ export const steps = [
|
||||
Процедура ЗаполнитьНоменклатуру()
|
||||
\tГруппаТовары = СоздатьГруппуНоменклатуры("Товары");
|
||||
\tГруппаУслуги = СоздатьГруппуНоменклатуры("Услуги");
|
||||
\t// 15 товаров — для существующих тестов (05/06/08/12), которые предполагают
|
||||
\t// что обе группы помещаются в DOM-окно с развёрнутыми элементами.
|
||||
\tДля Сч = 1 По 15 Цикл
|
||||
\t\tЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
|
||||
\t\tЭлемент.Родитель = ГруппаТовары;
|
||||
@@ -342,6 +344,20 @@ export const steps = [
|
||||
\t\tЭлемент.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Услуга;
|
||||
\t\tЭлемент.Записать();
|
||||
\tКонецЦикла;
|
||||
\t// Третья группа БольшойСписок с 60 элементами — заведомо больше окна
|
||||
\t// виртуализации (~22-30 строк), для тестов reveal-loop и hasMore.above
|
||||
\t// на динамическом списке. Существующие тесты её не трогают.
|
||||
\tГруппаБольшойСписок = СоздатьГруппуНоменклатуры("БольшойСписок");
|
||||
\tДля Сч = 1 По 60 Цикл
|
||||
\t\tЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
|
||||
\t\tЭлемент.Родитель = ГруппаБольшойСписок;
|
||||
\t\tЭлемент.Наименование = "Позиция " + Формат(Сч, "ЧЦ=3; ЧВН=");
|
||||
\t\tЭлемент.Артикул = "P" + Формат(Сч, "ЧЦ=5; ЧВН=");
|
||||
\t\tЭлемент.Цена = 10 * Сч;
|
||||
\t\tЭлемент.Активен = Истина;
|
||||
\t\tЭлемент.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар;
|
||||
\t\tЭлемент.Записать();
|
||||
\tКонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СоздатьГруппуНоменклатуры(Имя)
|
||||
|
||||
@@ -20,11 +20,12 @@ export default async function({ navigateSection, openCommand, clickElement, clos
|
||||
await step('read-groups: иерархический список возвращает группы верхнего уровня', async () => {
|
||||
const t = await readTable();
|
||||
log(`total=${t.total} rows=${t.rows?.length} viewMode=${t.viewMode}`);
|
||||
assert.equal(t.total, 2, 'видны только две группы верхнего уровня');
|
||||
assert.equal(t.total, 3, 'три группы верхнего уровня (Товары, Услуги, БольшойСписок)');
|
||||
assert.ok(t.rows.every(r => r._kind === 'group'), 'все строки — группы (_kind=group)');
|
||||
const names = t.rows.map(r => r['Наименование']);
|
||||
assert.includes(names, 'Товары', 'есть группа Товары');
|
||||
assert.includes(names, 'Услуги', 'есть группа Услуги');
|
||||
assert.includes(names, 'БольшойСписок', 'есть группа БольшойСписок');
|
||||
});
|
||||
|
||||
await step('group-expand: clickElement({expand}) раскрывает группу и показывает элементы', async () => {
|
||||
@@ -55,8 +56,8 @@ export default async function({ navigateSection, openCommand, clickElement, clos
|
||||
await step('read-tree: readTable в режиме Дерево возвращает _tree состояния', async () => {
|
||||
const t = await readTable();
|
||||
log(`tree rows: ${t.rows?.map(r => `${r['Наименование']}:${r._tree}`).join(' | ')}`);
|
||||
const groupRows = t.rows.filter(r => /^(Товары|Услуги)$/.test(r['Наименование'] || ''));
|
||||
assert.equal(groupRows.length, 2, 'обе группы видны в дереве');
|
||||
const groupRows = t.rows.filter(r => /^(Товары|Услуги|БольшойСписок)$/.test(r['Наименование'] || ''));
|
||||
assert.equal(groupRows.length, 3, 'все три группы видны в дереве');
|
||||
assert.ok(groupRows.every(r => r._tree === 'collapsed' || r._tree === 'expanded'),
|
||||
'_tree присутствует у каждой группы (collapsed или expanded)');
|
||||
});
|
||||
|
||||
@@ -17,15 +17,16 @@ export default async function({ navigateLink, clickElement, closeForm, readTable
|
||||
assert.ok(r.tables?.some(t => t.name === 'Дерево'), 'таблица Дерево присутствует');
|
||||
});
|
||||
|
||||
await step('read-roots: на верхнем уровне видны 2 группы (Товары, Услуги)', async () => {
|
||||
await step('read-roots: на верхнем уровне видны группы (Товары, Услуги, БольшойСписок)', async () => {
|
||||
const t = await readTable('Дерево');
|
||||
log(`columns=${t.columns?.join(',')} rows=${t.rows?.length}`);
|
||||
assert.deepEqual(t.columns, ['Номенклатура', 'Цена'], 'колонки: Номенклатура + Цена');
|
||||
assert.equal(t.rows.length, 2, '2 корневые строки');
|
||||
assert.equal(t.rows.length, 3, '3 корневые строки');
|
||||
const names = t.rows.map(r => r['Номенклатура']);
|
||||
assert.includes(names, 'Товары', 'есть Товары');
|
||||
assert.includes(names, 'Услуги', 'есть Услуги');
|
||||
assert.ok(t.rows.every(r => r._kind === 'group'), 'обе корневые — group (есть expand-стрелка)');
|
||||
assert.includes(names, 'БольшойСписок', 'есть БольшойСписок');
|
||||
assert.ok(t.rows.every(r => r._kind === 'group'), 'все корневые — group (есть expand-стрелка)');
|
||||
});
|
||||
|
||||
await step('expand: clickElement({expand}) раскрывает Товары — 15 элементов', async () => {
|
||||
|
||||
Reference in New Issue
Block a user