// build-epf.test.mjs — Integration test: build an external data processor (EPF) from scratch // Steps: epf-init → form-add → form-compile → template-add → mxl-compile → epf-validate export const name = 'Сборка внешней обработки с нуля'; export const setup = 'none'; export const steps = [ // ── 1. Init empty EPF ── { name: 'epf-init: пустая обработка ТестоваяОбработка', script: 'epf-init/scripts/init', args: { '-Name': 'ТестоваяОбработка', '-SrcDir': '{workDir}' }, validate: { script: 'epf-validate/scripts/epf-validate', flag: '-ObjectPath', path: 'ТестоваяОбработка' }, }, // ── 2. Add form ── { name: 'form-add: Форма к ТестоваяОбработка', script: 'form-add/scripts/form-add', args: { '-ObjectPath': '{workDir}/ТестоваяОбработка.xml', '-FormName': 'Форма' }, validate: { script: 'epf-validate/scripts/epf-validate', flag: '-ObjectPath', path: 'ТестоваяОбработка' }, }, // ── 3. Compile form ── { name: 'form-compile: Форма с заголовком и полями ввода', script: 'form-compile/scripts/form-compile', input: { title: 'Тестовая обработка', attributes: [ { name: 'Объект', type: 'DataProcessorObject.ТестоваяОбработка', main: true }, { name: 'Наименование', type: 'String' }, { name: 'Количество', type: 'Number' }, ], elements: [ { input: 'Наименование', path: 'Наименование', title: 'Наименование' }, { input: 'Количество', path: 'Количество', title: 'Количество' }, ], }, args: { '-JsonPath': '{inputFile}', '-OutputPath': '{workDir}/ТестоваяОбработка/Forms/Форма/Ext/Form.xml', }, validate: { script: 'form-validate/scripts/form-validate', flag: '-FormPath', path: 'ТестоваяОбработка/Forms/Форма/Ext/Form.xml', }, }, // ── 4. Add spreadsheet template ── { name: 'template-add: Макет к ТестоваяОбработка', script: 'template-add/scripts/add-template', args: { '-ObjectName': 'ТестоваяОбработка', '-TemplateName': 'Макет', '-TemplateType': 'SpreadsheetDocument', '-SrcDir': '{workDir}', }, }, // ── 5. Compile MXL template ── { name: 'mxl-compile: простой макет с двумя областями', script: 'mxl-compile/scripts/mxl-compile', input: { columns: 3, defaultWidth: 40, areas: [ { name: 'Шапка', rows: [ { cells: [ { col: 1, span: 3, text: 'Заголовок документа' }, ]}, ], }, { name: 'Строка', rows: [ { cells: [ { col: 1, param: 'НомерСтроки' }, { col: 2, param: 'Наименование' }, { col: 3, param: 'Сумма' }, ]}, ], }, ], }, args: { '-JsonPath': '{inputFile}', '-OutputPath': '{workDir}/ТестоваяОбработка/Templates/Макет/Ext/Template.xml', }, validate: { script: 'mxl-validate/scripts/mxl-validate', flag: '-TemplatePath', path: 'ТестоваяОбработка/Templates/Макет/Ext/Template.xml', }, }, // ── 6. Final validation ── { name: 'epf-validate: Финальная валидация обработки', script: 'epf-validate/scripts/epf-validate', args: { '-ObjectPath': '{workDir}/ТестоваяОбработка' }, }, ];