diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml new file mode 100644 index 000000000..1b94bf747 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -0,0 +1,43 @@ +name: '🐞 Ошибка' +description: 'Регистрация обнаруженной ошибки' +title: '[Bug]: ' +labels: ['bug'] +body: + - type: textarea + id: description + attributes: + label: '🐞 Описание ошибки' + description: 'Опишите проблему и шаги воспроизведения' + validations: + required: true + + - type: textarea + attributes: + label: Пример кода + description: 'Код, который приводит к возникновению ошибки' + render: bsl + + - type: textarea + attributes: + label: Текст ошибки (лог) + render: txt + + - type: input + id: yaxunit-version + attributes: + label: Версия YaxUnit + + - type: input + attributes: + label: Версия 1С:Предприятие + + - type: dropdown + id: operating-systems + attributes: + label: Операционная система + multiple: true + options: + - Linux + - Windows + - Mac + - Other \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md new file mode 100644 index 000000000..9558f21f1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -0,0 +1,16 @@ +--- +name: Новая функциональность +about: Добавление новой функциональности в движок +title: '[NEW]' +assignees: '' + +--- + +## Описание сценария (кейса) использования, применения + + +## Вариант реализации новой функциональности + + +## Дополнительная информация + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..2ec88eb2c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,38 @@ +{ + "cSpell.words": [ + "валидировать", + "замокированного", + "логирвания", + "Ментейнер", + "моками", + "моки", + "Мокирование", + "мокировании", + "мокированию", + "мокирования", + "мокировать", + "мокируем", + "Мокируемый", + "мокирующий", + "Мокито", + "моков", + "Неопределено", + "Переиспользование", + "помогаторы", + "пресетов", + "Регистронезависимое", + "релизный", + "сериализацию", + "сериализуемых", + "фейкового", + "фейковых", + "фича", + "юнит", + "autonumber", + "bellerage", + "mindmap", + "Wiremock", + "XDTO", + "yaxunit" + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 2c7b724ad..db042666b 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ ---- +![report](documentation/docs/images/report-ui.png) + ## Документация [https://bia-technologies.github.io/yaxunit/](https://bia-technologies.github.io/yaxunit/) @@ -29,7 +31,12 @@ - [vanessa-automation](https://github.com/Pr-Mex/vanessa-automation/graphs/contributors) - [add](https://github.com/vanessa-opensource/add/graphs/contributors) ---- +---- + +## Использованные ресурсы + +- В продукте используется иконки из набора [IntelliJ Platform UI](https://jetbrains.design/intellij). + Copyright 2000-2023 JetBrains s.r.o. and contributors. [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0.html) ## Лицензия diff --git a/documentation/blog/2023/04/29-02-engine-release.md b/documentation/blog/2023/04/29-02-engine-release.md index 97c6c0811..e2b88942d 100644 --- a/documentation/blog/2023/04/29-02-engine-release.md +++ b/documentation/blog/2023/04/29-02-engine-release.md @@ -34,7 +34,5 @@ tags: [releases, yaxunit] * Доработан движок для работы в режиме без использования синхронных методов :::caution Внимание - В ближайших версиях будет удален вариант точки входа в тестовый модуль ИсполняемыеСценарии с параметрами. - ::: diff --git a/documentation/blog/2023/04/29-03-plugin-release.md b/documentation/blog/2023/04/29-03-plugin-release.md index d3fbfaea5..169bbf11f 100644 --- a/documentation/blog/2023/04/29-03-plugin-release.md +++ b/documentation/blog/2023/04/29-03-plugin-release.md @@ -2,7 +2,6 @@ title: EDT Test runner. Версия 23.04 authors: alkoleft tags: [releases, plugin] -image: https://github.com/bia-technologies/edt-test-runner/releases/tag/23.04 --- [Release 23.04](https://github.com/bia-technologies/edt-test-runner/releases/tag/23.04) diff --git a/documentation/blog/2023/09/05-engine-release.md b/documentation/blog/2023/09/05-engine-release.md index e03bbd1c9..f06a5f4f9 100644 --- a/documentation/blog/2023/09/05-engine-release.md +++ b/documentation/blog/2023/09/05-engine-release.md @@ -10,7 +10,7 @@ tags: [releases, yaxunit] ### Тестовые данные -* Загрузка данных из табличного документа или таблицы markdown [#133](https://github.com/bia-technologies/yaxunit/issues/133), [документация](https://bia-technologies.github.io/yaxunit/docs/user-api/test-data/#%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B8%D0%B7-%D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2). Спасибо [@dlyubanevich](https://github.com/dlyubanevich) +* Загрузка данных из табличного документа или таблицы markdown [#133](https://github.com/bia-technologies/yaxunit/issues/133), [документация](https://bia-technologies.github.io/yaxunit/docs/features/test-data/#%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B8%D0%B7-%D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2). Спасибо [@dlyubanevich](https://github.com/dlyubanevich) * Добавить возможность указывать тип фикции [#121](https://github.com/bia-technologies/yaxunit/issues/121) * Добавить возможность получать случайное значение перечисления [#132](https://github.com/bia-technologies/yaxunit/issues/132) * Тестовые данные, добавить метод СлучайныйИдентификатор [#102](https://github.com/bia-technologies/yaxunit/issues/102) diff --git a/documentation/blog/2024/02/29-engine-release.md b/documentation/blog/2024/02/29-engine-release.md index e7926f2c3..ecd7b2801 100644 --- a/documentation/blog/2024/02/29-engine-release.md +++ b/documentation/blog/2024/02/29-engine-release.md @@ -24,7 +24,7 @@ tags: [releases, yaxunit] ### Запуск -* Добавить запуск выделенных тестов в обработке запуска тестов по Ctrl+Enter [#251](https://github.com/bia-technologies/yaxunit/issues/251) Спасибо [@1cgh](\(https://github.com/1cgh) +* Добавить запуск выделенных тестов в обработке запуска тестов по Ctrl+Enter [#251](https://github.com/bia-technologies/yaxunit/issues/251). Спасибо [@1cgh](https://github.com/1cgh) ### Отчет о тестировании diff --git a/documentation/blog/2024/02/29-plugin-release.md b/documentation/blog/2024/02/29-plugin-release.md index 6c0f6b153..b22b9f97e 100644 --- a/documentation/blog/2024/02/29-plugin-release.md +++ b/documentation/blog/2024/02/29-plugin-release.md @@ -2,7 +2,6 @@ title: EDT Test runner. Версия 24.02 authors: alkoleft tags: [releases, plugin] -image: https://github.com/bia-technologies/edt-test-runner/releases/tag/24.02 --- [Release 24.02](https://github.com/bia-technologies/edt-test-runner/releases/tag/24.02) diff --git a/documentation/blog/2024/03/29-engine-release.md b/documentation/blog/2024/03/29-engine-release.md new file mode 100644 index 000000000..f9e82a8da --- /dev/null +++ b/documentation/blog/2024/03/29-engine-release.md @@ -0,0 +1,42 @@ +--- +title: YaxUnit. Версия 24.03 +authors: alkoleft +tags: [releases, yaxunit] +--- + +[Release 24.03](https://github.com/bia-technologies/yaxunit/releases/tag/24.03) + +## Новое в версии + +### Документация + +* Переписана вся [документация](https://bia-technologies.github.io/yaxunit/) +* Включить поиск по документации [#289](https://github.com/bia-technologies/yaxunit/issues/289) + +### Тестовые данные + +* Добавить методы генерации случайной даты [#269](https://github.com/bia-technologies/yaxunit/issues/269) +* Добавить конструктор объектов для XDTO [#271](https://github.com/bia-technologies/yaxunit/issues/271) +* Метод `ЮТКонструкторТестовыхДанныхСлужебный.Фикция` не работает для общих реквизитов [#218](https://github.com/bia-technologies/yaxunit/issues/218) +* Добавить метод в КонструкторОбъекта для установки реквизитов по коллекции [#249](https://github.com/bia-technologies/yaxunit/issues/249) +* Поддержка записи в режиме обмен данными загрузка для регистров из конструктора объекта [#270](https://github.com/bia-technologies/yaxunit/issues/270) + +### Утверждения + +* Добавить утверждение/предикат `ВСписке` [#283](https://github.com/bia-technologies/yaxunit/issues/283) + +### Прочее + +* Добавить возможность задавать разные описания для тестов с параметрами [#276](https://github.com/bia-technologies/yaxunit/issues/276) +* Сбор лога выполнения теста [#282](https://github.com/bia-technologies/yaxunit/issues/282) + +## Исправленные ошибки + +* Падает с ошибкой создание элемента справочника с настройкой `ОбменДаннымиЗагрузка = Истина` [#273](https://github.com/bia-technologies/yaxunit/issues/273) +* При повторном запуске упавшего теста из Предприятия реального вызова не происходит [#248](https://github.com/bia-technologies/yaxunit/issues/248) +* Исправить описания устаревших методов, чтобы EDT их подсвечивала. [#304](https://github.com/bia-technologies/yaxunit/issues/304) + +## Важно + +Выполнен **рефакторинг** модулей YAxUnit для физического разделения публичного и служебного программного интерфейса. +Попытался по максимуму сохранить обратную совместимость. diff --git a/documentation/blog/authors.yml b/documentation/blog/authors.yml index 97026a598..9952a12a3 100644 --- a/documentation/blog/authors.yml +++ b/documentation/blog/authors.yml @@ -1,5 +1,5 @@ alkoleft: - name: alkoleft - title: Разработчик YaxUnit - url: https://github.com/alkoleft - image_url: https://github.com/alkoleft.png \ No newline at end of file + name: alkoleft + title: Разработчик YAxUnit + url: https://github.com/alkoleft + image_url: https://github.com/alkoleft.png diff --git a/documentation/docs/cook-book/index.md b/documentation/docs/cook-book/index.md new file mode 100644 index 000000000..6b28e4b3e --- /dev/null +++ b/documentation/docs/cook-book/index.md @@ -0,0 +1,7 @@ +# Кулинарная книга тестов + +* как тестировать веб-сервисы +* как тестировать локальные функции +* как подключать свои плагины/шаги/методы специфичные для своей базы +* поддержка англ.языка, линукса, Конфигуратора +* что за и зачем нужен Макито \ No newline at end of file diff --git a/documentation/docs/features/assertions/assertions-base.md b/documentation/docs/features/assertions/assertions-base.md new file mode 100644 index 000000000..9e4cd80a2 --- /dev/null +++ b/documentation/docs/features/assertions/assertions-base.md @@ -0,0 +1,601 @@ +--- +tags: [Начало, Утверждения] +--- + +# Базовые утверждения + +Утверждения для проверки значений + +Доступ к утверждениям обеспечивает метод [`ЮТест.ОжидаетЧто`](/api/ЮТест#ожидаетчто), который возвращает инициализированный модуль [`ЮТУтверждения`](/api/ЮТУтверждения), реализующий работу с утверждениями. + +:::tip +Не рекомендуется обращаться к модулю `ЮТУтверждения` напрямую, используйте `ЮТест.ОжидаетЧто` +::: + +* Реализован достаточный набор проверок значений + * [Сравнение значений](#сравнение-значений) + * [Методы позиционирования](#методы-позиционирования) + * [Проверка заполненности](#проверка-заполненности) + * [Проверка строк](#проверка-строк) + * [Проверка вхождения значения в интервал](#проверка-вхождения-значения-в-интервал) + * [Проверка типа значения](#проверка-типа-значения) + * [Проверка выполнения метода](#проверка-выполнения-метода) + * [Проверка наличия свойств/реквизитов](#проверка-наличия-свойствреквизитов) + * [Проверка коллекции](#проверка-коллекции) + * [Проверка на соответствие набору условий, предикату](#проверка-на-соответствие-набору-условий-предикату) +* Большая часть методов - это сравнения фактического и ожидаемого результатов, но есть несколько методов настройки + * [`Что`](/api/ЮТУтверждения#что) - устанавливает проверяемый объект. Все дальнейшие проверки будут выполняется с этим объектом + * [`Метод`](/api/ЮТУтверждения#метод) - устанавливает имя и параметры проверяемого метода. Для проверки методов имеются утверждения [`ВыбрасываетИсключение`](/api/ЮТУтверждения#выбрасываетисключение) и [`НеВыбрасываетИсключение`](/api/ЮТУтверждения#невыбрасываетисключение) + * [`Параметр`](/api/ЮТУтверждения#параметр) - добавляет параметр метода. Создан для удобства установки параметров проверяемого метода + * [`Свойство`](/api/ЮТУтверждения#свойство) - устанавливает проверяемое свойство и проверяет его наличие. + * Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта. + Например, `ЮТест.ОжидаетЧто(Контекст).Свойство("ИмяМетода").Равно("МетодБезИсключение")` эквивалентно проверке `Контекст.ИмяМетода = "МетодБезИсключение"` +* Методы работы со свойствами позволяют указывать цепочку свойств (доступ к вложенным свойствам через точку) + Например: + * `Свойство("Контекст.ИмяМетода")` - вложенное свойство + * `ИмеетСвойство("Контекст.ПараметрыМетода[0]")` - элемент вложенной коллекции + * `НеИмеетСвойства("[0].Свойство")` - свойство элемента коллекции +* Все методы имеют параметр `ОписаниеПроверки` для детального описания. + +## Доступные методы + +:::tip +Полный и актуальный набор методов смотрите в описании API +::: + +### Сравнение значений + +* [`Равно`](/api/ЮТУтверждения#равно) - проверка на равенство конкретному значению. Для сериализуемых объектов идет сравнение по значению +* [`НеРавно`](/api/ЮТУтверждения#неравно) - проверка на не равенство конкретному значению. Для сериализуемых объектов идет сравнение по значению +* [`Больше`](/api/ЮТУтверждения#больше) - проверяемое значение должно быть больше указанного +* [`БольшеИлиРавно`](/api/ЮТУтверждения#большеилиравно) - проверяемое значение должно быть больше или равно указанному +* [`Меньше`](/api/ЮТУтверждения#меньше) - проверяемое значение должно быть меньше указанного +* [`МеньшеИлиРавно`](/api/ЮТУтверждения#меньшеилиравно) - проверяемое значение должно быть меньше или равно указанному +* [`ЭтоНеопределено`](/api/ЮТУтверждения#этонеопределено) - проверяемое значение должно быть равно `Неопределено` +* [`ЭтоНеНеопределено`](/api/ЮТУтверждения#этоненеопределено) - проверяемое значение должно быть не равно `Неопределено` +* [`ЭтоNull`](/api/ЮТУтверждения#этоnull) - проверяемое значение должно быть равно `Null` +* [`ЭтоНеNull`](/api/ЮТУтверждения#этонеnull) - проверяемое значение должно быть не равно `Null` +* [`ЭтоИстина`](/api/ЮТУтверждения#этоистина) - проверяемое значение должно быть истиной +* [`ЭтоНеИстина`](/api/ЮТУтверждения#этонеистина) - проверяемое значение не должно быть истиной +* [`ЭтоЛожь`](/api/ЮТУтверждения#этоложь) - проверяемое значение должно быть ложью +* [`ЭтоНеЛожь`](/api/ЮТУтверждения#этонеложь) - проверяемое значение не должно быть ложью +* [`ВСписке`](/api/ЮТУтверждения#этонеложь) - проверяемое значение должно входить в список указанных. + +```bsl +Значение = 1; +ЮТУтверждения.Что(Значение) + .Равно(1) + .НеРавно(2) + .Больше(0) + .БольшеИлиРавно(-10) + .Меньше(10) + .МеньшеИлиРавно(2) + .ЭтоНеИстина() + .ЭтоНеЛожь() + .ВСписке(ЮТКоллекция.ЗначениеВМассиве(0, 1, 2)); +``` + +#### Особенности сравнения + +* При сравнении значений сравниваются их типы. Это отличается от стандартного поведения 1С:Предприятие, где некоторые значения разных типов могут быть равны, например `1 = Истина` + ```bsl + ЮТест.ОжидаетЧто(1 = Истина).ЭтоИстина(); // Проверка успешна + ЮТест.ОжидаетЧто(1).Равно(Истина); // Проверка провалится + ``` +* Для большинства типов данных реализовано сравнение "по значению", когда сравниваются (рекурсивно) значения реквизитов объекта. +* Поддерживается сравнение структур и соответствий. + ```bsl + Значение1 = Новый Структура("Реквизит", 1); + Значение2 = Новый Структура("Реквизит", 1); + ЮТест.ОжидаетЧто(Значение1 = Значение2).ЭтоИстина(); // Проверка провалится + ЮТест.ОжидаетЧто(Значение1).Равно(Значение2); // Проверка успешна + ``` +* Поддерживается сравнение массивов, таблиц и табличных документов. +* Поддерживается сравнение значений упакованных в `ХранилищеЗначения`. +* Для прочих сериализуемых значений (не примитивов) сравнение происходит через сериализацию в JSON. + +### Методы позиционирования + +Любое из утверждений можно применять как к самому анализируемому объекту, так и к его свойствам, реквизитам, вложенным элементам. +Например, проверить, наличие заполненной табличной части документа используя выражение + +```bsl +ЮТест.ОжидаетЧто(Документ) + .Свойство("Товары").Заполнено() + .Свойство("Товары[0].Номенклатура").Равно(ОжидаемыйТовар) +; +``` + +Благодаря методам [`Свойство`](/api/ЮТУтверждения#свойство) и [`Элемент`](/api/ЮТУтверждения#элемент) можно позиционировать (переключать объект проверки) утверждения на вложенный реквизит/элемент. + +Методы [`Свойство`](/api/ЮТУтверждения#свойство) и [`Элемент`](/api/ЮТУтверждения#элемент) переключают объект проверки для последующих методов-утверждений. Они будут применяться к значению свойства или элементу коллекции. Но не переключает сам контекст на это значение, а всегда применяется к исходному объекту, помещенному в [`ОжидаетЧто`](/api/ЮТест#ожидаетчто). + +* [`Свойство`](/api/ЮТУтверждения#свойство) - проверяет наличие свойства и позиционирует дальнейшие проверки на указанном свойстве. +* [`Элемент`](/api/ЮТУтверждения#элемент) - проверяет наличие элемента коллекции и позиционирует дальнейшие проверки на указанном элементе. На самом деле это просто алиас (псевдоним) для метода `Свойство` и выполняет он тоже самое. +* [`Объект`](/api/ЮТУтверждения#объект) - позиционирует дальнейшие проверки на объекте, указанном в методе [`ОжидаетЧто`](/api/ЮТест#ожидаетчто). +* [`НетСвойства`](/api/ЮТУтверждения#нетсвойства) - проверяет отсутствие свойства и позиционирует дальнейшие проверки на объекте, указанном в методе [`ОжидаетЧто`](/api/ЮТест#ожидаетчто). + +:::caution +Методы [`Свойство`](/api/ЮТУтверждения#свойство) и [`Элемент`](/api/ЮТУтверждения#элемент) всегда вычисляют путь от объекта указанного в [`ОжидаетЧто`](/api/ЮТест#ожидаетчто), они не учитывают предыдущие изменения позиции. + +Например, чтобы проверить значение реквизита `Реквизит.ВложенныйРеквизит` + +```bsl title="Неправильно" +Объект = Новый Структура("Реквизит", Новый Структура("ВложенныйРеквизит", 1)); + +ЮТест.ОжидаетЧто(Объект) + .Свойство("Реквизит") + .Свойство("ВложенныйРеквизит").Равно(1) // Выбросит исключение, тк объект не содержит свойство "ВложенныйРеквизит" +; +``` + +Правильно в таком примере указывать сразу полный путь для свойства. + +```bsl title="Правильно" +ЮТест.ОжидаетЧто(Объект) + .Свойство("Реквизит.ВложенныйРеквизит").Равно(1) +; +``` + +::: + +Методы [`Свойство`](/api/ЮТУтверждения#свойство) и [`Элемент`](/api/ЮТУтверждения#элемент), принимают на вход не просто имя реквизита, а выражение, для перехода к нужному свойству, таким образом вы можете позиционироваться: + +* На свойствах объекта + ```bsl + ЮТест.ОжидаетЧто(Объект) + .Свойство("Реквизит").Равно(ОжидаемоеЗначение) + ``` +* На вложенных свойствах объекта `Свойство("Реквизит.ВложенныйРеквизит")` + ```bsl + ЮТест.ОжидаетЧто(Объект) + .Свойство("Реквизит.ВложенныйРеквизит").Равно(ОжидаемоеЗначение) + ``` +* На элементах коллекций + ```bsl + ЮТест.ОжидаетЧто(Документ.Товары) + .Свойство("[0].Товар").Равно(ОжидаемоеЗначение); + // Или + ЮТест.ОжидаетЧто(Документ) + .Свойство("Товары[0].Товар").Равно(ОжидаемоеЗначение); + ``` +* Можно позиционировать на элементах коллекции с конца + ```bsl + ЮТест.ОжидаетЧто(Документ.Товары) + .Свойство("[-1].Товар").Равно(ОжидаемоеЗначение) // Последний элемент; + .Элемент(-1).ИмеетСвойство("Товар") // Последний элемент + ``` + +### Проверка заполненности + +* [`Заполнено`](/api/ЮТУтверждения#заполнено) - проверяет заполненность значения + ```bsl + ЮТест.ОжидаетЧто(ОбъектПроверки) + .Заполнено() + .Свойство("Номер").Заполнено(); + ``` +* [`НеЗаполнено`](/api/ЮТУтверждения#незаполнено) - проверяет незаполненность значения + ```bsl + Значения = ЮТКоллекции.ЗначениеВМассиве(0, "", " ", Неопределено, Null, '00010101', Новый Структура(), Справочники.Товары.ПустаяСсылка()); + Для каждого Значение Из Значения Цикл + ЮТест.ОжидаетЧто(Значение) + .НеЗаполнено() + КонецЦикла; + ``` +* [`Существует`](/api/ЮТУтверждения#существует) - проверяет существование (не равно `Null` и `Неопределено`) значения + ```bsl + ЮТест.ОжидаетЧто(ВыборкаЗапроса) + .Свойство("Номер").Существует(); + ``` +* [`НеСуществует`](/api/ЮТУтверждения#несуществует) - проверяет не существование (не равно `Null` и `Неопределено`) значения + ```bsl + ЮТест.ОжидаетЧто(ВыборкаЗапроса) + .Свойство("Номер").НеСуществует(); + ``` + +### Проверка строк + +* [`ИмеетДлину`](/api/ЮТУтверждения#имеетдлину) - проверяет, что строка имеет указанную длину +* [`ИмеетДлинуБольше`](/api/ЮТУтверждения#имеетдлинубольше) - проверяет, что длин строки больше указанной +* [`ИмеетДлинуМеньше`](/api/ЮТУтверждения#имеетдлинуменьше) - проверяет, что длина строки меньше указанной +* [`НеИмеетДлину`](/api/ЮТУтверждения#неимеетдлину) - проверяет, что длина строки отличается от указанной +* [`Содержит`](/api/ЮТУтверждения#содержит) - проверяемая строка содержит указанную подстроку +* [`НеСодержит`](/api/ЮТУтверждения#несодержит) - проверяемая строка не содержит указанную подстроку +* [`НачинаетсяС`](/api/ЮТУтверждения#начинаетсяс) - проверяемая строка начинается с указанной строки +* [`ЗаканчиваетсяНа`](/api/ЮТУтверждения#заканчиваетсяна) - проверяемая строка заканчивается на указанную строку + +```bsl +ПроверяемоеЗначение = "Ох, нелегкая это работа - Из болота тащить бегемота"; +ЮТест.ОжидаетЧто("ПроверяемоеЗначение") + .ИмеетДлинуБольше(10) + .ИмеетДлинуМеньше(100) + .ИмеетДлину(51) + .Содержит("работа") + .НеСодержит("зарплата") + .НачинаетсяС("Ох") + .ЗаканчиваетсяНа("мота") +``` + +* [`СодержитСтрокуПоШаблону`](/api/ЮТУтверждения#содержитстрокупошаблону) - проверяемая строка содержит подстроку, соответствующую регулярному выражению +* [`НеСодержитСтрокуПоШаблону`](/api/ЮТУтверждения#несодержитстрокупошаблону) - проверяемая строка не содержит подстроку, соответствующую регулярному выражению + +```bsl +ПроверяемоеЗначение = "Ох, нелегкая это работа - Из болота тащить бегемота"; +ЮТест.ОжидаетЧто("ПроверяемоеЗначение") + .СодержитСтрокуПоШаблону("^[а-яА-Я\s,\-]*$") // Строка содержит только кириллицу, пробелы и знаки пунктуации + .НеСодержитСтрокуПоШаблону("\d") // Не содержит цифр +``` + +### Проверка вхождения значения в интервал + +* [`МеждуВключаяГраницы`](/api/ЮТУтверждения#междувключаяграницы) - проверяемое значение находиться в указанному интервале (включая границы) +* [`МеждуИсключаяГраницы`](/api/ЮТУтверждения#междуисключаяграницы) - проверяемое значение находиться в указанному интервале (исключая границы) +* [`МеждуВключаяНачалоГраницы`](/api/ЮТУтверждения#междувключаяначалограницы) - проверяемое значение находиться в указанному интервале (включая левую границу и исключая правую) +* [`МеждуВключаяОкончаниеГраницы`](/api/ЮТУтверждения#междувключаяокончаниеграницы) - проверяемое значение находиться в указанному интервале (исключая левую границу и включая правую) + +```bsl +ЮТест.ОжидаетЧто(10) + .МеждуВключаяГраницы(0, 10) + .МеждуИсключаяГраницы(0, 100); +ЮТест.ОжидаетЧто(ТекущаяДата()) + .МеждуВключаяНачалоГраницы(НачалоДня, НачалоСледующегоДня); +``` + +### Проверка типа значения + +* [`ИмеетТип`](/api/ЮТУтверждения#имееттип) - проверяемое значение должно иметь указанный тип +* [`НеИмеетТип`](/api/ЮТУтверждения#неимееттип) - тип проверяемого значения должен отличаться от указанного + +В качестве аргумента можно указывать + +* Имя типа строкой или список имен типов через запятую. + `ИмеетТип("Строка").ИмеетТип("Строка, Число")` +* Конкретный тип. + `ИмеетТип(Тип("Строка"))` +* Описание типов. + `ИмеетТип(Новый ОписаниеТипов("Строка, Число"))` + +### Проверка выполнения метода + +API для проверки, выбрасываемых методом проверяемого объекта исключения. +Первоначально необходимо описать какой метод нужно проверить, к какому объекту он относится и с какими параметрами его необходимо вызвать. Для этих целей необходимо использовать: + +* [`ЮТест.ОжидаетЧто`](/api/ЮТест#ожидаетчто) - устанавливает владельца метода +* [`Метод`](/api/ЮТУтверждения#метод) - устанавливает имя и параметры проверяемого метода +* [`Параметр`](/api/ЮТУтверждения#параметр) - добавляет параметр метода. Создан для удобства установки параметров проверяемого метода + +После формируем ожидание - должен или нет методы выбросить исключение и с каким текстом. + +* [`ВыбрасываетИсключение`](/api/ЮТУтверждения#выбрасываетисключение) - выполняет настроенный метод объекта с параметрами и проверяет, что метод выбросит исключение и текст исключения содержит(включает) указанную в строку. При необходимости можно настроить (передать параметр), чтобы метод выполнился **в транзакции**. + + ```bsl + ЮТест.ОжидаетЧто(Документ) // Объект, метод которого проверяем + .Метод("Записать").Параметр(РежимЗаписиДокумента.Проведение) // Указываем проверяемый метод и параметры вызова + .ВыбрасываетИсключение("Значение поля ""Дата"" не может быть пустой датой") // Утверждение-проверка, исключение должно содержать указанный текст. + .ВыбрасываетИсключение("""Дата""") // Можно указать только часть исключения, проверить вхождение указанной строки. + .ВыбрасываетИсключение("""Дата""", , Истина) // Выполнение указанного метода в транзакции + ``` + + :::info Вопрос + Можно ли **не указывать** текст исключения? + **Ответ:** Нельзя, вы должны конкретизировать свои ожидания, зафиксировать, какую ошибку ждете, иначе поведение может измениться и тест это не отработает. + ::: +* [`НеВыбрасываетИсключение`](/api/ЮТУтверждения#невыбрасываетисключение) - выполняет настроенный метод объекта с параметрами и проверяет, что метод не выбросит исключение или выбросит исключения с текстом отличным от указанного. При необходимости можно настроить (передать параметр), чтобы метод выполнился **в транзакции**. + + ```bsl + ЮТест.ОжидаетЧто(Документ) // Объект, метод которого проверяем + .Метод("Записать").Параметр(РежимЗаписиДокумента.Проведение) // Указываем проверяемый метод и параметры вызова + .НеВыбрасываетИсключение() // Утверждение-проверка, метод выполниться без ошибки. + .НеВыбрасываетИсключение("""Дата""") // Утверждение-проверка, метод выполниться без ошибки, либо с ошибкой, которая не содержит "Дата". + .НеВыбрасываетИсключение("""Дата""", , Истина) // Выполнение указанного метода в транзакции + ``` + + :::caution Не злоупотребляйте проверкой `НеВыбрасываетИсключение` + Многие используют это утверждения, для вызова чуть ли не каждого проверяемого метода. + Этого делать не стоит. + Это утверждение должно редко применяться, если ваш метод упадет, это и так будет отражено в отчете. + Один из случаев когда оно может применяться, вы используете его **перед** проверками на исключения, чтобы убедится, что метод рабочий. + + ```bsl + Документ = СоздатьДокумент(); + Утверждение = ЮТест.ОжидаетЧто(Документ) + .Метод("Записать").Параметр(РежимЗаписиДокумента.Проведение) + .НеВыбрасываетИсключение("""Дата"""); // Проверим, что при нормальном заполнении ошибки нет + + Документ.Дата = Неопределено; + Утверждение.ВыбрасываетИсключение("""Дата""", "Документ проведен при незаполненной дате"); + ``` + + ::: + + :::caution Нельзя явно вызывать проверяемый метод + Хочу обратить внимание. Когда вы проверяете метод на исключения/их отсутствие вы должны указать: + + ```bsl + ЮТест.ОжидаетЧто(Документ) // 1. Владельца метода + .Метод("Записать") // 2. Имя метода + .Параметр(РежимЗаписиДокумента.Проведение) // 3. Параметры вызова метода + + // Явно вызывать метод нельзя. + ЮТест.ОжидаетЧто(Документ) + .Метод(Документ.Записать(РежимЗаписиДокумента.Проведение)) // Так делать нельзя, так не сработает проверка. + ``` + + Вы **не должны** явно вызывать метод, это должен сделать тестовый движок, чтобы поймать и проанализировать ошибку. + ::: + +### Проверка наличия свойств/реквизитов + +* [`ИмеетСвойство`](/api/ЮТУтверждения#имеетсвойство) - проверяемый объект должен содержать указанное свойство +* [`НеИмеетСвойства`](/api/ЮТУтверждения#неимеетсвойства) - проверяемый объект не содержит указанное свойство +* [`ИмеетСвойстваРавные`](/api/ЮТУтверждения#имеетсвойстваравные) - проверяемый объект должен содержать указанный набор свойств/реквизитов и значений + +Поддерживается проверка наличия свойство для различных объектов: структур, массивов, таблиц, документов и тд. +Вы можете проверить наличие свойства не только у текущего объекта, но и у его дочерних. +Например, `ИмеетСвойство("Родитель.Наименование")`, будет выполнена проверка наличия свойства `Родитель` у текущего объекта и свойства `Наименование` у родителя. + +Также можно проверять наличие свойств у коллекций. +Например, `ИмеетСвойство("Товары[0].Наименование")`, утверждение проверит наличие свойства `Товары`, наличие у него первого элемента и наличие свойства `Наименование` у этого элемента. + +```bsl +Документ = Документы.ПриходТовара.СоздатьДокумент(); + +ЮТест.ОжидаетЧто(Документ) + .ИмеетСвойство("Товары[0]") + .Свойство("Товары[0]") + .ИмеетСвойство("Товар") + .ИмеетСвойство("Количество") + .ИмеетСвойство("Цена"); +``` + +Как вы могли заменить в качестве имени свойства указывается выражение, такое же как и обычном коде. + +```bsl +Документ = Документы.ПриходТовара.СоздатьДокумент(); + +Свойство = Документ.Товары[0].Наименование; +ЮТест.ОжидаетЧто(Документ) + .Свойство("Товары[0].Наименование"); +// И там и там для того, чтобы добраться до наименования используется одно и тоже выражение. +``` + +### Проверка коллекции + +* [`ИмеетДлину`](/api/ЮТУтверждения#имеетдлину) - проверяет, что коллекция имеет указанный размер +* [`ИмеетДлинуБольше`](/api/ЮТУтверждения#имеетдлинубольше) - проверяет, что коллекция имеет размер, который больше указанного +* [`ИмеетДлинуМеньше`](/api/ЮТУтверждения#имеетдлинуменьше) - проверяет, что коллекция имеет размер, который меньше указанного +* [`НеИмеетДлину`](/api/ЮТУтверждения#неимеетдлину) - проверяет, что размер коллекции отличается от указанного + + ```bsl + Коллекция = ЮТКоллекции.ЗначениеВМассиве(1, 2, 3); + ЮТест.ОжидаетЧто(Коллекция) + .ИмеетДлину(3) + .ИмеетДлинуБольше(2) + .ИмеетДлинуМеньше(4) + .НеИмеетДлину(4) + ; + ``` + +* [`Содержит`](/api/ЮТУтверждения#содержит) - проверяемая коллекция должна содержать указанный элемент +* [`НеСодержит`](/api/ЮТУтверждения#несодержит) - проверяемая коллекция не должна содержать указанный элемент + + ```bsl + Коллекция = ЮТКоллекции.ЗначениеВМассиве(1, 2, 3); + ЮТест.ОжидаетЧто(Коллекция) + .Содержит(1) // Конкретное значение + .Содержит(ЮТест.Предикат() // Значение по условиям + .ИмеетТип("Число") + .Больше(2)) + .НеСодержит(0) + .НеСодержит(ЮТест.Предикат() // Не содержит строк + .ИмеетТип("Строка")) + ; + ``` + +* [`КаждыйЭлементСодержитСвойство`](/api/ЮТУтверждения#каждыйэлементсодержитсвойство) - проверяет, что каждый элемент коллекции имеет указанное свойство +* [`КаждыйЭлементСодержитСвойствоСоЗначением`](/api/ЮТУтверждения#каждыйэлементсодержитсвойствосозначением) - проверяет, что каждый элемент коллекции имеет указанное свойство, которое равно ожидаемому значению +* [`ЛюбойЭлементСодержитСвойство`](/api/ЮТУтверждения#любойэлементсодержитсвойство) - проверяет, что в коллекции есть элемент содержащий указанное свойство +* [`ЛюбойЭлементСодержитСвойствоСоЗначением`](/api/ЮТУтверждения#любойэлементсодержитсвойствосозначением) - проверяет, что в коллекции есть элемент содержащий указанное свойство, которое равно ожидаемому значению + + ```bsl + Коллекция = ЮТКоллекции.ЗначениеВМассиве( + Новый Структура("С1", 1), + Новый Структура("С1, С2", 1, 2) + ); + ЮТест.ОжидаетЧто(Коллекция) + .КаждыйЭлементСодержитСвойство("С1") // Проверка, что все элементы коллекции содержат свойство `С1` + .КаждыйЭлементСодержитСвойствоСоЗначением("С1", 1) // Проверка, что все элементы коллекции содержат свойство `С1` со значением `1` + .ЛюбойЭлементСодержитСвойство("С2") // Проверка, что хотя бы один элемент коллекции содержат свойство `С2` + .ЛюбойЭлементСодержитСвойство("С2", 2) // Проверка, что хотя бы один элемент коллекции содержат свойство `С2` со значением `2` + ; + ``` + +* [`КаждыйЭлементСоответствуетПредикату`](/api/ЮТУтверждения#каждыйэлементсоответствуетпредикату) - проверяет, что элементы коллекции соответствуют переданным условиям + + ```bsl + Коллекция = ЮТКоллекции.ЗначениеВМассиве(1, 2, 3); + ЮТест.ОжидаетЧто(Коллекция) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .ИмеетТип("Число") // Все элементы это числа + .НеРавно(0)) // и каждый не равен `0` + ``` + +* [`ЛюбойЭлементСоответствуетПредикату`](/api/ЮТУтверждения#любойэлементсоответствуетпредикату) - проверяет, что коллекция содержит элемент, который соответствует переданным условиям + + ```bsl + Коллекция = ЮТКоллекции.ЗначениеВМассиве(1, 2, 3); + ЮТест.ОжидаетЧто(Коллекция) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .ИмеетТип("Число") // Есть элемент, который является числом + .Больше(2)) // и больше `2` + ``` + +### Проверка на соответствие набору условий, предикату + +* [`Содержит`](/api/ЮТУтверждения#содержит)/[`ЛюбойЭлементСоответствуетПредикату`](/api/ЮТУтверждения#любойэлементсоответствуетпредикату) - проверяемая коллекция должна содержать элемент, который соответствует переданным условиям +* [`НеСодержит`](/api/ЮТУтверждения#несодержит) - проверяемая коллекция не должна содержать элемент, который соответствует переданным условиям +* [`КаждыйЭлементСоответствуетПредикату`](/api/ЮТУтверждения#каждыйэлементсоответствуетпредикату) - проверяет, что элементы коллекции соответствуют переданным условиям +* [`СоответствуетПредикату`](/api/ЮТУтверждения#соответствуетпредикату) - проверяет, что объект или его свойство соответствует набору условий + +Работа и суть предикатов описана в [отдельной статье](../predicates.md). + +#### Предикаты позволяют проверить каждый элемент коллекцию на соответствие набору условий + +Предположим, нам необходимо проверить, что движения документа выполненные по регистру делают приход. Тогда тест может выглядеть так. + +```bsl +Документ = СоздатьИПровестиДокумент(...); +Движения = ЮТЗапросы.ДвиженияДокумента(Документ, "ОстаткиТоваров"); + +ЮТест.ОжидаетЧто(Движения) + .Заполнено() + .ИмеетДлину(Документ.Товары.Количество()) + .КаждыйЭлементСоответствуетПредикату( + ЮТест.Предикат() + .Реквизит("ВидДвижения").Равно(ВидДвиженияНакопления.Приход) + .Реквизит("Количество").Больше(0) + ) +; + +// Условия предиката будут применены для каждой записи движений. Если ожидания не совпадут, то будет выброшена ошибка. +``` + +#### Предикаты позволяют проверить наличие элемента по сложным условиям + +```bsl +Документ = СоздатьИПровестиДокумент(...); +Движения = ЮТЗапросы.ДвиженияДокумента(Документ, "ОстаткиТоваров"); + +ЮТест.ОжидаетЧто(ПолучитьСообщенияПользователю()) + .Заполнено() + .Содержит( + ЮТест.Предикат() + .Реквизит("Текст") + .НачинаетсяС("Начало") + .ЗаканчиваетсяНа("окончание") + .НеСодержит("исключение") + ) +; +``` + +## Примеры + +### Базовые проверки + +Предположим, у нас имеется функция `Сложение`, которая выполняет сложение двух параметров. + +Проверки для нее могут выглядеть следующим образом: + +```bsl title="Тест для 'Сложение'" +Результат = Сложение(2, 3); +ЮТест.ОжидаетЧто(Результат, "Сложение чисел") // Используя модуль утверждений установим проверяемое значение и пояснение + .ИмеетТип("Число") // Проверим тип + .Заполнено() // Заполненность проверяемого значения + .Больше(0) // Сравним с нулем + .Равно(5); // Проверим ожидаемый результат + +Результат = Сложение("2", 3); +ЮТест.ОжидаетЧто(Результат, "Сложение строки и числа") + .ИмеетТип("Строка") + .Равно("23"); + +Результат = Сложение('2000010101', 3); +ЮТест.ОжидаетЧто(Результат, "Сложение даты и числа") + .Равно('2000010101000003'); +``` + +В примере, я на каждом этапе уменьшаю количество проверок. В реальном тесте хватит проверки на равенство, остальные проверки здесь для того, чтобы показать возможности механизма. + +### Проверка сложного объекта + +```bsl +ЮТест.ОжидаетЧто(Ссылка, "Созданный объект") + .Заполнено() + .ИмеетТип("ДокументСсылка.ПриходТовара") + .Свойство("Номер").Заполнено() + .Свойство("Дата").Заполнено() + .Свойство("Поставщик").Равно(Поставщик) + .Свойство("Склад").Равно(Склад) + .Свойство("Валюта").Равно(Валюта) + .Свойство("Организация").Равно(Организация) + .Свойство("Товары").ИмеетДлину(2) + .Свойство("Товары[0].Товар").Равно(Товар1) + .Свойство("Товары[0].Цена").Больше(0) + .Свойство("Товары[0].Количество").Больше(0) + .Свойство("Товары[0].Сумма").Равно(100) + .Свойство("Товары[-1].Товар").Равно(Товар2) + .Свойство("Товары[-1].Сумма").Равно(200) + .Свойство("Проведен").ЭтоИстина() +``` + +### Проверка вызова метода + +```bsl +ЮТУтверждения.Что(ОМ_ЮТУтверждения) + .Метод("МетодБезИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение")) + .НеВыбрасываетИсключение() + .НеВыбрасываетИсключение("Ожидаемое исключение"); +ЮТУтверждения.Что(ОМ_ЮТУтверждения) + .Метод("МетодИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение", 2)) + .ВыбрасываетИсключение("Слишком много фактических параметров"); +ЮТУтверждения.Что(ОМ_ЮТУтверждения) + .Метод("МетодИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение")) + .ВыбрасываетИсключение("Исключение"); +ЮТУтверждения.Что(ОМ_ЮТУтверждения) + .Метод("МетодБезИсключение") + .ВыбрасываетИсключение("Недостаточно фактических параметров"); +``` + +### Проверка соответствия предикату + +```bsl +Дата = ЮТест.Данные().СлучайнаяДата(); + +Объект = Новый Структура; +Объект.Вставить("Число", 1); +Объект.Вставить("Строка", "1"); +Объект.Вставить("Дата", Дата); +Объект.Вставить("Массив", ЮТКоллекции.ЗначениеВМассиве(1, "1")); + +ПроверкаЧисла = ЮТест.Предикат().Реквизит("Число") + .ИмеетТип(Тип("Число")) + .БольшеИлиРавно(1) + .МеньшеИлиРавно(10) + .Получить(); +ПроверкаДаты = ЮТест.Предикат().Реквизит("Дата") + .ИмеетТип(Новый ОписаниеТипов("Дата")) + .Равно(Дата) + .Получить(); + +ЮТест.ОжидаетЧто(Объект) + .СоответствуетПредикату(ЮТест.Предикат() + .Заполнено() + .ИмеетТип("Структура")) + .СоответствуетПредикату(ПроверкаЧисла) + .СоответствуетПредикату(ПроверкаДаты) +; +``` + +### Проверка элементов коллекции на соответствие предикату + +```bsl +ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C1:R5C11", ОписанияТипов); +ЮТест.ОжидаетЧто(ТаблицаРезультатов) + .ИмеетТип("Массив") + .ИмеетДлину(3) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Товар").Заполнено().ИмеетТип("СправочникСсылка.Товары") + .Реквизит("Период").Заполнено().ИмеетТип("Дата") + .Реквизит("Количество").Заполнено().ИмеетТип("Число") + .Реквизит("Цена").Заполнено().ИмеетТип("Число") + ); + +ЮТест.ОжидаетЧто(ТаблицаРезультатов) + .Содержит(ЮТест.Предикат() + .Реквизит("Товар").Равно(Товар1)) // Таблица содержит строку с Товар1 + .Содержит(ЮТест.Предикат(Новый Структура("Товар", Товар2))) // Таблица содержит строку с Товар2 + .Содержит(ЮТест.Предикат() + .Реквизит("Товар").Равно(Товар3) // Таблица содержит строку с Товар3 + .Реквизит("Количество").Равно(2)) // и количеством 2 + +``` diff --git a/documentation/docs/features/assertions/assertions-db.md b/documentation/docs/features/assertions/assertions-db.md new file mode 100644 index 000000000..c50d7dc53 --- /dev/null +++ b/documentation/docs/features/assertions/assertions-db.md @@ -0,0 +1,79 @@ +--- +tags: [Начало, Утверждения, ДанныеИБ] +--- + +# Утверждения для проверки наличия данных информационной базы + +Большая часть тестируемых методов так или иначе оставляет свой след в информационной базе, создает или изменяет записи - документы, регистры, справочники и так далее. +Для проверки правильности работы таких методов нам необходимо проверить, что изменилось в базе. В этом могут помочь утверждения работающие с записями ИБ. + +Доступ к этим утверждениям обеспечивает метод [`ЮТест.ОжидаетЧтоТаблицаБазы`](/api/ЮТест#ожидаетчтотаблицабазы), который возвращает инициализированный модуль [`ЮТУтвержденияИБ`](/api/ЮТУтвержденияИБ), реализующий работу с утверждениями для ИБ. + +Утверждения ИБ позволяют проверить наличие и отсутствие записей по различным условиям, которые задаются с помощью [предикатов](../predicates.md) + +```bsl +ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары") + .НеСодержитЗаписи(); // В базе нет товаров + +ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары") + .СодержитЗаписи(); // В базе есть товары + +ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары") + .СодержитЗаписи(ЮТест.Предикат() // В базе есть товары определенного поставщика + .Реквизит("Поставщик").Равно(ДанныеСправочника.Поставщик)); + +ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют") + .НеСодержитЗаписи(ЮТест.Предикат() // Курс валюты не установлен + .Реквизит("Валюта").Равно(ДанныеРегистра.Валюта) + .Реквизит("Период").БольшеИлиРавно(ДанныеРегистра.Период)); +``` + +## Доступные методы + +* [`СодержитЗаписи`](/api/ЮТУтвержденияИБ#содержитзаписи) - проверяет наличие записей по условиям +* [`НеСодержитЗаписи`](/api/ЮТУтвержденияИБ#несодержитзаписи) - проверяет отсутствие записей по условиям +* [`СодержитЗаписиСНаименованием`](/api/ЮТУтвержденияИБ#содержитзаписиснаименованием) - проверяет наличие в таблице записей с указанным наименованием +* [`СодержитЗаписиСКодом`](/api/ЮТУтвержденияИБ#содержитзаписискодом) - проверяет наличие в таблице записей с указанным кодом +* [`СодержитЗаписиСНомером`](/api/ЮТУтвержденияИБ#содержитзаписисномером) - проверяет наличие в таблице записей с указанным номером +* [`НеСодержитЗаписиСНаименованием`](/api/ЮТУтвержденияИБ#несодержитзаписиснаименованием) - проверяет отсутствие в таблице записей с указанным наименованием +* [`НеСодержитЗаписиСКодом`](/api/ЮТУтвержденияИБ#несодержитзаписискодом) - проверяет отсутствие в таблице записей с указанным кодом +* [`НеСодержитЗаписиСНомером`](/api/ЮТУтвержденияИБ#несодержитзаписисномером) - проверяет отсутствие в таблице записей с указанным номером + +## Примеры + +```bsl title="Тест создания справочника" +// Проверка и подготовка контекста +АртикулТовара = ЮТест.Данные().СлучайнаяСтрока(); +УсловиеПоискаТовара = ЮТест.Предикат() + .Реквизит("Артикул").Равно(АртикулТовара) + .Получить(); // Необходимо для сохранения сформированного предиката в переменную + +ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары", "Товар уже существует в базе") + .НеСодержитЗаписей(УсловиеПоискаТовара); + +// Выполнение тестируемого метода +СоздатьТовар(АртикулТовара); + +// Проверка результата +ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары", "Товар не был создан") + .СодержитЗаписи(УсловиеПоискаТовара); + +// Проверим заполнение нового элемента +СозданныйТовар = ЮТЗапрос.Запись("Справочник.Товары", УсловиеПоискаТовара); +ЮТест.ОжидаетЧто(СозданныйТовар, "Данные нового товара") + .Заполнено() + .Свойство("Наименование").Заполнено() + .Свойство("Код").Заполнено() + .Свойство("Артикул").Заполнено(); +``` + +:::tip Проверка заполнения +Не рекомендую использовать `ЮТест.ОжидаетЧтоТаблицаБазы` проверки заполнения созданных/измененных данных. +Лучше сначала получить запись используя `ЮТЗапрос.Запись` и с помощью `ЮТест.ОжидаетЧто` проверить ее заполнение. + +Разница будет в тексте ошибки: + +* `ЮТест.ОжидаетЧтоТаблицаБазы` скажет, что запись в базе отсутствует, без разницы, был ли создан товар или он был некорректно заполнен. +* `ЮТЗапрос.Запись` + `ЮТест.ОжидаетЧто` позволит отдельно проверить наличе записи в базе и корректность заполнения. + При отсутствии будет выдана ошибка, что данные не заполнены, а при некорректном заполнении сообщит, какое свойство не заполнено. +::: diff --git a/documentation/docs/features/assertions/assertions.md b/documentation/docs/features/assertions/assertions.md new file mode 100644 index 000000000..8eab2f861 --- /dev/null +++ b/documentation/docs/features/assertions/assertions.md @@ -0,0 +1,66 @@ +--- +tags: [Начало, Утверждения] +sidebar_position: 1 +--- + +# Утверждения + +Тестирование - это проверка системы на **соответствие требованиям**. Из этого следует, что при тестировании, у нас должны быть требования к тестируемой функциональности, сформулированные ожидания. +Для описания ожиданий в тестах, использующих YAxUnit, применяется механизм утверждений, с помощью которых, разработчик описывает требования к тестируемому функционалу. + +Утверждения позволяют, не только фиксировать ожидания, но и помогают формировать: + +1. более читаемый и простой тест, +2. формируют "дружелюбные" и понятные сообщения об ошибках, +3. прививают единообразие у сокращают количество "велосипедов". + +```bsl title="Пример утверждения" +ЮТест.ОжидаетЧто(ДанныеЗаписи) + .Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик) + .Свойство("Товары") + .ИмеетДлину(1) + .Свойство("Товары[0].НомерСтроки").Равно(2) + .Свойство("Товары[0].Товар").Равно(ДанныеОбъекта.Товары[0].Товар); +``` + +В результате этой проверки (ошибочной) будет выброшено следующее исключение: + +> Ожидали, что проверяемое значение `Поступление товара 000000001 от 12.03.2024 3:06:17` содержит свойство `Товары[0].НомерСтроки`, которое равно `2`, но это не так. + +А так оно будет выглядеть в EDT. + +![report](images/assertions-report.png) + +## Зачем нужны утверждения YAxUnit + +Основной задачей утверждений является формирование и проверка наши ожидания. +Например, сложение 2 и 3 должно вернуть нам 5. +Можно перефразировать это требование (ожидание) - тест ожидает, что `2 + 3` равно `5`. +При помощи утверждений это превращается в следующий код - `ЮТест.ОжидаетЧто(2 + 3).Равно(5)`. + +Вы можете проверить результат работы и без использования утверждений - `Если 2 + 3 <> 5 Тогда ВызватьИсключение "2 + 3 <> 5";КонецЕсли;` +Но отличии от ручной проверки с использованием условий и исключений утверждения дают ряд преимуществ: + +* Всегда, ну или почти, понятные сообщения об ошибках, которые помогают локализовать причину. +* Также вам не надо ломать голову, что написать в исключении. +* Тесты получаются более читаемыми, цепочки вызовов формируют, что-то вроде предложений. +* Не все проверки столько просты как в примере, есть предикаты, сравнение таблиц, проверка вложенных свойств и данных в информационной базе +* Ошибки утверждений помечаются другим типов ошибки, это позволяет понять упал тест (не совпало ожидание) или наш код сломался. + +В итоге: утверждений вещь полезная, изучите и используйте ее. + +## Возможности + +* Проверки [значений](assertions-base.md#доступные-методы) +* Проверки [методов объекта на выброс исключений](assertions-base.md#проверка-выполнения-метода) +* Проверки [данных информационной базы](assertions-db.md) + +Это базовые методы проверки, с помощью которых вы можете проверить любое поведение (или почти любое) системы. На их основе вы можете сформировать библиотеку своих "бизнес" утверждений, заточенных под ваше решение, что облегчит вам разработку тестов. + +:::tip Рекомендации + +* Используйте отступы и форматирование для улучшения читаемости. +* Не забывайте указывать описания для проверок. +* Не стоит писать проверки ради проверок, проверяйте только то, что необходимо для кейса. + Слишком большой код (цепочки утверждений в частности) сложно поддерживать, при необходимости разбейте его на блоки (методы). +::: diff --git a/documentation/docs/features/assertions/images/assertions-report.png b/documentation/docs/features/assertions/images/assertions-report.png new file mode 100644 index 000000000..dde82bd2c Binary files /dev/null and b/documentation/docs/features/assertions/images/assertions-report.png differ diff --git a/documentation/docs/features/auxiliary-modules/collections.md b/documentation/docs/features/auxiliary-modules/collections.md new file mode 100644 index 000000000..85479f158 --- /dev/null +++ b/documentation/docs/features/auxiliary-modules/collections.md @@ -0,0 +1,7 @@ +--- +tags: [Начало, Универсальные методы] +sidebar_position: 2 +--- + +# Коллекции + diff --git a/documentation/docs/features/auxiliary-modules/index.md b/documentation/docs/features/auxiliary-modules/index.md new file mode 100644 index 000000000..a63820be3 --- /dev/null +++ b/documentation/docs/features/auxiliary-modules/index.md @@ -0,0 +1,13 @@ +# Дополнительные модули + +В дополнение к основным возможностям тестового движка, для упрощения работы при разработке тестов, добавлены следующие модули: + +* [`ЮТЗапрос`](queries.md) - предоставляет методы получения данных из информационной базы. +* [`ЮТКоллекции`](collections.md) - универсальные методы для работы с различными коллекциями (массивы, таблицы, структур и тд) +* [`ЮТСтроки`](/api/ЮТСтроки) - универсальные методы для работы со строками. +* [`ЮТЛогирование`](/api/ЮТЛогирование) - методы логирования. +* [`ЮТФабрика`](/api/ЮТФабрика) - методы для создания различных объектов движка, которые могут понадобиться при разработке тестов. +* [`ЮТКомпоненты`](/api/ЮТКомпоненты) - предоставляет доступ к внешним компонентам движка. +* [`ЮТМетаданные`](/api/ЮТМетаданные) - методы для работы с метаданными. +* [`ЮТРегистрацияОшибок`](/api/ЮТРегистрацияОшибок) - методы работы с ошибками. +* [`ЮТИсключения`](/api/ЮТИсключения) - методы для формирования текстов исключений. diff --git a/documentation/docs/features/auxiliary-modules/queries.md b/documentation/docs/features/auxiliary-modules/queries.md new file mode 100644 index 000000000..fd084c6f6 --- /dev/null +++ b/documentation/docs/features/auxiliary-modules/queries.md @@ -0,0 +1,127 @@ +--- +tags: [Начало, ДанныеИБ] +sidebar_position: 1 +--- + +# Запросы + +Для получения данных базы предоставлен API выполнения запросов [`ЮТЗапросы`](/api/ЮТЗапросы). + +Позволяет как с сервера, так и с клиента получать данные информационной базы и имеет следующие методы: + +* `ЗначенияРеквизитов` - Возвращает значения реквизитов ссылки в виде структуры. + ```bsl + ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитов(Ссылка, "Штрихкод, Поставщик"); + ЮТест.ОжидаетЧто(ДанныеСсылки) + .ИмеетТип("Структура") + .Заполнено() + .Свойство("Штрихкод").Равно(Данные.Штрихкод) + .Свойство("Поставщик").Равно(Данные.Поставщик); + ``` +* `ЗначениеРеквизита` - Возвращает значение реквизита ссылки + ```bsl + ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизита(Ссылка, "Наименование")) + .ИмеетТип("Строка") + .Заполнено() + .Равно(Данные.Наименование); + ``` +* `Запись` - Возвращает первую запись таблицы, соответствующую условиям. Возвращается структура, со всеми данными объекта, включая табличные части. + ```bsl + ДанныеЗаписи = ЮТЗапросы.Запись("Документ.ПриходТовара", + ЮТест.Предикат() + .Реквизит("Ссылка").Равно(Ссылка)); + + ЮТест.ОжидаетЧто(ДанныеЗаписи) + .Свойство("Ссылка").Равно(Ссылка) + .Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик) + .Свойство("Товары") + .ИмеетТип("Массив") + .ИмеетДлину(1) + .Свойство("Товары[0].НомерСтроки").Равно(1) + .Свойство("Товары[0].Товар") + .Равно(ДанныеОбъекта.Товары[0].Товар); + ``` +* `Записи` - Возвращает записи таблицы, соответствующую условиям. Возвращается массив структур, со всеми данными объектов, включая табличные части. + ```bsl + Записи = ЮТЗапросы.Записи("Справочник.Товары", + ЮТест.Предикат() + .Реквизит("Поставщик").Равно(Поставщик)); + + ЮТест.ОжидаетЧто(Записи) + .ИмеетТип("Массив") + .ИмеетДлину(5); + + Для Каждого Запись Из Записи Цикл + ЮТест.ОжидаетЧто(Запись) + .ИмеетТип("Структура") + .Свойство("Ссылка") + .Свойство("Поставщик").Равно(Поставщик) + .Свойство("Код"); + КонецЦикла; + ``` +* `ЗначенияРеквизитовЗаписи` - Возвращает значения реквизитов первой записи таблицы, соответствующей условиям + ```bsl + Предикат = ЮТест.Предикат() + .Реквизит("Штрихкод").Равно(Данные.Штрихкод); + + ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитовЗаписи("Справочник.Товары", Предикат, "Штрихкод, Поставщик, Поставщик.Наименование"); + + ЮТест.ОжидаетЧто(ДанныеСсылки) + .ИмеетТип("Структура") + .Заполнено() + .Свойство("Штрихкод").Равно(Данные.Штрихкод) + .Свойство("Поставщик").Равно(Данные.Поставщик) + .Свойство("ПоставщикНаименование").Равно(Строка(Данные.Поставщик)); + ``` +* `ЗначениеРеквизитаЗаписи` - Возвращает значение реквизита первой записи таблицы, соответствующей условиям + ```bsl + Предикат = ЮТест.Предикат() + .Реквизит("Поставщик").Равно(Данные.Поставщик); + + Значение = ЮТЗапросы.ЗначениеРеквизитаЗаписи("Справочник.Товары", Предикат, "Поставщик"); + + ЮТест.ОжидаетЧто(Значение) + .Равно(Данные.Поставщик); + ``` +* `ТаблицаСодержитЗаписи` - Вернет признак, содержит ли таблица записи, удовлетворяющие переданным условиям + ```bsl + ЮТест.ОжидаетЧто( + ЮТЗапросы.ТаблицаСодержитЗаписи("Справочник.Товары", + ЮТест.Предикат() + .Реквизит("Наименование").Равно(ДанныеСправочника.Наименование))) + .ЭтоИстина(); + ``` +* `РезультатЗапроса` - Возвращает результат выполнения простого запроса, используя описание запроса + ```bsl + ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса(); + ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары"; + ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); + ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления"); + ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Товар); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Ссылка"); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить("1+1 КАК Число"); + + ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса)) + .ИмеетДлину(1) + .Свойство("[0].Ссылка").Равно(Товар) + .Свойство("[0].Число").Равно(2); + ``` +* `РезультатПустой` - Определяет, есть ли в результате записи, используя описание запроса + ```bsl + ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса(); + ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары"; + ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); + ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка); + + ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатПустой(ОписаниеЗапроса)).ЭтоЛожь(); + ``` +* `ОписаниеЗапроса` - Формирует описание простого запроса + ```bsl + ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса(); + ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары"; + ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); + ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления"); + ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Товар); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Ссылка"); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить("1+1 КАК Число"); + ``` diff --git a/documentation/docs/features/context.md b/documentation/docs/features/context.md new file mode 100644 index 000000000..8c4d7f2ee --- /dev/null +++ b/documentation/docs/features/context.md @@ -0,0 +1,72 @@ +--- +tags: [Начало, Контекст] +sidebar_position: 5 +--- + +# Контекст + +Механизм глобальных контекстов в тестовом движке играет ключевую роль. Он предоставляет следующие основные возможности: + +1. Передача данных между тестами. Если вам нужно использовать определенные данные в нескольких тестах, вы можете передать их с помощью контекстов. +2. Работа с [текучими выражениями](/docs/getting-started/fluent-api.md). Контексты обеспечивают поддержку текучих выражений, что упрощает написание и чтение кода тестов. +3. [Удаление](test-data/test-data-deletion.md) тестовых данных. После выполнения тестов вы можете использовать контексты для очистки тестовых данных, которые больше не нужны. +4. Передача настроек [Мокито](mocking/mockito.md). Это позволяет настроить поведение мокируемого метода прямо из теста, что упрощает процесс тестирования. + +Однако стоит отметить, что механизм контекстов имеет некоторые ограничения. + +* Он не синхронизируется между клиентом и сервером. +* Контексты тестов имеют ограниченное время жизни. Например, контекст теста "живет" только в рамках теста и [событиях](events.md) `ПередКаждымТестом`, `ПослеКаждогоТеста`. + +## Использование контекстов в тестах + +При разработке тестов, вам могут пригодиться следующие контексты: + +1. Контекст теста ([ЮТест.КонтекстТеста](/api/ЮТест#контексттеста)). Это `структура`, которая существует в рамках одного теста. Она доступна в каждом тесте и в обработчиках [событий](events.md) `ПередКаждымТестом` и `ПослеКаждогоТеста`, а также в аналогичных переопределенных обработчиках. Это означает, что вы можете использовать этот контекст для хранения и доступа к данным, которые нужны только в рамках одного теста. + +2. Контекст тестового набора ([ЮТест.КонтекстТестовогоНабора](/api/ЮТест#контексттестовогонабора)). Это `структура`, которая существует в рамках набора тестов. Она доступна в каждом тесте набора и в обработчиках [событий](events.md) `ПередТестовымНабором`, `ПослеТестовогоНабора`, `ПередКаждымТестом` и `ПослеКаждогоТеста`, а также в аналогичных переопределенных обработчиках. Это означает, что вы можете использовать этот контекст для хранения и доступа к данным, которые нужны в рамках всего набора тестов. + +3. Контекст тестового модуля ([ЮТест.КонтекстМодуля](/api/ЮТест#контекстмодуля)). Это `структура`, которая существует в рамках тестового модуля. Она доступна в каждом тесте модуля и в обработчиках [событий](events.md) `ПередВсемиТестами`, `ПослеВсехТестов`, `ПередТестовымНабором`, `ПослеТестовогоНабора`, `ПередКаждымТестом` и `ПослеКаждогоТеста`, а также в аналогичных переопределенных обработчиках. Это означает, что вы можете использовать этот контекст для хранения и доступа к данным, которые нужны в рамках всего тестового модуля. + +4. Контекст ([ЮТест.Контекст](/api/ЮТест#контекст)): Это умный контекст, который облегчает работу с различными тестовыми контекстами. Он имеет два метода: `Значение` и `УстановитьЗначение`. + Метод `Значение` последовательно ищет необходимое значение во всех контекстах (теста, набора, модуля) и возвращает первое найденное. + Метод `УстановитьЗначение` автоматически определяет контекст, в котором вызывается установка значения, и сохраняет значение в соответствующем контексте. Это позволяет вам не задумываться о том, в каком контексте нужно сохранить данные, и при необходимости переопределять значения. + + ```bsl + // Создаем организацию, которую будем использовать во всех тестах + // Но для конкретного набора переопределим ее + // При этом используется общий метод создания данных, который получает организацию из контекста + Процедура ПередВсемиТестами() + ЮТест.Контекст().УстановитьЗначение("Организация", НоваяОрганизация()); + КонецПроцедуры + + Процедура ПередТестовымНаборомДругойОрганизации() + ЮТест.Контекст().УстановитьЗначение("Организация", НоваяДругаяОрганизация()); // Переопределим настройку из модуля + КонецПроцедуры + + Процедура Тест() + Документ = СоздатьДокумент(); + ... + КонецПроцедуры + + Процедура Тест2() + ЮТест.Контекст().УстановитьЗначение("Организация", НоваяТретьяОрганизация()); // Переопределим настройку + Документ = СоздатьДокумент(); + ... + КонецПроцедуры + + Функция СоздатьДокумент() + Документ = НовыйДокумент(); + Документ.Организация = ЮТест.Контекст().Значение("Организация"); + КонецФункции + ``` + +## Реализация + +Реализация механизма контекстов включает следующие аспекты: + +* Все контексты сохраняются в глобальной структуре. Это означает, что они доступны во всем приложении и могут быть использованы в различных частях кода. + * На клиентской стороне эта глобальная структура представлена в виде переменной модуля приложения. + * На серверной стороне эта структура сохраняется во временном хранилище. Адрес этого хранилища сохраняется в настройках пользователя, а также кэшируется модулем повторного использования. +* Для каждой задачи (например, контекст текучих выражений или настройки мокито) в этой структуре создается свой предопределенный элемент. +* Методы работы с контекстами унифицированы и собраны в модуле ЮТКонтекстСлужебный. Однако не рекомендуется использовать их непосредственно в тестах. +* У каждого контекста может быть свой собственный жизненный цикл, который контролируется конкретным механизмом движка. Это позволяет гибко управлять временем жизни контекстов в зависимости от требований решаемой задачи. diff --git a/documentation/docs/features/events.md b/documentation/docs/features/events.md new file mode 100644 index 000000000..67c86fe01 --- /dev/null +++ b/documentation/docs/features/events.md @@ -0,0 +1,69 @@ +--- +tags: [Начало, События] +sidebar_position: 6 +--- + +# События + +## События тестов + +События тестов можно использовать для настройки тестового окружения: + +* Установка констант и других настроек. +* Создание тестовых данных. +* Удаление созданных данных. +* Если результат обработки события необходимо передать в тест, то это можно сделать с помощью [контекста](./context.md) + +Вот некоторые из событий, которые могут быть интересны разработчикам: + +* `ПередВсемиТестами` - Это событие вызывается перед прогоном тестов модуля в каждом контексте (`&НаСервер` и `&НаКлиенте` для клиент-серверного модуля). Это может быть полезно для установки общих настроек или данных, которые будут использоваться всеми тестами. +* `ПередТестовымНабором` - Это событие вызывается перед прогоном тестов набора. Это может быть полезно для установки или переопределения для тестов набора настроек или данных. +* `ПередКаждымТестом` - Это событие вызывается перед прогоном каждого теста. Это может быть полезно для установки специфических для теста настроек или данных. +* `ПослеКаждогоТеста` - Это событие вызывается после прогона каждого теста. Это может быть полезно для очистки данных или настроек, установленных перед тестом. +* `ПослеТестовогоНабора` - Это событие вызывается после прогона всех тестов набора. +* `ПослеВсехТестов` - Это событие вызывается после прогона всех тестов модуля для контекста (после всех клиентских, либо после всех серверных). + +:::info Транзакция +При использовании транзакций ([ЮТТесты.ВТранзакции()](/api/ЮТТесты#втранзакции)) события `ПередКаждымТестом` и `ПослеКаждогоТеста` включаются в транзакцию. Другие события выполняются вне транзакции. +::: + +Для обработки этих событий необходимо в тестовом модуле разместить одноименный экспортный метод без параметров. + +:::warning[Обработчики могут вызываться дважды] +Важной особенностью всех событий, связанных с исполнением тестов, это то что они могут вызываться дважды - для клиента и для сервера. +Если у нас есть клиент-серверный модуль с тестами доступными и на клиенте, и на сервер, то события будет вызвано дважды - и перед запуском клиентских, и перед запуском серверных тесов. Это касается всех событий, и события `ПередВсемиТестами`, и события `ПослеКаждогоТеста` +::: + +При необходимости разработчик может переопределить обработчики событий при регистрации тестов, вызвав `Перед` и/или `После` и указав имя нужного метода. + +```bsl +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .Перед("ПодготовитьДанныеДляТестов") // Переопределение обработчика выполняемого перед прогоном тестов модуля + .После("ОчиститьДанныеТестов") // Переопределение обработчика выполняемого после прогона тестов модуля + .ДобавитьТестовыйНабор("МойНаборТестов") + .ДобавитьТест("МойПервыйТест") + .ДобавитьТест("МойВторойТест") + .Перед("ПодготовитьДанныеДляПервогоТеста") // Переопределение обработчика для конкретного теста + .ДобавитьТестовыйНабор("МойДругойНаборТестов") + .Перед("ПодготовитьДанныеДругогоНабора") // Переопределение обработчика вызываемого перед прогоном набора тестов + .ДобавитьТест("МойТретийТест") + +КонецПроцедуры +``` + +## События в движке + +YAxUnit также использует события для работы внутренних механизмов: + +* Управление жизненным циклом [контекстов](context.md) +* [Очистка тестовых данных](test-data/test-data-deletion.md) +* Логирование +* и другие. + +Благодаря событиям вы можете развивать и адаптировать механизмы движка под себя, например: + +* Выполнять начальную подготовку базы или настройку движка перед прогонами +* Реализовывать свои механизмы (например удаление данных с использованием подписок) +* Формировать отчеты о тестировании online. diff --git a/documentation/docs/features/features.md b/documentation/docs/features/features.md index 49ecb8155..6395339e5 100644 --- a/documentation/docs/features/features.md +++ b/documentation/docs/features/features.md @@ -1,6 +1,136 @@ --- -sidebar_position: 0 -tags: [Начало] +sidebar_label: Руководство +sidebar_position: 1 --- -# Возможности +# Возможности YAxUnit + +```mermaid +mindmap + t((Тест)) + (Регистрация) + Регистрация и контекст исполнения + Настройка + Параметры вызова + Обработчики событий + Очистка данных + (Мокирование) + Методы конфигурации + HTTP-запрос + ADO.RecordSet + (Создание данных ИБ) + Конструктор объекта + Создание пустышек + Загрузка из макета + (Генерация данных) + Генерация случайных данных + Генерация правдоподобных данных + (Проверка) + Базовые утверждения + Утверждения проверка данных ИБ + Проверка статистики вызовов + Предикаты + (Отчеты) + JUnit + Allure + (Удобства) + Плагин для EDT + Форма настройки/запуска тестов + Текучие выражения +``` + +YAxUnit предоставляет относительно богатый набор инструментов для помощи разработчикам в написании тестов. + +## Регистрация и настройка выполнения тестов + +[Описание](test-registration.md), [API](/api/ЮТТесты) + +Создание тестов начинается с регистрации их в движке, необходимо рассказать движку, какие имеются тесты, как их запускать, с какими параметрами. + +Для этого используется обязательный предопределенный экспортный метод `ИсполняемыеСценарии` + +```bsl +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты.Добавить... + +КонецПроцедуры +``` + +Подробнее смотрите в [описании](test-registration.md). + +## Реализация тестов + +Большая часть методов программного интерфейса YAxUnit собрана в модуле [ЮТест](/api/ЮТест). Этот модуль является точкой входа в API используемый в тестах, он предоставляет доступ к другим модулям движка: + +* [`ЮТест.Данные()`](/api/ЮТТестовыеДанные) - Возвращает модуль работы с [тестовыми данными](test-data/) +* [`ЮТест.ОжидаетЧто()`](/api/ЮТУтверждения) - Возвращает модуль работы с [утверждениями](assertions/assertions-base.md) +* [`ЮТест.ОжидаетЧтоТаблицаБазы()`](/api/ЮТУтвержденияИБ) - Возвращает модуль работы с [утверждениями для проверки объектов информационной базы](assertions/assertions-db.md) +* [`ЮТест.Контекст()`](/api/ЮТКонтекстТеста) - Возвращает модуль работы с [контекстом](context.md) +* [`ЮТест.Предикат()`](/api/ЮТПредикаты) - Возвращает конструктор [предикатов](predicates.md) +* [`ЮТест.Варианты()`](/api/ЮТКонструкторВариантов) - Возвращает конструктор вариантов прогона теста. + +### Создание тестовых данных + +[Описание](test-data/), [API](/api/ЮТТестовыеДанные) + +Почти все тесты опираются на данные, будь то параметры вызова или записи информационной базы. Вам придется эти данные создавать. +Настоятельно рекомендую создавать данные программно, не загрузкой из макетов или вручную, а именно программно генерировать. О причинах можете почитать в [статье](test-data/) о тестовых данных + +Движок предоставляет различные инструменты для создания данных: + +* [`ЮТест.Данные().КонструкторОбъекта`](/api/ЮТТестовыеДанные#конструкторобъекта), с помощью которого вы можете создать объект информационной базы с необходимыми реквизитами. +* Создание пустышек - примитивных объектов с минимальным заполнения. + * [`ЮТест.Данные().СоздатьЭлемент`](/api/ЮТТестовыеДанные#создатьэлемент) + * [`ЮТест.Данные().СоздатьДокумент`](/api/ЮТТестовыеДанные#создатьдокумент) + * [`ЮТест.Данные().СоздатьГруппу`](/api/ЮТТестовыеДанные#создатьгруппу) +* Возможна загрузка из макета. Вы можете создать все необходимые данные [загрузив их из макета](test-data/load-from-templates.md) +* Работа с временными файлами. +* [Подражатель](/api/ЮТПодражатель), для генерации правдоподобных данных. +* Генерация случайных значений. +* [`ЮТест.Данные().КонструкторОбъектаXDTO`](/api/ЮТТестовыеДанные#конструкторобъектаxdto), с помощью которого вы можете создать XDTO объект. + +### Мокирование + +[Описание](mocking), [API](/api/Мокито) + +При тестировании полезно минимизировать "внешнее" воздействие на проверяемый функционал. Например, не использовать внешний http сервис, а эмулировать взаимодействие с ним, либо вместо выполнения запроса к базе данных вернуть предопределенный результат или вместо документа в качестве параметра передать структуру. +Те заменить какой-либо объект обманкой, упрощенной его версией. + +* [`Мокито`](mocking/mockito.md) позволяет настроить/изменить поведение нужных методов конфигурации + * [`Вернуть`](/api/МокитоОбучение#вернуть) нужный результат для определенных параметров. + * [`ВыброситьИсключение`](/api/МокитоОбучение#выброситьисключение) при в нужный момент. + * [`Пропустить`](/api/МокитоОбучение#пропустить) метод (не выполнять). + * Просто [`Наблюдать`](/api/МокитоОбучение#наблюдать) (собирать статистику вызовов) за методом. + * За настройку условий срабатывания тех или иных действий отвечает метода [`Когда`](/api/МокитоОбучение#когда) +* [`ЮТест.Данные().HTTPСервисЗапрос()`](/api/ЮТТестовыеДанные#httpсервисзапрос) позволяет настроить и эмулировать входящий запрос http-сервиса. + Если логика обработки запросов вынесена в отдельный общий модуль, то вы с легкостью с его помощью сможете протестировать ваш сервис без использования веб-сервера. +* [`ЮТест.Данные().ADORecordSet()`](/api/ЮТТестовыеДанные#adorecordset) позволяет протестировать "прямые" запросы к SQL. + +### Проверка ожиданий + +[Описание](assertions/) + +* Проверка результата работы функции. Для проверки переменных (результатов методов) реализованы [базовые утверждения](assertions/assertions-base), подробнее со списком возможностей можете ознакомиться в [сгенерированном описании api](/api/ЮТУтверждения). +* Если метод должен изменить данны в информационной базе, то эти изменения можно проверить с помощью [утверждений ИБ](assertions/assertions-db), [описании api утверждений](/api/ЮТУтвержденияИБ). +* В некоторых случаях необходимо проанализировать какие методы и с какими параметрами вызывались. Здесь вам поможет [проверка статистики вызовов](/api/МокитоПроверки#вызовы), который собирает [Мокито](mocking) + +### Методы-помощники + +* Изменение данных в базе + * [`ЮТест.Данные().УстановитьЗначениеРеквизита`](/api/ЮТТестовыеДанные#установитьзначениереквизита) + * [`ЮТест.Данные().УстановитьЗначенияРеквизитов`](/api/ЮТТестовыеДанные#установитьзначенияреквизитов) +* [Предикаты](predicates.md) +* [Получение данных из базы и работа с запросами](auxiliary-modules/queries.md) +* Варианты вызова. Чтобы повысить покрытие метода тестом можно сформировать наборы (варианты) параметров вызова метода. Для упрощения работы с ними вы можете воспользоваться методом [`ЮТест.Варианты()`](/api/ЮТест#варианты) +* [`ЮТест.Пропустить`](/api/ЮТест#пропустить) +* [`ЮТест.Пауза`](/api/ЮТест#пауза) +* [`ЮТест.ВывестиВКонсоль`](/api/ЮТест#вывестивконсоль) + +## Примеры + +При возникновении трудностей с написанием тестов вы всегда можете + +* Посмотреть примеры [тестов движка](https://github.com/bia-technologies/yaxunit/tree/develop/tests/src/CommonModules) +* Тесты других открытых проектов + * [bellerage-ssl](https://github.com/Bellerage-IT/bellerage-ssl/tree/master/src/cfe/yaxunit/src/CommonModules) diff --git a/documentation/docs/images/allure-report-behaviors.png b/documentation/docs/features/images/allure-report-behaviors.png similarity index 100% rename from documentation/docs/images/allure-report-behaviors.png rename to documentation/docs/features/images/allure-report-behaviors.png diff --git a/documentation/docs/images/allure-report-suites.png b/documentation/docs/features/images/allure-report-suites.png similarity index 100% rename from documentation/docs/images/allure-report-suites.png rename to documentation/docs/features/images/allure-report-suites.png diff --git a/documentation/docs/features/images/edt-create-mock.png b/documentation/docs/features/images/edt-create-mock.png new file mode 100644 index 000000000..2c4c01011 Binary files /dev/null and b/documentation/docs/features/images/edt-create-mock.png differ diff --git a/documentation/docs/features/images/reports.png b/documentation/docs/features/images/reports.png new file mode 100644 index 000000000..6579ece01 Binary files /dev/null and b/documentation/docs/features/images/reports.png differ diff --git a/documentation/docs/features/mocking/mocking.md b/documentation/docs/features/mocking/mocking.md new file mode 100644 index 000000000..d240474ee --- /dev/null +++ b/documentation/docs/features/mocking/mocking.md @@ -0,0 +1,154 @@ +--- +tags: [Начало, Мокирование] +sidebar_position: 3 +--- + +# Мокирование + +## Вводная + +Мокирование - это инструмент/подход для изоляции тестируемых частей кода и контроля над зависимостями. + +При мокировании, мы вместо реальных (продуктовых) объектов подсовываем моки - подделки, фальшивки. Это "двойники" реальных объектов. + +Например: + +* Вместо, реального почтового сервера мы можем поднять в докере легковесный smtp сервер и настроить систему на взаимодействие с ним +* Используя SOAP UI/Postman/Wiremock или что-то другое мы сможем протестировать систему без использования реального сервиса +* Не редко вместо поднятия промышленной СУБД в тестах используются легковесные встраиваемые СУБД (sql lite, h2) + +Все это относится к мокированию и позволяет упростить процесс поднятия окружения для тестов. + +Но также моки могут быть использованы непосредственно при тестировании, например вместо реального документа в тестируемый метод вы можете передать структуру, содержащую все нужные реквизиты (Dummy, болванка), либо обработку с нужными методами (Мок), либо что-то иное, что позволяет вам упростить тест. +Например, при тестировании http-сервисов передаем мок, который "притворяется" запросом, реализует интерфейс объекта `HTTPСервисЗапрос`. + +Основное ограничение такого подхода - обработки и структуры должны передаваться в качестве параметров в тестируемый метод. Если нам очень необходимо подменить объект, который вычисляется внутри метода, то приходится попотеть, либо передавать его в качестве доп. параметров и закладывать работы с ним в конфигурации, либо с помощью расширения возвращать жестко закодированное значение. Каждый раз, в таких случаях, приходится что-то изобретать и выдумывать способ внедрения моков. + +## Мокито + +Для унификации подхода к работе с моками мы разработали инструмент [Мокито](mockito.md), который облегчает тестирование. +Он предоставляет + +* подход к внедрению моков +* программный интерфейс для управления моками. + +Например, у нас есть метод отправки СМС, через шлюз. + +```mermaid +sequenceDiagram + autonumber + actor РоботОтправки + participant ОтправкаСМС + participant ДрайверОтправки as ДрайверОтправки
ОтправкаСМС_Провайдер1 + participant Шлюз as СМС шлюз + + РоботОтправки->>+ОтправкаСМС: Отправить СМС + ОтправкаСМС->>ОтправкаСМС: Определение драйвера + ОтправкаСМС->>ОтправкаСМС: Получение СМС к отправке + ОтправкаСМС->>+ДрайверОтправки: Отправить пакет сообщений + loop Отправка сообщений + ДрайверОтправки-->>ДрайверОтправки: Подготовка тела запроса + critical Запрос к внешнему ресурсу + ДрайверОтправки->>Шлюз: Запрос на отправку сообщения + Шлюз-->>ДрайверОтправки: Статус отправки + end + ДрайверОтправки->>ДрайверОтправки: Анализ статуса + end + ДрайверОтправки-->>-ОтправкаСМС: Статус отправки сообщений + ОтправкаСМС-->>-РоботОтправки: Статус отправки +``` + +Он использует запросы к внешнему ресурсу, СМС шлюзу, который необходим в текущей схеме. Для решения этой проблемы мы можем: + +1. Отправлять реальные СМС в тестах +2. Использовать тестовый шлюза, если провайдер предоставляет такую возможность +3. Поднять мокирующий web-server +4. Заложить в код обходы для тестирования +5. Воспользоваться Мокито, написав в тесте: + + ```bsl + Ответ = Новый HTTPСервисОтвет(200); + Ответ.УстановитьТелоИзСтроки(СериализацияJSON.ЗначениеВСтроку(Новый Структура("id, status", + "9999", + "delivered"))); + + Мокито.Обучение(ОтправкаСМС_Провайдер1) + .Когда("ПослатьСообщение") // Теперь, вместо реального запроса к шлюзу + .Вернуть(Ответ) // метод всегда будет возвращать нужный нам ответ + .Прогон(); + + РоботОтправки.ОтправкаСМС(); + ``` + + В это случае, при отправке, не будут выполнятся запросы к шлюзу, вместо этого метод `ПослатьСообщение` вернет предопределенный результат. + +Подробнее о возможностях и принципах работы с Мокито, вы можете почитать в отдельной [статье](mockito.md). + +## Моки + +Мокито помогает изменять логику работы системы для изоляции тестируемого метода и уменьшения влияния других компонентов системы. +Он закрывает множество задач, но иногда возникают задачи когда даже он не может помочь. + +### `HTTPСервисЗапрос` + +Первый пример с которым мы столкнулись - тестирование http-сервисов. Сервис на вход принимает объект `HTTPСервисЗапрос`, который невозможно создать и настроить из кода 1С. +Необходимо было либо публиковать решение на web-сервере, либо дорабатывать код, чтобы он принимал структуры. + +Несколько первых тестов были созданы с помощью структур. Позже возникла идея реализовать мок, который бы походил на `HTTPСервисЗапрос`, реализовывал его интерфейс, и который можно настроить из теста. +С ним тестировать сервисы стало намного проще и удобнее, позже его включили в YAxUnit, [`ЮТест.Данные().HTTPСервисЗапрос`](/api/ЮТТестовыеДанные#httpсервисзапрос) + +Возможности: + +* Реализует методы `HTTPСервисЗапрос` + * Свойства + * `HTTPМетод` \ `HTTPMethod` + * `БазовыйURL` \ `BaseURL` + * `Заголовки` \ `Headers` + * `ОтносительныйURL` \ `RelativeURL` + * `ПараметрыURL` \ `URLParameters` + * `ПараметрыЗапроса` \ `QueryOptions` + * Методы + * `ПолучитьТелоКакДвоичныеДанные()` \ `GetBodyAsBinaryData()` + * `ПолучитьТелоКакПоток()` \ `GetBodyAsStream()` + * `ПолучитьТелоКакСтроку()` \ `GetBodyAsString()` +* Имеет методы настройки, реализованные в виде [текучих выражений](/docs/getting-started/fluent-api.md) + * Установка тела + * `УстановитьТелоКакДвоичныеДанные()` + * `УстановитьТелоКакСтроку()` + * `УстановитьТелоКакСтрокуJSON()` + * Методы установки свойств + * `ДобавитьЗаголовок()` + * `ДобавитьПараметрЗапроса()` + * `ДобавитьПараметрURL()` + * `Метод()` + * `БазовыйURL()` + * `ОтносительныйURL()` + +### `ADO.RecordSet` + +При тестировании прямых запросов к СУБД также возникает потребность использовать мок, для эмуляции чтения из `ADO.RecordSet`. + +Для таких кейсов был добавлен [`ЮТест.Данные().ADORecordSet`](/api/ЮТТестовыеДанные#adorecordset) реализующий интерфейс `ADO.RecordSet` + +* Свойства + * `EOF` + * `BOF` + * `AbsolutePosition` + * `RecordCount` + * `Fields` +* Методы + * `MoveFirst()` + * `MoveNext()` + * `Close()` + * `Fields()` + * `EOF()` + * `BOF()` +* Методы настройки, реализованные в виде [текучих выражений](/docs/getting-started/fluent-api.md) + * `ЮТест.Данные().ADORecordSet` - принимает информацию о колонках + * `Добавить()` - добавляет новую строку значений + +### Создание своих моков + +При возникновении подобных ситуаций, когда для тестов вам нужны объекты с какой-то логикой/методами, по аналогии с примерами выше вы без проблем сможете создать нужные вам моки. + +Это очень сильно облегчает тестирование и позволяет вам избежать лишнего вмешательства в тестируемый код. diff --git a/documentation/docs/features/mocking/mockito.md b/documentation/docs/features/mocking/mockito.md new file mode 100644 index 000000000..63daa2595 --- /dev/null +++ b/documentation/docs/features/mocking/mockito.md @@ -0,0 +1,713 @@ +--- +tags: [Начало, Мокирование] +sidebar_position: 2 +--- + +# Мокито + +[Мокито](/api/Мокито) - модуль созданный по образу популярного java-фреймворка для тестирования [Mockito](https://site.mockito.org/). Расширяет возможности тестирования, позволяет легко менять логику работы системы подменяя результаты работы методов, отключая какие-либо алгоритмы и проверки. + +## Возможности + +С помощью Мокито мы можем с легкостью управлять поведением системы прямо из теста, для этого есть возможность: + +* Настраивать какие методы "меняют" свое поведение, а какие обрабатывают "как положено". +* Для разных тестов или кейсов внутри теста можно перенастраивать поведение методов. +* Задавать условия на параметры метода. +* Мокировать как экспортные так и приватные методы, процедуры и функции. +* Настраивать разные "реакции" на вызов метода: + * Вернуть указанный результат + * Вызвать исключение + * Не выполнять метода + * Просто наблюдать за методом (собирать статистику по вызовам) + +Вы можете мокировать почти любой метод конфигурации, **исключение** - методы глобального контекста. + +1. Методы общих модулей +2. Методы менеджеров +3. Методы конкретных объектов, будь то документы или справочники + +Примеры: + +* Для всех объектов определенного типа - обучаете через менеджер + ```bsl + Мокито.Обучение(Документы.ПриходТовара) // Для всех документов ПриходТовара + .Когда("ОбработкаПроведения") + ``` +* Если нужно мокировать метод экземпляра объекта, то указываем его при обучении + ```bsl + Мокито.Обучение(ДокументОбъект) // Для конкретного экземпляра объекта, + .Когда("ОбработкаПроведения") // другой документ объект, даже полученный из той же ссылки отработает без мокирования + ``` +* либо ссылку на этот объект + ```bsl + Мокито.Обучение(ДокументСсылка) // Любой документ объект с той же ссылкой + .Когда("ОбработкаПроведения") + ``` +* Можно мокировать методы обработок и отчетов + ```bsl + Мокито.Обучение(Отчеты.ОСВ) // Для всех отчетов + .Когда("СформироватьОтчет") + + Отчет = Отчеты.ОСВ.СоздатьОтчет(); + Мокито.Обучение(Отчет) // для конкретного экземпляра отчета + .Когда("СформироватьОтчет") + ``` + +Мокито не может: + +* Выполнять произвольную логику при вызове - выполнить алгоритм или вызвать какой-либо другой метод. +* Не может изменять параметры. +* При сборе статистики не хранит результат. + +## Принцип работы + +Мокито базируется на двух вещах: + +* Расширения и заимствование методов, благодаря им появилась возможность менять поведение системы. +* Глобальный контекст, доступный как из теста, так и из заимствованных методов конфигурации. + +### Настройка мокируемых методов + +Для того чтобы вы смогли мокировать метода, вам в первую очередь необходимо добавить его в свое расширение. + +И добавить реализацию по шаблону для функции: + +```bsl +&Вместо("<ИмяМокируемогоМетода>") +Функция Мок_<ИмяМокируемогоМетода>(<ПараметрыМетода>) + ПараметрыМетода = Мокито.МассивПараметров(<ПараметрыМетода>); + ПрерватьВыполнение = Ложь; + + Результат = МокитоПерехват.АнализВызова(<МокируемыйОбъект>, "<ИмяМокируемогоМетода>", ПараметрыМетода, ПрерватьВыполнение); + + Если Не ПрерватьВыполнение Тогда + Возврат ПродолжитьВызов(<ПараметрыМетода>); + Иначе + Возврат Результат; + КонецЕсли; +КонецФункции +``` + +Либо для процедуры: + +```bsl +&Вместо("<ИмяМокируемогоМетода>") +Процедура Мок_<ИмяМокируемогоМетода>(<ПараметрыМетода>) + ПараметрыМетода = Мокито.МассивПараметров(<ПараметрыМетода>); + ПрерватьВыполнение = Ложь; + + МокитоПерехват.АнализВызова(<МокируемыйОбъект>, "<ИмяМокируемогоМетода>", ПараметрыМетода, ПрерватьВыполнение); + + Если Не ПрерватьВыполнение Тогда + ПродолжитьВызов(<ПараметрыМетода>); + КонецЕсли; +КонецПроцедуры +``` + +:::tip +Если метод не содержит параметров можно использовать пустой массив: + +```bsl +ПараметрыМетода = Новый Массив; +``` + +::: + +Если вы используете 1С:Enterprise Development Tools (EDT), то можете воспользоваться контекстной командой `1С:Модульные тесты (YAxUnit)` -> `Создать/обновить мок для...` + +![edt-create-mock](../images/edt-create-mock.png) + +Примеры добавления методов в расширение. + +#### Метод общего модуля + +Добавляем обработку метода `ПолучитьПрофиль` общего модуля `РаботаСПочтой` + +```bsl title="tests\ОбщиеМодули\РаботаСПочтой\Модуль.bsl" +&Вместо("ПолучитьПрофиль") +Функция Мок_ПолучитьПрофиль(ИмяОтправителя, ИспользоватьIMAP) Экспорт + // Собираем параметры в массив + ПараметрыМетода = Мокито.МассивПараметров(ИмяОтправителя, ИспользоватьIMAP); + + // Отправляем данные на анализ + ПрерватьВыполнение = Ложь; + Результат = МокитоПерехват.АнализВызова(РаботаСПочтой, "ПолучитьПрофиль", ПараметрыМетода, ПрерватьВыполнение); + + // Обрабатываем результат анализа + Если НЕ ПрерватьВыполнение Тогда + Возврат ПродолжитьВызов(ИмяОтправителя, ИспользоватьIMAP); + Иначе + Возврат Результат; + КонецЕсли; +КонецФункции +``` + +#### Метод модуля менеджера + +Подходит для любого модуля менеджера, будь то, документ, регистр или отчет. + +Добавляем обработку метода `НовыйИдентификаторПодписчикаУведомлений` модуля менеджера справочника `Справочники.МобильныеУстройства` + +```bsl title="tests\Справочники\МобильныеУстройства\МодульМенеджера.bsl" +&Вместо("НовыйИдентификаторПодписчикаУведомлений") +Процедура Мок_НовыйИдентификаторПодписчикаУведомлений(Подписчик, Идентификатор) Экспорт + + // Собираем параметры в массив + ПараметрыМетода = Мокито.МассивПараметров(Подписчик, Идентификатор); + + // Отправляем данные на анализ + ПрерватьВыполнение = Ложь; + МокитоПерехват.АнализВызова(Справочники.МобильныеУстройства, "НовыйИдентификаторПодписчикаУведомлений", ПараметрыМетода, ПрерватьВыполнение); + + // Обрабатываем результат анализа + Если НЕ ПрерватьВыполнение Тогда + ПродолжитьВызов(Подписчик, Идентификатор); + КонецЕсли; + +КонецПроцедуры +``` + +#### Метод модуля объекта + +Добавляем обработку приватного метода `ОбработкаПроведения` модуля объекта справочника `Документ.ПриходТовара` + +```bsl title="tests\Документы\ПриходТовара\МодульОбъекта.bsl" +&Вместо("ОбработкаПроведения") +Процедура Мок_ОбработкаПроведения(Отказ, Режим) + + // Собираем параметры в массив + ПараметрыМетода = Мокито.МассивПараметров(Отказ, Режим); + + // Отправляем данные на анализ + ПрерватьВыполнение = Ложь; + МокитоПерехват.АнализВызова(ЭтотОбъект, "ОбработкаПроведения", ПараметрыМетода, ПрерватьВыполнение); + + // Обрабатываем результат анализа + Если НЕ ПрерватьВыполнение Тогда + ПродолжитьВызов(Отказ, Режим); + КонецЕсли; + +КонецПроцедуры +``` + +После этого, вы может управлять поведение метода из ваших тестов. + +Тестирование с использованием Мокито можно разделить на 3 стадии: + +```mermaid +flowchart LR + training(1. Обучение) --> run(2. Прогон, запуск тестового метода) + run --> check(3. Проверка) +``` + +1. Сначала вы проводите **обучение** - настраиваете, какие методы мокируем и как они должны себя вести. +2. Потом выполняете тестовый **прогон** целевого метода. +3. После вам может понадобиться **проверка** вызовов, были ли вызваны нужные метода, с какими параметрами. + +```bsl + // Подготовка + Ответ = Новый HTTPСервисОтвет(1); + Ответ.УстановитьТелоИзСтроки(СериализацияJSON.ЗначениеВСтроку(Новый Структура("id, status", + "9999", + "delivered"))); + + // Обучение мокито + Мокито.Обучение(ОтправкаСМС_Провайдер1) + .Когда("УстановитьСоединение").Вернуть(Истина) + .Когда("ПослатьСообщение").Вернуть(Ответ) + .Прогон(); + + // Тестовый прогон + РоботОтправки.ОтправкаСМС(); + + // Проверка статистики + Мокито.Проверить(ОтправкаСМС_Провайдер1) + .КоличествоВызовов("ПослатьСообщение") + .Равно(1); +``` + +Подробнее расскажу по каждой стадии + +### Обучение + +Обучение - это процесс настройки мокито. Вы указываете какие методы и при каких условиях (параметрах) должны изменить свое поведение. + +С помощью API вы можете: + +* [`Наблюдать()`](/api/МокитоОбучение#наблюдать) - просто наблюдать за методом, собирать статистику. +* [`Когда()`](/api/МокитоОбучение#когда) - указать какой метод и с каким параметрами необходимо обрабатывать. +* [`Вернуть()`](/api/МокитоОбучение#вернуть) - настроить, чтобы метод возвращал нужный результат. +* [`ВыброситьИсключение()`](/api/МокитоОбучение#выброситьисключение) - настроить, чтобы метод выбрасывал исключение. +* [`Пропустить()`](/api/МокитоОбучение#пропустить) - настроить, чтобы метод был пропущен, не выполнился. +* [`ВыполнитьМетод()`](/api/МокитоОбучение#выполнитьметод) - настроить, чтобы метод выполнился как есть. + +```bsl +Мокито.Обучение(ОтправкаСМС_Провайдер1) + .Когда("УстановитьСоединение").Пропустить() + .Когда("ПослатьСообщение").Вернуть(Ответ) + .Наблюдать("ОбработатьОтвет") +``` + +Подробнее о методах ниже, а сейчас для лучшего понимания расскажу как работает обучение. +Используя методы API вы формируете настройки `Мокито`, которые при вызове каждого метода обучения изменяются и сохраняются в [глобальном контексте](../context.md) движка. Каждый метод просто сохраняет нужным образом параметры в глобальные структуру. + +```mermaid +sequenceDiagram + autonumber + actor Тест + participant Мокито + participant Контекст + Тест-->Мокито: Мокито.Обучение(). Включить обучение. + loop Настройка мокирования методов конфигурации + Тест->>+Мокито: Когда(). Указываем условия перехвата. + Мокито-->>Контекст: Сохранение условий перехвата + Тест->>Мокито: ВернутьРезультат(). Настраиваем поведение. + Мокито-->>Контекст: Привязка поведения к условиям перехвата + Мокито->>-Тест: Завершили настройку перехвата + end +``` + +:::caution Сброс старых настроек +Каждый вызов метода `Мокито.Обучение`, по умолчанию, очищает предыдущие настройки по указанному объекту. Это нужно учитывать когда вы доучиваете Мокито в тесте. +Если вам не нужно сбрасывать старые настройки по объекту передайте соответствующий параметр + +```bsl +Мокито.Обучение(ОтправкаСМС_Провайдер1) + .Когда("УстановитьСоединение").Пропустить() + .Когда("ПослатьСообщение").Вернуть(Ответ) + .Наблюдать("ОбработатьОтвет") + .Прогон(); +// Какая то логика + +Мокито.Обучение(ОтправкаСМС_Провайдер1, Ложь) // Дообучение + .Когда("ПослатьСообщение").Вернуть(Ответ2); +``` + +::: + +В процессе обучения мы создаем правила, описывающие как будет вести себя метод при различных вариантах вызова. +Правила состоят из двух частей + +* условие срабатывания (об/ект, метод, параметры), задаются в методе `Когда` или `Наблюдать` +* действие выполняемое при соблюдении условий - `Вернуть`, `ВыброситьИсключение`, `Пропустить`, `ВыполнитьМетод` + +#### Условия + +Условие состоит из трех частей + +* Объект, которому относится метод +* Имя метода +* Параметры метода + +##### Объект + +Объект является обязательным и задается в методе [`Мокито.Обучение()`](/api/Мокито#обучение). + +В качестве объекта могут выступать: + +* **Менеджер объекта метаданных**, в таком случае под условие попадают все обращения к этому типу метаданных, будь вызовы методов модуля менеджера или объекта. +* **Ссылка**, под условие попадают все обращения к объектам имеющим ту же ссылку. +* **Объект** - конкретный объект метаданных (документ, обработка, набор записей), только обращения к методам этого экземпляра объекта. + +##### Имя метода + +Имя метода, является обязательным. Указывается в методах `Когда` или `Наблюдать`. +Можно обрабатывать и экспортные и приватные метода, главное чтобы для него была [выполнена настройка](#настройка-мокируемых-методов) + +##### Параметры + +Указывается в методах `Когда` или `Наблюдать`, передачей массива ожидаемых параметров. + +Необязательная часть условия, если не указывать, но будут обрабатывать все вызовы. +Также необязательно указывать все параметры метода, достаточно указать только первую часть. + +В качестве параметров можно указывать: + +* Конкретные значения параметров +* Маски + * [`Мокито.ЛюбойПараметр()`](/api/Мокито#любойпараметр) - параметр может принимать любое значение + * [`Мокито.СтроковыйПараметр()`](/api/Мокито#строковыйпараметр) - параметр может принимать только строковые значения + * [`Мокито.ЧисловойПараметр()`](/api/Мокито#числовойпараметр) - параметр может принимать только числовые значения + * [`Мокито.ТипизированныйПараметр()`](/api/Мокито#типизированныйпараметр) - параметр может принимать значения указанного типа +* Предикаты, параметр должен соответствовать заданным условиям. + ```bsl + Мокито.Обучение(РаботаСHTTP) + .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, ЮТест.Предикат().НеИмеетСвойства("Авторизация"))) + .Вернуть(ОтветНеобходимаАвторизация()) + ``` + +##### Варианты обучения (формирования условий) + +Существует 2 основных подхода к формированию условий вызова: + +1. Явный вызов метода с параметрами + ```bsl + Мокито.Обучение(РаботаСHTTP) + .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные)) + .Вернуть(2) + ``` +2. Указание имени метода и набора параметров + ```bsl + Мокито.Обучение(РаботаСHTTP) + .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(ИсточникДанных, Данные)) + .Вернуть(2) + ``` + +Первый вариант имеет ряд недостатков: + +1. Работает только для экспортных методов +2. Необходимо передавать все обязательные параметры или использовать для них маску `Мокито.ЛюбойПараметр()` +3. Если не указывать необязательные параметры, то их значения по умолчанию попадут в настройку. Покажу на примере. + ```bsl + // Имеется метод + Функция Метод(Параметр1, Параметр2, Параметр3 = 3) Экспорт + Возврат Параметр1 + Параметр2 + Параметр3; + КонецФункции + + Мокито.Обучение(...) + .Когда(Метод(1, 2)) + .Вернуть(0) + .Прогон(); + + Метод(1, 2); // Вернет 0 + Метод(1, 2, 3); // Вернут 0 + Метод(1, 2, 4); // Вернут 7, будет выполнен основной алгоритм + + // Второй вариант обучения + Мокито.Обучение(...) + .Когда("Метод", Мокито.МассивПараметров(1, 2)) + .Вернуть(0) + .Прогон(); + + Метод(1, 2); // Вернет 0 + Метод(1, 2, 3); // Вернут 0 + Метод(1, 2, 4); // Вернут 0 + ``` + +#### Действия (Реакции) + +После того как определились с условием вызова указанным в методе `Когда` нужно указать реакцию (действие). Возможные реакции: + +* [`Вернуть`](/api/МокитоОбучение#вернуть) - вернуть указанное значение +* [`ВыброситьИсключение`](/api/МокитоОбучение#выброситьисключение) - вызвать исключение с переданным текстом +* [`Пропустить`](/api/МокитоОбучение#пропустить) - пропустить выполнение метод (актуально для процедур) +* [`ВыполнитьМетод`](/api/МокитоОбучение#выполнитьметод) - выполнить основной метод конфигурации, обычно комбинируется к другими реакциями, чтобы задать исключение. + Предположим, по умолчанию метод должен выбрасывать исключение, но для одного конкретного случая должен выполниться реальный метод конфигурации. Это проще всего сделать следующим образом: + ```bsl + Мокито.Обучение(...) + // По умолчанию метод падает + .Когда("МегаФункция").ВыброситьИсключение("Упал") + // При вызове с параметрами `1, 2, 3` выполняется метод конфигурации + .Когда("МегаФункция", Мокито.МассивПараметров(1, 2, 3)).ВыполнитьМетод() + ``` + +```bsl title="Пример мокирования методов документа" +Документ = СоздатьДокумент(); + +Мокито.Обучение(Документ) + .Когда("ОбработкаПроверкиЗаполнения").Пропустить() // Отключим проверку заполнения документа + .Когда("КонтрольОстатков").Вернуть(Истина) // Проверка остатков будет успешной + .Когда("ЗафиксироватьОшибки").ВыброситьИсключение("Не должно быть ошибок") // При вызове "лишнего" кода сразу валим тест + .Когда("СформироватьПроводки") + .Пропустить() // Отключаем формирование таблицы движений + .Когда("СформироватьПроводки", Мокито.МассивПараметров("Взаиморасчеты")) + .ВыполнитьМетод() // Но включаем для регистра "Взаиморасчеты" + .Прогон(); // Завершаем настройку + +Документ.Записать(РежимЗаписиДокумента.Проведение); +``` + +##### Цепочки действий + +В дополнение к условиям можно формировать цепочки действий, которые будут выполнятся в порядке их "регистрации". +Например, есть метод без параметров, для которого необходимо сэмулировать ситуацию когда он возвращает разные значения. + +```bsl + +Мокито.Обучение(...) + .Когда("БытьИлиНеБыть") + .Вернуть("Быть") // Первый вызов метода вернет "Быть" + .Вернуть("Или") // Второй вызов + .Вернуть("НеБыть") // Третий + .ВыброситьИсключение("Конец") // Четвертый и все последующие +``` + +#### Примеры формирования различных вариантов условий + +```bsl title="Имеется метод:" +Функция ОтправитьОбъектНаСервер(ИсточникДанных, Объект, HTTPМетод = "POST", + ТипКонтента = "json", Преобразование = Неопределено, + ДопНастройки = Неопределено, Ответ = Неопределено, ОтветВСтруктуру = Ложь, + ТелоОтветаВХранилище = Ложь) Экспорт +``` + +Предположим необходимо: + +* Переопределить все вызовы метода - указываем имя метода без указания параметров + ```bsl + Мокито.Обучение(РаботаСHTTP) + .Когда("ОтправитьОбъектНаСервер").Вернуть(1) + ``` +* Переопределить вызов, когда первый параметр имеет определенное значение + ```bsl + Мокито.Обучение(РаботаСHTTP) + .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(ИсточникДанных)) + .Вернуть(2); + + // Через явный вызов метода + Мокито.Обучение(РаботаСHTTP) + .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Мокито.ЛюбойПараметр()) + .Вернуть(2) // Тут используется маска `Мокито.ЛюбойПараметр()`, тк второй параметр является обязательным + ``` +* Переопределить вызов, когда **второй** параметр имеет определенное значение + ```bsl + Мокито.Обучение(РаботаСHTTP) + .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ЛюбойПараметр(), Объект)) + .Вернуть(2); + + // Через явный вызов метода + Мокито.Обучение(РаботаСHTTP) + .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ЛюбойПараметр(), Объект) + .Вернуть(2) + ``` +* Условие на тип параметра + ```bsl + // Первый параметр должен быть ссылкой на справочник, второй числом + Мокито.Обучение(РаботаСHTTP) + .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ТипизированныйПараметр(Тип("СправочникСсылка.ИсточникиДанных")), Мокито.ЧисловойПараметр())) + .Вернуть(3); + + // Через явный вызов метода + Мокито.Обучение(РаботаСHTTP) + .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ТипизированныйПараметр(Тип("СправочникСсылка.ИсточникиДанных")), Мокито.ЧисловойПараметр())) + .Вернуть(3); + ``` +* На основании порядка вызовов метода + ```bsl + Мокито.Обучение(РаботаСHTTP) + .Когда("ОтправитьОбъектНаСервер") + .Вернуть(1) + .Вернуть(2) + .Вернуть(3) + .ВыброситьИсключение("Конец"); + ``` + +### Тестовый прогон + +После обучения, настройки реакций на вызовы методов, можно запускать тест нужного метода. +Но перед этим необхдимо перевести `Мокито` в режим **прогона тестов**, для этого используется метод [`Мокито.Прогон()`](/api/Мокито#прогон). + +Метод `Прогон` завершает настройку и изменяет режим работы, после этого все вызовы к настроенным методам (добавленным в расширение) будут перехватываться и анализироваться на совпадение условий вызова. + +:::info +Также метод `Прогон` очищает накопленную статистику прошлых прогонов. Если вам необходимо ее сохранить передайте `Ложь` в параметрах. +::: + +* Для методов, которые были указаны в `Когда()` или `Наблюдать()`, будет собираться статистика вызовов. +* Для методов, у которых есть подходящая "реакция" будет переопределено выполнение и запустится соответствующая реакция (вернуть значение, вызвать исключение и тд) +* Для прочих методов (не настроенных) логика не изменится. + +```bsl +// Настройка +Мокито.Обучение(РаботаСHTTP) + .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ЛюбойПараметр(), Мокито.ЛюбойПараметр())) + .Вернуть(РезультатПоУмолчанию) + .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Справочники.ИсточникиДанных.FTP, 2)) + .Вернуть(2) + .Прогон(); // Перевод в режим прогона теста + +Результат = РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные); // Результат будет равен переменной РезультатПоУмолчанию +Результат = РаботаСHTTP.ОтправитьОбъектНаСервер(Справочники.ИсточникиДанных.FTP, 2); // Результат будет равен 2 +``` + +Схема вызовов при вызове замокированного метода. + +```mermaid +sequenceDiagram + autonumber + actor Тест + participant Конфигурация + participant Расширение + participant Мокито + participant Контекст + Тест-->Мокито: Мокито.Прогон(). Переходим к тестированию + Тест->>Конфигурация: Вызов метода конфигурации. + Конфигурация->>Расширение: Вызов расширяющего метода. + Расширение->>Расширение: Собирает информацию о вызове + Расширение->>+Мокито: Анализ вызова метода + Мокито->>Контекст: Получение настроек + Контекст-->>Мокито: Настройки мокирования + Мокито->>Мокито: Находит нужную настройку + Мокито-->>Контекст: Сохраняет информацию о вызове метода + Мокито-->>-Расширение: Значение, которое должен вернуть метод + Расширение-->>Тест: Значение, которое должен вернуть метод +``` + +### Проверка + +После прогона теста можно проверить какие методы, с какими параметрами вызывались. Для этих целей необходимо воспользоваться методом [`Мокито.Проверить`](/api/Мокито#проверить) + +```bsl +ЛюбойПараметр = Мокито.ЛюбойПараметр(); + +Мокито.Проверить(РаботаСHTTP) // Устанавливаем проверяемый объект + // Проверка общего количества обращений к методу + .КоличествоВызовов("ОтправитьОбъектНаСервер") + .Заполнено() + .КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(ЛюбойПараметр, ЛюбойПараметр)) + .Равно(3) + // Проверка обращений с фильтром по типам параметров + .КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ТипизированныйПараметр(ТипИсточникДанных), Мокито.ЧисловойПараметр())) // Условия поиска вызовов + .Больше(1) // Проверки + .Равно(2) + .КоличествоВызовов("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ТипизированныйПараметр(ТипИсточникДанных), Мокито.ЧисловойПараметр())) + .Равно(2) + // Проверка обращений к методу с конкретными параметрами + .КоличествоВызовов("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(1, 2)) + .Равно(1) + .КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(1, 2)) + .Равно(1) +``` + +Принцип формирования проверки: + +* Указываем проверяемый объект `Проверить(РаботаСHTTP)`. +* Указываем условия поиска вызовов метода. Логика формирования условия такая же как при обучении. + Например, `КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(ЛюбойПараметр, Мокито.ЧисловойПараметр()))` + Соберет все вызовы метода `РаботаСHTTP.ОтправитьОбъектНаСервер`, к которых вторым параметром идет число, а 3й и последующий параметры имеют значения по умолчанию. +* Проверяем собранные вызовы: + * [`Заполнено`](/api/МокитоПроверки#заполнено) - есть вызовы метода по указанным условиям + * [`Пусто`](/api/МокитоПроверки#пусто) - нет вызовов метода по указанным условиям + * [`Равно`](/api/МокитоПроверки#равно) - количество вызовов попавших под условия равно указанному значению + * [`Больше`](/api/МокитоПроверки#больше) - количество вызовов попавших под условия больше указанного значения + * [`Меньше`](/api/МокитоПроверки#меньше) - количество вызовов попавших под условия меньше указанного значения + +#### Статистика вызовов + +Также вы можете более детально проанализировать вызовы методов + +Для этого можно воспользоваться методом [`Мокито.Проверить(Объект).Вызовы`](/api/МокитоПроверки#вызовы), который возвращает массив с описанием вызовов: + +* `Объект` - `Произвольный` - Объект, которому принадлежит метод +* `ИмяМетода` - `Строка` - Имя вызванного метода +* `Параметры` - `Массив` из Произвольный - Набор параметров, с которыми был вызван метод +* `Контекст` - `Строка` - Контекст вызова метода (не реализовано) + +```bsl +ВызовыМетода = Мокито.Проверить(Интеграция).Вызовы("ВыполнитьЗапрос"); +ЮТест.ОжидаетЧто(ВызовыМетода, "Вызовы метода ВыполнитьЗапрос") + .ИмеетТип("Массив") + .ИмеетДлину(3) + .КаждыйЭлементСодержитСвойствоСоЗначением("Объект", Интеграция) + .КаждыйЭлементСодержитСвойствоСоЗначением("ИмяМетода", "ВыполнитьЗапрос") + .КаждыйЭлементСодержитСвойство("Параметры") + .Свойство("[0].Параметры[0]").Равно("Адрес") + .Свойство("[1].Параметры[0]").Равно(Адрес) + .Свойство("[2].Параметры[1]").Равно(2); +``` + +## Примеры + +### Вызвать исключение при записи объекта + +#### Шаг1. Добавляем метод в расширение + +Заимствуем в расширение метод `ПередЗаписью`, если обработчик в модуле объекта отсутствует вы все равно можете подписаться таким образом на обработку события. И вставляем код для работы Мокито. + +```bsl +&Вместо("ПередЗаписью") +Процедура Мок_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) + + ПараметрыМетода = Мокито.МассивПараметров(Отказ, РежимЗаписи, РежимПроведения); + + ПрерватьВыполнение = Ложь; + МокитоПерехват.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение); + + Если НЕ ПрерватьВыполнение Тогда + ПродолжитьВызов(Отказ, РежимЗаписи, РежимПроведения); + КонецЕсли; + +КонецПроцедуры +``` + +#### Шаг2. Настройка теста + +После этого вы можете управлять обработкой события в тесте. + +```bsl +Мокито.Обучение(Документы.Оплата) + .Когда("ПередЗаписью").ВыброситьИсключение("Не удалось записать объект") + .Прогон(); + +Документ = СоздатьДокументОплаты(); + +ЮТест.ОжидаетЧто(Документ) + .Метод("Записать").Параметр(РежимЗаписиДокумента.Проведение) + .ВыбрасываетИсключение("Не удалось записать объект"); +; +``` + +### Анализ вызовов метода + +Предположим у нас есть методы синхронизация данных базы с внешней системой и нам необходимо проверить корректность создания/удаления/изменеиня данных. В общем модуле интеграции созданы методы `СоздатьОбъект`, `УдалитьОбъект`, `ОбновитьОбъект`. + +В тесте мы будем формировать различные входные данные и считать вызовы этих методов, проверять чтобы не было лишних вызовов. + +#### Шаг1. Добавление методов в расширение + +Сначала необходимо выполнить заимствование и настройку методов `СоздатьОбъект`, `УдалитьОбъект`, `ОбновитьОбъект`. + +#### Шаг2. Настраиваем мокито + +```bsl +Мокито.Обучение(СуперИнтеграция) + .Наблюдать("СоздатьОбъект") + .Наблюдать("УдалитьОбъект") + .Наблюдать("ОбновитьОбъект") + .Прогон(); +``` + +#### Шаг3. Реализация теста + +```bsl +ЗаписатьНачальныеДанные(); // Установим начальное состояние базы, создадим нужные данные + +// Настроим ответы сервиса, под наши кейсы +Мокито.Обучение(СуперИнтеграция, Ложь) // Важно!. Передаем Ложь, чтобы не затереть ранее установленные настройки + .Когда("ПолучитьДанные") + .Вернуть(ОтветСервисаНовыйЭлемент()) // 1й вызов + .Вернуть(ОтветСервисаИзмененЭлемент()) // 2й вызов + .Вернуть(ОтветСервисаУдаленЭлемент()) // 3й вызов + .Вернуть(ОтветСервисаОшибка()) // 4й вызов + .Вернуть(ОтветСервисаНетДанных()); // 5й вызов + +Описание = "Первая итерация, новый элемент"; +Мокито.Прогон(); +СуперИнтеграция.ВыполнитьСинхронизацию(); + +Мокито.Проверить(СуперИнтеграция, Описание) + .КоличествоВызовов("СоздатьОбъект").Равно(1) + .КоличествоВызовов("УдалитьОбъект").Пусто() + .КоличествоВызовов("ОбновитьОбъект").Пусто(); + +Описание = "Вторая итерация, изменен элемент"; +Мокито.Прогон(); // Важно!. Повторно вызываем метод, чтобы сбросить ранее накопленную статистику +СуперИнтеграция.ВыполнитьСинхронизацию(); + +Мокито.Проверить(СуперИнтеграция, Описание) + .КоличествоВызовов("СоздатьОбъект").Пусто() + .КоличествоВызовов("УдалитьОбъект").Пусто() + .КоличествоВызовов("ОбновитьОбъект").Равно(1); + +Описание = "Третья итерация, удален элемент"; +Мокито.Прогон(); // Важно!. Повторно вызываем метод, чтобы сбросить ранее накопленную статистику +СуперИнтеграция.ВыполнитьСинхронизацию(); + +Мокито.Проверить(СуперИнтеграция, Описание) + .КоличествоВызовов("СоздатьОбъект").Пусто() + .КоличествоВызовов("УдалитьОбъект").Равно(1) + .КоличествоВызовов("ОбновитьОбъект").Пусто(); + +// И так далее +``` diff --git a/documentation/docs/features/predicates.md b/documentation/docs/features/predicates.md new file mode 100644 index 000000000..21246eb8c --- /dev/null +++ b/documentation/docs/features/predicates.md @@ -0,0 +1,228 @@ +--- +tags: [Начало, Предикаты, Утверждения, Запросы, Мокирование] +sidebar_position: 4 +--- + +# Предикаты + +Предикаты это довольно мощный и универсальный инструмент. С помощью предикатов вы формируете набор условий, сродни отбору. Который можно использовать: + +1. В утверждениях для [проверки коллекций](assertions/assertions-base.md#проверка-на-соответствие-набору-условий-предикату) +2. В утверждениях для [проверки записей базы](assertions/assertions-db) +3. Для [получения данных базы](auxiliary-modules/queries.md) +4. Для указания условий при [обучении Мокито](mocking/mockito.md#параметры) + +Предикаты расширяют и унифицируют функциональность тестового движка. + +Механизм предикатов ([ЮТест.Предикат](/api/ЮТест#предикат)): + +* позволяет формировать наборы условий (отборы) и передавать их в качества параметров; +* построен по модели [текучих выражений](/docs/getting-started/fluent-api.md) и имеет схожий с базовыми утверждениями синтаксис ([`ЮТест.ОжидаетЧто()`](/api/ЮТУтверждения)); +* позволяет упростить и унифицировать многие механизмы движка, некоторые еще только в планах; +* за счет этого, расширение функциональности предикатов автоматические расширяет функциональность многих механизмов движка. + +Чтобы воспользоваться предикатами, вам нужно сначала создать их с помощью конструктора [ЮТест.Предикат](/api/ЮТест#предикат), а затем передать в метод. + +Например, нам нужно проверить формирование записей в регистре. + +```bsl +Процедура АктуализацияУведомлений() Экспорт + + // Тест удостовериться в отсутствии нужных записей перед вызовом метода + // Вызовет метод формирующий записи в регистре + // Проверит наличие сформированных записей + // А также проверит записи на соответствие требований + + ИмяРегистра = "РегистрСведений.ОповещенияПользователя"; + Объект = ТестовыеДанные.Объект(); + + // Для этого мы формируем отбор поиска записей + Отбор = ЮТест.Предикат() + .Реквизит("Источник").Равно(Объект) + .Реквизит("ТипОповещения").Равно(Справочники.ТипыОповещенийПользователя.Уведомление) + .Получить(); + + // По этому отбору проверим отсутствие нужных записей + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра) + .НеСодержитЗаписи(Отбор); + + УведомленияВызовСервера.АктуализацияУведомлений(); + + // А после вызова метода - присутствие + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра) + .СодержитЗаписи(Отбор); + + // Также получим сами записи используя тот же отбор + ДанныеУведомления = ЮТЗапросы.Запись(ИмяРегистра, Отбор); + + ЮТест.ОжидаетЧто(ДанныеУведомления) + .Свойство("Прочитано").ЭтоЛожь() + .Свойство("Пользователь").Равно(Справочники.ГруппыОповещенийПользователей.Инженер); + +КонецПроцедуры +``` + +## Возможности + +* Проверка вложенных свойств: + * [`Реквизит`](/api/ЮТПредикаты#реквизит) - Устанавливает имя реквизита, который необходимо проверить. Все последующие проверки будут относится к нему. + * [`Свойство`](/api/ЮТПредикаты#свойство) - Это алиас (псевдоним) для `Реквизит` +* Проверки + * [`Равно`](/api/ЮТПредикаты#равно) - Добавляет предикат, проверяющий равенство объекта (свойства) указанному значению + * [`НеРавно`](/api/ЮТПредикаты#неравно) - Добавляет предикат, проверяющий не равенство объекта (свойства) указанному значению + * [`Заполнено`](/api/ЮТПредикаты#заполнено) - Добавляет предикат, проверяющий заполненность объекта (свойства) + * [`Пусто`](/api/ЮТПредикаты#пусто) - Добавляет предикат, проверяющий, что объект (свойств) не заполнено + * [`Больше`](/api/ЮТПредикаты#больше) - Добавляет предикат, проверяющий, что значение объекта (свойства) больше указанного + * [`БольшеИлиРавно`](/api/ЮТПредикаты#большеилиравно) - Добавляет предикат, проверяющий, что значение объекта (свойства) больше или равно указанному + * [`Меньше`](/api/ЮТПредикаты#меньше) - Добавляет предикат, проверяющий, что значение объекта (свойства) меньше указанного + * [`МеньшеИлиРавно`](/api/ЮТПредикаты#меньшеилиравно) - Добавляет предикат, проверяющий, что значение объекта (свойства) меньше или равно указанному + * [`ИмеетТип`](/api/ЮТПредикаты#имееттип) - Добавляет предикат, проверяющий, что значение объекта (свойства) имеет указанный тип + * [`ИмеетТипОтличныйОт`](/api/ЮТПредикаты#имееттипотличныйот) - Добавляет предикат, проверяющий, что значение объекта (свойства) имеет тип отличный от указанного + * [`ИмеетДлину`](/api/ЮТПредикаты#имеетдлину) - Добавляет предикат, проверяющий, длину/размер значение объекта (свойства) на равенство указанному значению + * [`ИмеетДлинуОтличнуюОт`](/api/ЮТПредикаты#имеетдлинуотличнуюот) - Добавляет предикат, проверяющий, длину/размер значение объекта (свойства) на не равенство указанному значению + * [`ИмеетСвойство`](/api/ЮТПредикаты#имеетсвойство) - Добавляет предикат, проверяющий, что значение объекта (реквизита) содержит вложенное свойство + * [`НеИмеетСвойства`](/api/ЮТПредикаты#неимеетсвойства) - Добавляет предикат, проверяющий, что значение объекта (реквизита) не содержит вложенное свойство + * [`Содержит`](/api/ЮТПредикаты#содержит) - Добавляет предикат, проверяющий, что значение объекта (реквизита) содержит указанное значение + * [`НеСодержит`](/api/ЮТПредикаты#несодержит) - Добавляет предикат, проверяющий, что значение объекта (реквизита) не содержит указанное значение + * [`СодержитСтрокуПоШаблону`](/api/ЮТПредикаты#содержитстрокупошаблону) - Добавляет предикат, проверяющий, что строка соответствует указанному регулярному выражению + * [`НеСодержитСтрокуПоШаблону`](/api/ЮТПредикаты#несодержитстрокупошаблону) - Добавляет предикат, проверяющий, что строка не соответствует указанному регулярному выражению + * [`ВСписке`](/api/ЮТПредикаты#всписке) - Добавляет условие, что проверяемое значение (или значение его свойства) входит в список значений +* Служебные + * [`Получить`](/api/ЮТПредикаты#получить) - Возвращает набор сформированных утверждений. + Рекомендуется использовать этот метод, если планируется отложенная проверка предикатов. Например, вы хотите сформировать два набору предикатов и проверять их в зависимости от условия. + Метод копирует настроенный набор утверждений в массив и возвращает его, таким образом сохраняется состояние, которое можно передавать дальше. + +Возможно создавать предикаты на основании структуры - `ЮТест.Предикат(Структура)`, например: + +```bsl +// Вместо +Предикат = ЮТест.Предикат() + .Свойство("Наименование").Равно(НаименованиеОбъекта) + .Свойство("Код").Равно(КодОбъекта); + +// Можно использовать структур +Условия = Новый Структура("Наименование, Код", НаименованиеОбъекта, КодОбъекта); +Предикат = ЮТест.Предикат(Условия); +``` + +## Примеры использования + +* Проверка коллекции + ```bsl + // Проверят, что в коллекции есть элементы с реквизитом `Число`, значение которого равно `2` + ЮТест.ОжидаетЧто(Коллекция) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Число").Равно(2)); + + // Тоже самое, что и проверка выше + ЮТест.ОжидаетЧто(Коллекция) + .Содержит(ЮТест.Предикат() + .Реквизит("Число").Равно(2)); + + // Проверят, что каждый элемент коллекции это заполненный массив + ЮТест.ОжидаетЧто(Коллекция) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Заполнено().ИмеетТип("Массив")); + + // Проверят, что в коллекции нет элементов с реквизитом `Число`, значение которого равно `2` + ЮТест.ОжидаетЧто(Коллекция) + .НеСодержит(ЮТест.Предикат() + .Реквизит("Число").Равно(2)); + ``` +* Описания параметров метода при мокировании + Например, имеем метод, который принимает в параметрах структуру. Необходимо вернуть 2 разных результата в зависимости от значения реквизита входной структуры. + ```bsl title="Проверяемый метод" + Функция Посчитать(Параметры) + Если Параметры.Оператор = "Сложить" Тогда + Возврат Параметры.Операнд1 + Параметры.Операнд2; + ИначеЕсли Параметры.Оператор = "Вычесть" Тогда + Возврат Параметры.Операнд1 - Параметры.Операнд2; + КонецЕсли; + КонецФункции + ``` + ```bsl title="Тест" + Мокито.Обучение(Модуль) + .Когда(Модуль.Посчитать(ЮТест.Предикат() + .Реквизит("Оператор").Равно("Сложить"))) + .ВернутьРезультат(Результат1) + + .Когда(Модуль.Посчитать(ЮТест.Предикат() + .Реквизит("Оператор").Равно("Вычесть"))) + .ВернутьРезультат(Результат2); + ``` +* Утверждения, проверяющие данные в базе на основании предикатов. + ```bsl + ЮТест.ОжидаетЧтоТаблица("Справочник.Товары").СодержитЗаписи( + ЮТест.Предикат() + .Реквизит("Наименование").Равно("Товар 1") + .Реквизит("Ссылка").НеРавно(Исключение) + ); + ``` +* Получение записей из базы + ```bsl + ДанныеТовара = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат() + .Реквизит("Наименование").Равно("Товар 1") + .Реквизит("Ссылка").НеРавно(Исключение)); + ``` + +## Особенности + +### Особенности контекста + +Предикаты как и большинство механизмов построены на [текучих выражениях](/docs/getting-started/fluent-api.md) с сохранением состояния в глобальном [контексте](context.md). + +Это приводит к тому, что вы не можете сразу использовать несколько предикатов, например + +```bsl +Мокито.Обучение(Модуль) + .Когда(Модуль.СделатьЧтоТо( + ЮТест.Предикат().ИмеетТип("Строка"), + ЮТест.Предикат().ИмеетТип("Число"))) + .ВернутьРезультат(Результат1); +``` + +В этом примере 1С сначала вычислит выражения для всех параметров, а потом передаст их в метод и мы получим для обоих параметров один и тот же предикат, ожидающий тип `Число`. + +А все потому, что методы настройки предиката возвращают общий модуль-конструктор. Таким образом оба параметра будут иметь одно и тоже значение - общий модуль `ЮТПредикаты`, который вернет одну и туже настройку (из глобального контекста). +Можно переписать настройку мокито, для большей наглядности, с использованием переменных: + +```bsl +Параметр1 = ЮТест.Предикат().ИмеетТип("Строка"); // Параметр1 = ОбщийМодуль.ЮТПредикаты +Параметр2 = ЮТест.Предикат().ИмеетТип("Число"); // Параметр2 = ОбщийМодуль.ЮТПредикаты + +ЮТест.ОжидаетЧто(Параметр1).Равно(Параметр2); // Это утверждение будет успешным + +Мокито.Обучение(Модуль) + .Когда(Модуль.СделатьЧтоТо(Параметр1, Параметр2)) + .ВернутьРезультат(Результат1); +``` + +Для обхода этой проблемы можно использовать метод `Получить`, который возвращает текущее состояние (настройки) из конструктора и передает его в параметр метода. + +```bsl +Мокито.Обучение(Модуль) + .Когда(Модуль.СделатьЧтоТо( + ЮТест.Предикат().ИмеетТип("Строка").Получить(), + ЮТест.Предикат().ИмеетТип("Число"))) + .ВернутьРезультат(Результат1); +``` + +Такая же история при сохранение предикатов в переменные. + +```bsl +ПроверкаСтрока = ЮТест.Предикат().ИмеетТип("Строка"); +ПроверкаЧисло = ЮТест.Предикат().ИмеетТип("Число"); +``` + +`ПроверкаСтрока` и `ПроверкаЧисло` будут равны и содержать одинаковые условия. Проблему также можно обойти используя метод `Получить`. + +```bsl +ПроверкаСтрока = ЮТест.Предикат().ИмеетТип("Строка").Получить(); +ПроверкаЧисло = ЮТест.Предикат().ИмеетТип("Число").Получить(); +``` + +### Особенности реализации + +Сам модуль предикатов используется только для формирования набора утверждений/условий. + +За применение их в разных механизмах, реализацией проверок и формированием условий, отвечают другие модули и возможна ситуация, когда некоторые предикаты еще не реализованы или не поддерживаются каким-либо механизмом. Например, проверка заполненности не поддерживается запросами. diff --git a/documentation/docs/reports.md b/documentation/docs/features/reports.md similarity index 50% rename from documentation/docs/reports.md rename to documentation/docs/features/reports.md index 75b1e5eed..633bdb648 100644 --- a/documentation/docs/reports.md +++ b/documentation/docs/features/reports.md @@ -3,11 +3,17 @@ sidebar_position: 9 tags: [Начало] --- -# Форматы отчетов о тестировании +# Отчеты о тестировании -YAxUnit поддерживает генерацию отчетов в форматах `JUnit` и `Allure`. +Важным этапом тестирования является формирование удобного и информативного отчета. YAxUnit предоставляет возможность работать с различными видами отчетов. -Указать необходимый формат вы может в [параметрах запуска](run/configuration), либо в [форме настроек](yaxunit-ui#интерфейс-настройки-конфигурации). +* Отчет в формате JUnit - используется при разработке тестов в EDT, позволяет быстро увидеть результат тестирования прямов в IDE, позволяет переходить по стеку ошибок и сравнивать фактическое и ожидаемое значение. +* Отчет в формате Allure - чаще всего применяется в CI, имеет богатую функциональность: фильтрация, различные группировки, история и статистика. +* Отчет в режиме 1С:Предприятия - удобен если вы не используете (или не можете использовать) по какой-либо причине EDT. + +![reports](images/reports.png) + +Указать необходимый формат вы может в [параметрах запуска](../getting-started/run/configuration), либо в [форме настроек](../yaxunit-ui#интерфейс-настройки-конфигурации). По умолчанию используется формат `JUnit`. ## Формат `JUnit` @@ -24,4 +30,4 @@ YAxUnit поддерживает генерацию отчетов в форма Группировка по функциональности -![Группировка по функциональности](images/allure-report-behaviors.png) \ No newline at end of file +![Группировка по функциональности](images/allure-report-behaviors.png) diff --git a/documentation/docs/features/test-data/data-generation.md b/documentation/docs/features/test-data/data-generation.md new file mode 100644 index 000000000..fd8d6146e --- /dev/null +++ b/documentation/docs/features/test-data/data-generation.md @@ -0,0 +1,306 @@ +--- +tags: [Начало, Тестовые данные] +sidebar_position: 1 +--- + +# Программное создание тестовых данных + +Доступ к методам генерации тестовых реализован через [`ЮТест.Данные()`](/api/ЮТест#данные), этот метод возвращает общий модуль [`ЮТТестовыеДанные`](/api/ЮТТестовыеДанные). + +:::tip +Не рекомендуется обращаться к модулю `ЮТТестовыеДанные` напрямую, используйте `ЮТест.Данные()` +::: + +## Возможности + +Инструменты работы с тестовыми данными можно разделить на следующие группы: + +* Генераторы случайных значений +* Методы создания данных в информационной базе +* Методы загрузки из макетов +* Работа с файлами + +### Генераторы случайных данных + +Как уже говорилось в [статье](test-data.md) в YAxUnit сделан большой упор на генерацию случайных тестовых данных, которая позволяет улучшить покрытие и сократить количество "лишнего" кода. Поставив в самом начале на такой подход мы еще ни разу в нем не разочаровались. + +Создание случайных данных базируется на генерации примитивных значения: + +* Числа + * [`ЮТест.Данные().СлучайноеЧисло`](/api/ЮТТестовыеДанные#случайноечисло) - Формирует случайное число в указанном диапазоне + * [`ЮТест.Данные().СлучайноеПоложительноеЧисло`](/api/ЮТТестовыеДанные#случайноеположительноечисло) - Формирует случайное положительное число ограниченное максимумом + * [`ЮТест.Данные().СлучайноеОтрицательноеЧисло`](/api/ЮТТестовыеДанные#случайноеотрицательноечисло) - Формирует случайное отрицательное число ограниченное минимумом +* Строки + * [`ЮТест.Данные().СлучайнаяСтрока`](/api/ЮТТестовыеДанные#случайнаястрока) - Формирует случайную строку указанной длины + * [`ЮТест.Данные().СлучайныйИдентификатор`](/api/ЮТТестовыеДанные#случайныйидентификатор) - Формирует случайный валидный идентификатор (Первым символом должна быть буква или символ подчеркивания, каждый из последующих символов может быть буквой, цифрой или символом подчеркивания) + * [`ЮТест.Данные().СлучайныйIPАдрес`](/api/ЮТТестовыеДанные#случайныйipадрес) - Формирует случайный IP адрес + * [`ЮТест.Данные().СлучайныйНомерТелефона`](/api/ЮТТестовыеДанные#случайныйномертелефона) - Формирует случайный номер телефона + * [`ЮТест.Данные().УникальнаяСтрока`](/api/ЮТТестовыеДанные#уникальнаястрока) - Создает строку на базе нового уникального идентификатора +* Даты + * [`ЮТест.Данные().СлучайнаяДата`](/api/ЮТТестовыеДанные#случайнаядата) - Формирует случайную дату в указанном диапазоне + * [`ЮТест.Данные().СлучайноеВремя`](/api/ЮТТестовыеДанные#случайноевремя) - Формирует случайное время + * [`ЮТест.Данные().СлучайнаяДатаВБудущем`](/api/ЮТТестовыеДанные#случайнаядатавбудущем) - Формирует случайную дату в будущем (больше текущей) с возможностью ограничить максимальное значение. + Пример: `СлучайнаяДатаВБудущем(2, "часа")` - будет сформирована дата в интервале (ТекущаяДата, ТекущаяДата + 2 часа] + * [`ЮТест.Данные().СлучайнаяДатаВПрошлом`](/api/ЮТТестовыеДанные#случайнаядатавпрошлом) - Формирует случайную дату в прошлом (меньше текущей) с возможностью ограничить минимальное значение. + Пример: `СлучайнаяДатаВПрошлом(2, "часа")` - будет сформирована дата в интервале [ТекущаяДата - 2 часа, ТекущаяДата) + * [`ЮТест.Данные().СлучайнаяДатаПосле`](/api/ЮТТестовыеДанные#случайнаядатапосле) - Формирует случайную дату, которая больше указанной с возможностью ограничить максимальное значение. + Пример: `СлучайнаяДатаПосле(Дата, 2, "часа")` - будет сформирована дата в интервале (Дата, Дата + 2 часа] + * [`ЮТест.Данные().СлучайнаяДатаДо`](/api/ЮТТестовыеДанные#случайнаядатадо) - Формирует случайную дату, которая меньше указанной с возможностью ограничить минимальное значение. + Пример: `СлучайнаяДатаДо(Дата, 2, "часа")` - будет сформирована дата в интервале [Дата - 2 часа, Дата) +* Булево + * [`ЮТест.Данные().СлучайноеБулево`](/api/ЮТТестовыеДанные#случайноебулево) - Возвращает случайное булево +* Получение случайного из предопределенного списка + * [`ЮТест.Данные().СлучайноеЗначениеИзСписка`](/api/ЮТТестовыеДанные#случайноезначениеизсписка) - Возвращает случайное значение из указанного списка + + ```bsl + ВозможныеЗначения = ЮТКоллекции.ЗначениеВМассиве(-1, 0, 1); + Возврат ЮТест.Данные().СлучайноеЗначениеИзСписка(ВозможныеЗначения); + ``` + + * [`ЮТест.Данные().СлучайноеЗначениеПеречисления`](/api/ЮТТестовыеДанные#случайноезначениеперечисления) - Возвращает случайное значение перечисления + Примеры: + + ```bsl + Цена = ЮТест.Данные().СлучайноеЗначениеПеречисления(Перечисления.ВидыЦен); // Можно получить значение через указание менеджера + Цена = ЮТест.Данные().СлучайноеЗначениеПеречисления("Перечисление.ВидыЦен"); // Или имя объекта метаданных (подходит для работы с клиента) + ``` + + * [`ЮТест.Данные().СлучайноеПредопределенноеЗначение`](/api/ЮТТестовыеДанные#случайноепредопределенноезначение) - Возвращает случайное предопределенное значение + Примеры: + + ```bsl + Цена = ЮТест.Данные().СлучайноеПредопределенноеЗначение(Справочники.ВидыЦен); // Можно получить значение через указание менеджера + Цена = ЮТест.Данные().СлучайноеПредопределенноеЗначение("Справочник.ВидыЦен"); // Или имя объекта метаданных (подходит для работы с клиента) + ``` + +* [`ЮТест.Данные().Подражатель`](/api/ЮТТестовыеДанные#подражатель) - генератор правдоподобных данных. Генерирует случайные данные на базе словарей, является реализацией [faker](https://github.com/faker-js/faker) для 1С. + * [`ЮТест.Данные().Подражатель().Люди`](/api/ЮТПодражатель#люди) + * [`ФИО`](/api/ЮТПодражатель_Люди#фио) - Формирует случайное ФИО + * [`Фамилия`](/api/ЮТПодражатель_Люди#фамилия) - Формирует случайную фамилию + * [`Имя`](/api/ЮТПодражатель_Люди#имя) - Формирует случайное имя + * [`Отчество`](/api/ЮТПодражатель_Люди#отчество) - Формирует случайное отчество + * [`ИНН`](/api/ЮТПодражатель_Люди#инн) - Формирует случайный ИНН + * [`СНИЛС`](/api/ЮТПодражатель_Люди#снилс) - Формирует случайный СНИЛС + * [`ЮТест.Данные().Подражатель().Компании`](/api/ЮТПодражатель#компании) + * [`Наименование`](/api/ЮТПодражатель_Компании#наименование) - Формирует случайное наименование компании + * [`ИНН`](/api/ЮТПодражатель_Компании#инн) - Формирует случайный ИНН компании + * [`КПП`](/api/ЮТПодражатель_Компании#кпп) - Формирует случайный КПП компании + * [`ЮТест.Данные().Подражатель().Банки`](/api/ЮТПодражатель#банки) + * [`НомерСчета`](/api/ЮТПодражатель_Банки#номерсчета) - Формирует случайный номер банковского счета + * [`БИК`](/api/ЮТПодражатель_Банки#бик) - Формирует случайный валидный БИК банка + +### Методы создания данных в информационной базе + +* Создание пустышек - примитивных объектов с минимальным заполнения. Полезно использовать когда вам нужна ссылка определенного типа, но не важно ее заполнение + * [`ЮТест.Данные().СоздатьЭлемент`](/api/ЮТТестовыеДанные#создатьэлемент) - Создает новый элемент справочника или плана видов характеристик + + ```bsl + Товар = ЮТест.Данные().СоздатьЭлемент(Справочники.Товары); // На основании менеджера + Товар = ЮТест.Данные().СоздатьЭлемент("Справочники.Товары"); // На основании имени менеджера + + ПараметрыЗаписи = ЮТФабрика.ПараметрыЗаписи(); + ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина; + Товар = ЮТест.Данные().СоздатьЭлемент("Справочники.Товары", , , ПараметрыЗаписи); // Запись в режиме ОбменДанными.Загрузка = Истина + ``` + + * [`ЮТест.Данные().СоздатьДокумент`](/api/ЮТТестовыеДанные#создатьдокумент) - Создает новый документ + + ```bsl + Товар = ЮТест.Данные().СоздатьДокумент(Документ.ПриходТовара); // На основании менеджера + Товар = ЮТест.Данные().СоздатьДокумент("Документ.ПриходТовара"); // На основании имени менеджера + ``` + + * [`ЮТест.Данные().СоздатьГруппу`](/api/ЮТТестовыеДанные#создатьгруппу) - Создает новую группу справочника или плана видов характеристик + + ```bsl + Товар = ЮТест.Данные().СоздатьГруппу(Документ.ПриходТовара); // На основании менеджера + Товар = ЮТест.Данные().СоздатьГруппу("Документ.ПриходТовара"); // На основании имени менеджера + ``` + + * [`ЮТест.Данные().Фикция`](/api/ЮТТестовыеДанные#фикция) - Создает новый объект на основании его типа + + ```bsl + Товар = ЮТест.Данные().Фикция(Тип("ДокументСсылка.ПриходТовара")); + Товар = ЮТест.Данные().Фикция(Новый ОписаниеТипов("ДокументСсылка.ПриходТовара")); + Товар = ЮТест.Данные().Фикция(Новый ОписаниеТипов("ДокументСсылка.ПриходТовара, ДокументСсылка.РасходТовара")); // Будет выбран случайный тип + ``` + +* [`ЮТест.Данные().КонструкторОбъекта`](/api/ЮТТестовыеДанные#конструкторобъекта), с помощью которого вы можете создать объект информационной базы с необходимыми реквизитами. + Конструктор позволяет: + * В более компактной форме заполнять объект + * Имеет методы записи и проведения + * При возникновении ошибки оборачивает их в более понятные человеку описания + * Киллер фича - `Фикция` и `ФикцияОбязательныхПолей`. Устанавливает случайно сгенерированные значения реквизитов. Таким образом делается акцент на важных для теста реквизитах и экономит "строки" на генерацию ненужных значений + * Умеет создавать данные с клиента и [удалять их по окончании теста](test-data-deletion.md) + + ```bsl + Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара") + .Фикция("Поставщик") + .Фикция("Склад") + .ФикцияОбязательныхПолей() + .ТабличнаяЧасть("Товары"); + + ОбщиеДанные = Новый Структура("ВидЦены, Поставщик", Закупочная, Конструктор.ДанныеОбъекта().Поставщик); + + Для Инд = 1 По 3 Цикл + Конструктор.ДобавитьСтроку() + .Фикция("Товар") + .УстановитьРеквизиты(ОбщиеДанные) + .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2)) + .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20)) + .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество) + КонецЦикла; + + Возврат Конструктор.Провести(); + ``` + +### Загрузка данных из макетов + +Работа с макетами описана в отдельной [статье](load-from-templates.md) + +### Работа с файлами + +* [`ЮТест.Данные().НовыйФайл`](/api/ЮТТестовыеДанные#новыйфайл) - Создает новый файл, который будет удален после теста +* [`ЮТест.Данные().НовоеИмяВременногоФайла`](/api/ЮТТестовыеДанные#новоеимявременногофайла) - Возвращает имя нового файла, по окончании выполнения теста этот файл будет удален + +### Создание XDTO + +При тестировании обменов или интеграций использующих SOAP вам может пригодится [`ЮТест.Данные().КонструкторОбъектаXDTO`](/api/ЮТТестовыеДанные#конструкторобъектаxdto), с помощью которого вы можете с легкостью создать XDTO объект. + +```bsl +Тип = СериализаторXDTO.XMLТип(Тип("ДокументОбъект.Заказ")); + +Дата = ЮТест.Данные().СлучайнаяДата(); +Номер = ЮТест.Данные().СлучайнаяСтрока(9); +Сумма = ЮТест.Данные().СлучайноеЧисло(); +Реквизиты = Новый Структура("Number, Сумма", Номер, Сумма); + +Объект = ЮТест.Данные().КонструкторОбъектаXDTO(Тип.ИмяТипа, Тип.URIПространстваИмен) + .Установить("Date", Дата) + .ФикцияОбязательныхПолей() + .УстановитьРеквизиты(Реквизиты) + .Фикция("Покупатель") + .ДобавитьНовый("Товары") + .Фикция("Цена") + .Фикция("Количество") + .ДанныеОбъекта(); +``` + +Он был создан на основании уже проверенного и зарекомендовавшего себя `ЮТест.Данные().КонструкторОбъекта` и обладает схожим API. + +* `Установить(ИмяРеквизита, Значение)` - Устанавливает значение указанного реквизита объекта. +* `УстановитьРеквизиты(ЗначенияРеквизитов)` - Устанавливает значения реквизитов объекта. + +* `Фикция(ИмяРеквизита)` - на основании типа создаваемого объекта определяет тип реквизита и устанавливает для него случайное значение. + * Для примитивных значение генерируется случайное значение + * Для объектных типов создается новый объект + * Для коллекций - генерируется случайно количество случайных элементов (на основании типа) +* `ФикцияОбязательныхПолей()` - на основании типа создаваемого объекта определяет список обязательных полей и для каждого из них вызывается метод `Фикция`. +* `ФикцияНезаполненных()` - для всех незаполненных полей создаваемого объекта вызывает метод `Фикция`. +* `ДобавитьНовый(ИмяРеквизита)` - Добавляет новый объект в указанную реквизит-коллекцию. Все последующие вызовы установки реквизитов будут относится к этому добавленному объекту. +* `ПерейтиКВладельцу()` - используется после метода `ДобавитьНовый` для переключения контекста заполнения на родительский объект. Например вам необходимо добавить две строки в табличную часть. + ```bsl + Объект = ЮТест.Данные().КонструкторОбъектаXDTO(Тип.ИмяТипа, Тип.URIПространстваИмен) + .ДобавитьНовый("Товары") + .Фикция("Цена") + .Фикция("Количество") + .ПерейтиКВладельцу() + .ДобавитьНовый("Товары") + .Фикция("Цена") + .Фикция("Количество") + .ДанныеОбъекта(); + ``` + Здесь перед добавлением второй строки нужно переключится (`ПерейтиКВладельцу`) на основной объект и после этого можно добавить строку. +* `ДанныеОбъекта()` - возвращает созданный объект XDTO. + +## Примеры + +### Генерация фейкового документа + +```bsl +#Если Сервер Тогда + Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПриходТовара); +#Иначе + Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара"); +#КонецЕсли + + Конструктор + .Фикция("Поставщик") + .Фикция("Склад") + .Фикция("Валюта") + .Установить("Организация", ЮТест.Данные().КонструкторОбъекта("Справочники.Организации").Установить("КакойТоТамУчет", Истина)) + .ТабличнаяЧасть("Товары"); + + Для Инд1 = 1 По ЮТест.Данные().СлучайноеЧисло(1, 5) Цикл + Конструктор.ДобавитьСтроку() + .Фикция("Товар") + .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2)) + .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20)) + .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество) + КонецЦикла; + + Ссылка = Конструктор.Провести(); +``` + +### Генерация произвольных фейковых данных + +```bsl +Функция ОписаниеСервера(Знач Идентификатор = Неопределено) Экспорт + + Описание = БазовоеОписаниеОбъекта(Идентификатор, "СРВ"); + + Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); + Описание.Вставить("ЧастотаЯдра", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(4, 3)); + Описание.Вставить("КоличествоЯдер", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(10)); + Описание.Вставить("КоличествоПотоков", Описание.КоличествоЯдер * 2); + Описание.Вставить("ПроизводительностьПроцессора", Описание.ЧастотаЯдра * Описание.КоличествоЯдер); + Описание.Вставить("ОбъемПамяти", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(1024, 3)); + Описание.Вставить("Диски", Новый Массив()); + Описание.Вставить("Кластер"); + + Для Инд = 1 По ЮТТестовыеДанные.СлучайноеЧисло(1, 3) Цикл + Описание.Диски.Добавить(ОписаниеДиска()); + КонецЦикла; + + Возврат Описание; + +КонецФункции + +Функция ОписаниеЗаявкиНаСозданиеВМ() Экспорт + + Описание = Новый Структура(); + + Описание.Вставить("Наименование", "req-" + ЮТТестовыеДанные.СлучайнаяСтрока()); + Описание.Вставить("ДатаДобавления", глПолучитьМосковскоеВремя()); + Описание.Вставить("ДатаОкончанияАренды", глДобавитьКДате(глПолучитьМосковскоеВремя(), "ДЕНЬ", 2)); + Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); + + Описание.Вставить("Проект", Проект()); + Описание.Вставить("Ментейнер", ПараметрыСеанса.Сотрудник); + + Описание.Вставить("КоличествоCPU", ЮТТестовыеДанные.СлучайноеЧисло(1, 4)); + Описание.Вставить("КоличествоПамяти", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); + Описание.Вставить("КоличествоДисков", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); + Описание.Вставить("ОперационнаяСистема", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОперационныеСистемы)); + + Описание.Вставить("СредаЭксплуатации", ""); + Описание.Вставить("Назначение", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.НазначенияВиртуальныхМашин)); + Описание.Вставить("ТипСреды", Справочники.ТипыИнформационныхСред.BETA); + Описание.Вставить("КодСервиса", ЮТТестовыеДанные.СлучайнаяСтрока(1)); + + Возврат Описание; + +КонецФункции + +Функция НовыйОбразDocker(Версия, ПоУмолчанию = Истина) Экспорт + + Данные = Новый Структура("Адрес, ВерсияПлатформы, ТипПлатформы, ИспользоватьПоУмолчанию"); + Данные.Адрес = "gitlab.ru/orais/ci_cd/1cws-apache24:" + Версия; + Данные.ВерсияПлатформы = Версия; + Данные.ТипПлатформы = Перечисления.ТипыСоединенияИсточникаДанных.Соединение1СПредприятие83Сервер; + Данные.ИспользоватьПоУмолчанию = ПоУмолчанию; + + Возврат ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОбразыDocker, Версия, Данные); + +КонецФункции +``` diff --git a/documentation/docs/features/test-data/data-manipulations.md b/documentation/docs/features/test-data/data-manipulations.md new file mode 100644 index 000000000..d4ab387af --- /dev/null +++ b/documentation/docs/features/test-data/data-manipulations.md @@ -0,0 +1,6 @@ +# Дополнительные методы работы с данными + +* [`ЮТест.Данные().Удалить`](/api/ЮТТестовыеДанные#удалить) - Выполняет удаление переданных записей из базы +* [`ЮТест.Данные().УстановитьЗначениеРеквизита`](/api/ЮТТестовыеДанные#установитьзначениереквизита) - Устанавливает значение реквизита ссылки +* [`ЮТест.Данные().УстановитьЗначенияРеквизитов`](/api/ЮТТестовыеДанные#установитьзначенияреквизитов) - Устанавливает значения реквизитов ссылки +* [`ЮТЗапросы`](/api/ЮТЗапросы) - Расширяет возможности тестирования, позволяет в упрощенной форме получать данны из информационной базы как с сервера, так и с клиента. diff --git a/documentation/docs/user-api/test-data/test-data.md b/documentation/docs/features/test-data/load-from-templates.md similarity index 62% rename from documentation/docs/user-api/test-data/test-data.md rename to documentation/docs/features/test-data/load-from-templates.md index fca9b6acc..d048011cd 100644 --- a/documentation/docs/user-api/test-data/test-data.md +++ b/documentation/docs/features/test-data/load-from-templates.md @@ -1,182 +1,13 @@ --- tags: [Начало, Тестовые данные] +sidebar_position: 3 --- -# Тестовые данные -Почти в каждом тесте разработчику необходимы данные, которые он будет использовать при тестировании: элементы справочников, документы, остатки и тд. +# Загрузка данных из макетов -Есть разные подходы к работе с тестовыми данными: +## Описание -1. Ручное наполнение тестовой базы (мы предварительно создаем все что необходимо для тестов в базе, а потом используем её для прогона тестов) -2. Использование файлов с данными (макеты - сгенерированные в нужном формате файлы с описанием тестовых данных, загружаемые при выполнении тестов) -3. Программное создание нужных данных внутри теста - -У каждого из вариантов есть свои плюсы и минусы, и при грамотной компоновке можно достичь наилучшего результата. - -Например: - -* Ручное наполнение базы не учитывает последующие доработки системы, нужна миграция на новые алгоритмы и структуру, и, если таких данных будет много, то миграция будет занимать большое время. А также в этом случае нам необходимо завязываться на конкретные записи в системе, и при их изменении тестом мы можем сломать другие тесты. Поэтому, предварительное наполнение базы должно быть минимальным. -* В случае использования макетов данных возникают некоторые трудности с их доработкой и вариативностью, например, в новом тесте нужны данные из макета, но с некоторыми изменениями. В этом случае нам потребуется создавать новый макет или проверять, не сломают ли наши изменения другие тесты. Также при таком подходе сложно контролировать и искать какие макеты используются и кем. -* Программное создание тестовых данных увеличивает время и сложность теста. - -Если грамотно распределить тестовые данные на способы создания, мы можем добиться оптимального результата. -Например, можно статичные данные создать вручную, сложные кейсы данных засунуть в макеты, а для программного создания реализовать методы-конструкторы, которые будем переиспользовать. Таким образом, сможем уйти от минусов данного подхода или минимизировать их вред. - -В текущей версии тестовый движок предоставляет api для программного создания тестовых данных. За это отвечает общий модуль `ЮТТестовыеДанные`, к которому можно обратиться через метод `ЮТест.Данные()`. - -:::tip -Не рекомендуется обращаться к модулю `ЮТТестовыеДанные` напрямую, используйте `ЮТест.Данные()` -::: - -Он позволяет: - -* Создавать данные информационной базы -* Генерировать случайные значения -* Автоматически удалять созданные данные (для этого необходимо включить настройку теста `УдалениеТестовыхДанных()`) -* Работать с файлами -* Использовать таблицы markdown в качестве макетов данных -* Генерировать таблицы значений из табличных документов и таблиц markdown - -## Примеры - -### Генерация фейкового документа - -```bsl -#Если Сервер Тогда - Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПриходТовара); -#Иначе - Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара"); -#КонецЕсли - - Конструктор - .Фикция("Поставщик") - .Фикция("Склад") - .Фикция("Валюта") - .Установить("Организация", ЮТест.Данные().КонструкторОбъекта("Справочники.Организации").Установить("КакойТоТамУчет", Истина)) - .ТабличнаяЧасть("Товары"); - - Для Инд1 = 1 По ЮТест.Данные().СлучайноеЧисло(1, 5) Цикл - Конструктор.ДобавитьСтроку() - .Фикция("Товар") - .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2)) - .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20)) - .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество) - КонецЦикла; - - Ссылка = Конструктор.Провести(); -``` - -### Генерация произвольных фейковых данных - -```bsl -Функция ОписаниеСервера(Знач Идентификатор = Неопределено) Экспорт - - Описание = БазовоеОписаниеОбъекта(Идентификатор, "СРВ"); - - Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); - Описание.Вставить("ЧастотаЯдра", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(4, 3)); - Описание.Вставить("КоличествоЯдер", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(10)); - Описание.Вставить("КоличествоПотоков", Описание.КоличествоЯдер * 2); - Описание.Вставить("ПроизводительностьПроцессора", Описание.ЧастотаЯдра * Описание.КоличествоЯдер); - Описание.Вставить("ОбъемПамяти", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(1024, 3)); - Описание.Вставить("Диски", Новый Массив()); - Описание.Вставить("Кластер"); - - Для Инд = 1 По ЮТТестовыеДанные.СлучайноеЧисло(1, 3) Цикл - Описание.Диски.Добавить(ОписаниеДиска()); - КонецЦикла; - - Возврат Описание; - -КонецФункции - -Функция ОписаниеЗаявкиНаСозданиеВМ() Экспорт - - Описание = Новый Структура(); - - Описание.Вставить("Наименование", "req-" + ЮТТестовыеДанные.СлучайнаяСтрока()); - Описание.Вставить("ДатаДобавления", глПолучитьМосковскоеВремя()); - Описание.Вставить("ДатаОкончанияАренды", глДобавитьКДате(глПолучитьМосковскоеВремя(), "ДЕНЬ", 2)); - Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); - - Описание.Вставить("Проект", Проект()); - Описание.Вставить("Мейнтейнер", ПараметрыСеанса.Сотрудник); - - Описание.Вставить("КоличествоCPU", ЮТТестовыеДанные.СлучайноеЧисло(1, 4)); - Описание.Вставить("КоличествоПамяти", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); - Описание.Вставить("КоличествоДисков", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); - Описание.Вставить("ОперационнаяСистема", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОперационныеСистемы)); - - Описание.Вставить("СредаЭксплуатации", ""); - Описание.Вставить("Назначение", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.НазначенияВиртуальныхМашин)); - Описание.Вставить("ТипСреды", Справочники.ТипыИнформационныхСред.BETA); - Описание.Вставить("КодСервиса", ЮТТестовыеДанные.СлучайнаяСтрока(1)); - - Возврат Описание; - -КонецФункции - -Функция НовыйОбразDocker(Версия, ПоУмолчанию = Истина) Экспорт - - Данные = Новый Структура("Адрес, ВерсияПлатформы, ТипПлатформы, ИспользоватьПоУмолчанию"); - Данные.Адрес = "gitlab.ru/orais/ci_cd/1cws-apache24:" + Версия; - Данные.ВерсияПлатформы = Версия; - Данные.ТипПлатформы = Перечисления.ТипыСоединенияИсточникаДанных.Соединение1СПредприятие83Сервер; - Данные.ИспользоватьПоУмолчанию = ПоУмолчанию; - - Возврат ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОбразыDocker, Версия, Данные); - -КонецФункции -``` - -### Чтение из таблицы Markdown - -```bsl - Макет = - "| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | - ||------------------------|-------------------------|----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------| - || Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | - || Документ | Документы | СоздатьДокумент | | + | + | | | | + | - || ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | - || ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | - || ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | - || ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | - || РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | | - || РегистрНакопления | РегистрыНакопления | СоздатьНаборЗаписей | | | + | + | + | | | - || РегистрБухгалтерии | РегистрыБухгалтерии | СоздатьНаборЗаписей | | | + | + | + | | | - || РегистрРасчета | РегистрыРасчета | СоздатьНаборЗаписей | | | + | + | + | | | - || БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | - || Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | - |"; - КоллекцияОписаний = ЮТТестовыеДанные.ТаблицаMarkDown(Макет); - - ТипыМетаданных = Новый Структура(); - - Для Каждого Запись Из КоллекцияОписаний Цикл - - Описание = Новый Структура(); - Описание.Вставить("Имя", Запись.Имя); - Описание.Вставить("ИмяКоллекции", Запись.ИмяКоллекции); - Описание.Вставить("Конструктор", Запись.Конструктор); - Описание.Вставить("Группы", Запись.Группы = "+"); - Описание.Вставить("Ссылочный", Запись.Ссылочный = "+"); - Описание.Вставить("Реквизиты", Запись.Реквизиты = "+"); - Описание.Вставить("Измерения", Запись.Измерения = "+"); - Описание.Вставить("Ресурсы", Запись.Ресурсы = "+"); - Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+"); - Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+"); - - ТипыМетаданных.Вставить(Описание.Имя, Описание); - ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание); - - КонецЦикла; - - Возврат ТипыМетаданных; -``` - -### Загрузка данных из макетов - -Для загрузки данных из макетов подойдет метод `ЮТест.Данные().ЗагрузитьИзМакета` +Для загрузки данных из макетов подойдет метод [`ЮТест.Данные().ЗагрузитьИзМакета`](/api/ЮТТестовыеДанные#загрузитьизмакета) Он позволяет: @@ -197,25 +28,33 @@ tags: [Начало, Тестовые данные] Особенности: -* Создание данных - * Данные в базе всегда создаются, не выполняется поиск уже существующих ссылок. При необходимости вы можете найти данные сами и передать в параметрах `ЗаменяемыеЗначения` или `КэшЗначений` - :::tip - При преобразовании табличного документа в таблицу значений существующие объекты метаданных не изменяются, только создаются новые. Нужно проявлять внимательность в случаях, если в базе уже имеются данные с тем же кодом/наименованием (и по ним используется контроль уникальности), что и в табличном документе. - ::: - * Можно указывать значения вложенных реквизитов в других колонках, например для колонки `Товар` можно добавить колонки с поставщиком и видом товара `Товар.Поставщик` и `Товар.Вид`, в которых указать нужные значения - * Переиспользование созданных данных, используется `КэшЗначений`, в который помещаются все созданные данные, если кэш содержит данные подходящего типа с указанным идентификатором, то используется ранее созданное значение из кэша. Например, в примере выше, для первой строки будет создан товар с идентификатором `Товар 1`. В строках 2 и 3 будет использовано значение из кэша - `Товар 1`, в 4й и 5й строке - созданы новые товары. +* Данные в базе всегда создаются, не выполняется поиск уже существующих ссылок. При необходимости вы можете найти данные сами и передать в параметрах `ЗаменяемыеЗначения` + :::tip + При преобразовании табличного документа в таблицу значений существующие объекты метаданных не изменяются, только создаются новые. Нужно проявлять внимательность в случаях, если в базе уже имеются данные с тем же кодом/наименованием (и по ним используется контроль уникальности), что и в табличном документе. + ::: +* Можно указывать значения вложенных реквизитов, например при создании товаров (колонка `Товар`) необходимо указать конкретные значения поставщика и вида товара. Для этого необходимо добавить колонки `Товар.Поставщик` и `Товар.Вид`, в которых указать нужные значения. +* Переиспользование созданных данных, используется `КэшЗначений`, в который помещаются все созданные данные, если кэш содержит данные подходящего типа с указанным идентификатором, то используется ранее созданное значение из кэша. Например, в примере выше, для первой строки будет создан товар с идентификатором `Товар 1`. В строках 2 и 3 будет использовано значение из кэша - `Товар 1`, в 4й и 5й строке - созданы новые товары. - :::tip - Значение в колонке "Товар" является идентификатором ссылки. Для справочника значение этой колонки по умолчанию записывается в реквизит "Наименование" или "Код", в зависимости от того, какой из этих реквизитов является основным представлением. Для документа это значение никуда не записывается, оно лишь является идентификатором. Таким образом, если одному значению в колонке "Товар" соответствуют различные значения в других колонках, то в элемент справочника запишутся реквизиты из первой строки, а для других строк ссылка на этот элемент будет проставлена по соответствующему идентификатору - ::: + :::tip + Кэш значений может передаваться между загрузками разных макетов, например есть макет с табличной частью документа и второй макет с набором ожидаемых движений. Чтобы созданные товары из табличной части соответствовали товарам движений необходимо передать `КэшЗначений` между загрузками. -#### Загрузка всего макета + ```bsl + КэшЗначений = Неопределено; + ТабличнаяЧасть = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ДанныеДокумента.ТабличнаяЧасть", ОписанияТиповТЧ, КэшЗначений); + ОжидаемыеДвижения = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ДанныеДокумента.ДвиженияРегистра1", ОписанияТиповРегистра1, КэшЗначений); + ``` -В качестве источника данных можно использовать весь табличный документ. В этом случае будет получена таблица значений, начиная с 1-ой строки и 1-ой колонки табличного документа до первой пустой строки. + ::: -:::info -Этот код работает и на клиенте и на сервер. Для сервера результатом будет таблица значений, для клиента - массив структур -::: + :::tip + Значение в колонке "Товар" является идентификатором ссылки. Для справочника значение этой колонки по умолчанию записывается в реквизит "Наименование" или "Код", в зависимости от того, какой из этих реквизитов является основным представлением. Для документа это значение никуда не записывается, оно лишь является идентификатором. Таким образом, если одному значению в колонке "Товар" соответствуют различные значения в других колонках, то в элемент справочника запишутся реквизиты из первой строки, а для других строк ссылка на этот элемент будет проставлена по соответствующему идентификатору + ::: + +## Примеры + +### Загрузка всего макета + +В качестве источника данных можно использовать весь табличный документ. В этом случае будет получена таблица значений, начиная с 1-ой строки и 1-ой колонки табличного документа до первой пустой строки. _Исходные данные_ @@ -227,6 +66,10 @@ _Исходные данные_ | Товар 2 | Поставщик 1 | Товар | 2 000 | 1 | 2000 | | Услуга | | Услуга | 300,5 | 1 | 300.5 | +:::info +Этот код работает и на клиенте и на сервер. Для сервера результатом будет таблица значений, для клиента - массив структур +::: + ```bsl ОписанияТипов = Новый Соответствие; ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары")); @@ -236,7 +79,7 @@ _Исходные данные_ ТаблицаТоваров = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных", ОписанияТипов); -Ютест.ОжидаетЧто(ТаблицаТоваров) +ЮТест.ОжидаетЧто(ТаблицаТоваров) .ИмеетТип("ТаблицаЗначений") .ИмеетДлину(5) .Свойство("[0].Товар.Наименование").Равно("Товар 1") @@ -267,7 +110,7 @@ _Исходные данные_ .Свойство("[4].Сумма").Равно(300.5); ``` -#### Загрузка области из макета +### Загрузка области из макета Можно получить отдельную область из табличного документа и использовать ее в качестве источника данных для таблицы значений. Таким образом в одном табличном документе можно хранить несколько таблиц. @@ -288,9 +131,7 @@ _Исходные данные_ ```bsl ОписанияТипов = Новый Соответствие; ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары")); -ОписанияТипов.Вставить("Цена", Новый ОписаниеТипов("Число")); ОписанияТипов.Вставить("Количество", Новый ОписаниеТипов("Число")); -ОписанияТипов.Вставить("Сумма", Новый ОписаниеТипов("Число")); // Для общего использования созданных значений используется переменная КешЗначений. // В двух табличных документах одинаковый состав товаров. @@ -305,11 +146,11 @@ _Исходные данные_ КэшЗначений ); -ТаблицаИсходныхДанных = ЮТест.Данные().ЗагрузитьИзМакета( - "ОбщийМакет.ЮТ_МакетТестовыхДанных.R1C1R4C4", - ОписанияТипов, - КэшЗначений -); +ОписанияТипов = Новый Соответствие; +ОписанияТипов.Вставить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары")); +ОписанияТипов.Вставить("Цена", Новый ОписаниеТипов("Число")); +ОписанияТипов.Вставить("Количество", Новый ОписаниеТипов("Число")); +ОписанияТипов.Вставить("Сумма", Новый ОписаниеТипов("Число")); ТаблицаОжидаемыхЗначений = ЮТест.Данные().ЗагрузитьИзМакета( "ОбщийМакет.ЮТ_МакетТестовыхДанных.R5C1R8C4", @@ -319,11 +160,11 @@ _Исходные данные_ ТаблицаРезультата = ОбщийМодуль1.ТаблицаТоваровСЦенамиИзОстатков(ТаблицаИсходныхДанных); -Ютест.ОжидаетЧто(ТаблицаРезультата) +ЮТест.ОжидаетЧто(ТаблицаРезультата) .Равно(ТаблицаОжидаемыхЗначений); ``` -#### Загрузка документа с табличной частью и проверка движений +### Загрузка документа с табличной частью и проверка движений Интеграционный-тест для проверки формирования движений документа по некоторому регистру. В первой таблице - табличная часть документа. Во второй - реквизиты самого документа. В третьей - ожидаемые движения по регистру, который нужно протестировать. @@ -331,16 +172,16 @@ _Исходные данные_ Область `Реквизиты_документа` -| ПриходТовара | Дата | Поставщик | Валюта | Склад | Организация | -|--------------|------|-------------|--------|-------|-------------| -| Документ 1 | Дата | Поставщик 1 | Валюта | Склад | Организация | +| ПриходТовара | Дата | Поставщик | Валюта | Склад | Организация | +|--------------|------|-----------|--------|-------|-------------| +| Документ 1 | Дата | Поставщик | Валюта | Склад | Организация | Область `Табличная_часть_документа` | Документ | Товар | Товар.Поставщик | Товар.Вид | Цена | Количество | Сумма | |------------|---------|-----------------|-----------|-------|------------|-------| -| Документ 1 | Товар 1 | Поставщик 1 | Товар | 100 | 1 | 100 | -| Документ 1 | Товар 2 | Поставщик 1 | Товар | 2 000 | 1 | 2000 | +| Документ 1 | Товар 1 | Поставщик | Товар | 100 | 1 | 100 | +| Документ 1 | Товар 2 | Поставщик | Товар | 2 000 | 1 | 2000 | | Документ 1 | Услуга | | Услуга | 300,5 | 1 | 300.5 | Область `Ожидаемые_движения` @@ -354,7 +195,7 @@ _Исходные данные_ ```bsl КэшЗначений = Новый Соответствие; -Организация = Ютест.КонтекстМодуля().Организация; +Организация = ЮТест.КонтекстМодуля().Организация; Поставщик = ЮТест.Данные().СоздатьЭлемент(Справочники.Контрагенты, "Поставщик"); ДатаДокумента = НачалоДня(ТекущаяДатаСеанса()); @@ -363,7 +204,7 @@ _Исходные данные_ // значение из табличного документа к нужному значению. ЗаменяемыеЗначения = Новый Соответствие; ЗаменяемыеЗначения.Вставить("Организация", Организация); -ЗаменяемыеЗначения.Вставить("Поставщик 1", Поставщик); +ЗаменяемыеЗначения.Вставить("Поставщик", Поставщик); ЗаменяемыеЗначения.Вставить("Дата", ДатаДокумента); ОписанияТипов = Новый Соответствие; @@ -427,13 +268,13 @@ _Исходные данные_ Отбор = Новый Структура("Регистратор", ДанныеДокументов.ПриходТовара); ОжидаемыеТоварныеЗапасы = ТаблицаДвижений.Скопировать(Отбор); - Ютест.ОжидаетЧто(ТаблицаТоварныхЗапасов) + ЮТест.ОжидаетЧто(ТаблицаТоварныхЗапасов) .Равно(ОжидаемыеТоварныеЗапасы); КонецЦикла; ``` -#### Заменяемые значения +### Заменяемые значения Создание и заполнение объектов двойной вложенности и более (например, "Товар.Поставщик.ВидКонтрагента") не поддерживается. Если есть такая потребность, следует использовать переменную "ЗаменяемыеЗначения". Т.е. следует создать и заполнять нужный объект перед преобразованием табличного документа в таблицу значений, а затем передать его в функцию получения таблицы значений. @@ -443,7 +284,7 @@ _Исходные данные_ .Записать(); // В табличном документе должна быть колонка [Товар.Поставщик] со значением "Некий поставщик". -// В этом случае в таблицу значений проставится значение, полученное из соответствия +// В этом случае в таблицу значений попадет значение, полученное из соответствия ЗаменяемыеЗначения = Новый Соответствие; ЗаменяемыеЗначения.Вставить("Некий поставщик", Поставщик); @@ -458,7 +299,7 @@ _Исходные данные_ .Свойство("[0].Товар.Поставщик.ВидКонтрагента").Равно(ВидКонтрагента); ``` -#### Заменяемые значения и составные типы +### Заменяемые значения и составные типы Можно использовать составные типы в колонках таблицы значений, но создание объектов метаданных для такой колонки не поддерживается. Можно воспользоваться соответствием "ЗаменяемыеЗначения", если потребуется в одну колонку записать значения разных типов. @@ -488,7 +329,7 @@ _Исходные данные_ ; ``` -#### Inline макеты, загрузка из Markdown +### Inline макеты, загрузка из Markdown При необходимости вы можете разместить таблицу с данными прямо в коде. @@ -512,3 +353,77 @@ _Исходные данные_ Данные = ЮТест.Данные().ЗагрузитьИзМакета(ТаблицаMarkDown, ОписанияТипов); ``` + +## Другие методы загрузки + +* [`ЮТест.Данные().ТаблицаMarkDown`](/api/ЮТТестовыеДанные#таблицаmarkdown) - Читает таблицу MarkDown в массив структур + +```bsl + Макет = + "| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | + ||------------------------|-------------------------|----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------| + || Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | + || Документ | Документы | СоздатьДокумент | | + | + | | | | + | + || ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | + || ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + || ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + || ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + || РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | | + || РегистрНакопления | РегистрыНакопления | СоздатьНаборЗаписей | | | + | + | + | | | + || РегистрБухгалтерии | РегистрыБухгалтерии | СоздатьНаборЗаписей | | | + | + | + | | | + || РегистрРасчета | РегистрыРасчета | СоздатьНаборЗаписей | | | + | + | + | | | + || БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | + || Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | + |"; + КоллекцияОписаний = ЮТТестовыеДанные.ТаблицаMarkDown(Макет); + + ТипыМетаданных = Новый Структура(); + + Для Каждого Запись Из КоллекцияОписаний Цикл + + Описание = Новый Структура(); + Описание.Вставить("Имя", Запись.Имя); + Описание.Вставить("ИмяКоллекции", Запись.ИмяКоллекции); + Описание.Вставить("Конструктор", Запись.Конструктор); + Описание.Вставить("Группы", Запись.Группы = "+"); + Описание.Вставить("Ссылочный", Запись.Ссылочный = "+"); + Описание.Вставить("Реквизиты", Запись.Реквизиты = "+"); + Описание.Вставить("Измерения", Запись.Измерения = "+"); + Описание.Вставить("Ресурсы", Запись.Ресурсы = "+"); + Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+"); + Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+"); + + ТипыМетаданных.Вставить(Описание.Имя, Описание); + ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание); + + КонецЦикла; + + Возврат ТипыМетаданных; +``` + +* [`ЮТест.Данные().СтруктураMarkDown`](/api/ЮТТестовыеДанные#структураmarkdown) - Читает таблицу MarkDown в структуру + +```bsl + Функция ИмяКоллекции(Имя) Экспорт + Макет = + "| Имя | ИмяКоллекции | + ||------------------------|-------------------------| + || Справочник | Справочники | + || Документ | Документы | + || ПланВидовХарактеристик | ПланыВидовХарактеристик | + || ПланСчетов | ПланыСчетов | + || ПланВидовРасчета | ПланыВидовРасчета | + || ПланОбмена | ПланыОбмена | + || РегистрСведений | РегистрыСведений | + || РегистрНакопления | РегистрыНакопления | + || РегистрБухгалтерии | РегистрыБухгалтерии | + || РегистрРасчета | РегистрыРасчета | + || БизнесПроцесс | БизнесПроцессы | + || Задача | Задачи | + |"; + Описания = ЮТТестовыеДанные.СтруктураMarkDown("Имя", Макет); + + Возврат Описания[Имя].ИмяКоллекции; + + КонецФункции +``` diff --git a/documentation/docs/features/test-data/test-data-deletion.md b/documentation/docs/features/test-data/test-data-deletion.md new file mode 100644 index 000000000..af9b58a86 --- /dev/null +++ b/documentation/docs/features/test-data/test-data-deletion.md @@ -0,0 +1,246 @@ +--- +tags: [Начало, Тестовые данные] +sidebar_position: 2 +--- + +# Удаление тестовых данных + +При использовании тестовых данных нередко необходимо удалять созданные объекты. + +Для этого вы можете использовать + +## Автоматические транзакции + +Самый простой в способ отката изменений сделанных тестом - обернуть тест в транзакцию. +Для того чтобы YAxUnit сам оборачивал тесты в транзакции вам, при регистрации теста, нужно вызвать метод [`ВТранзакции()`](/api/ЮТТесты#втранзакции). + +* Если метод вызвать в самом начале, то настройка примениться для всех тестов модуля; +* если после добавления набора, то для всех тестов этого набора; +* если после добавления теста, то только для этого теста. +* Также можно отключать использование транзакции, указав параметр `ВТранзакции(Ложь)` + +```bsl title=ВТранзакции.bsl +ЮТТесты + .ДобавитьТест("Фикция").ВТранзакции() // Использование транзакции для конкретного теста + +ЮТТесты + .ДобавитьТестовыйНабор("Основной").ВТранзакции() // Использование транзакции для набора тестов + .ДобавитьТест("Фикция") + +ЮТТесты.ВТранзакции() // Использование транзакции для тестов модуля + .ДобавитьТест("Фикция") +``` + +И тогда тестовый движок будет оборачивать в транзакцию **каждый серверный тест** (для клиентских будет игнорироваться) + +Особенности работы: + +* В транзакцию оборачивается только тест и [события](../events.md) `ПередКаждымТестом\ПередТестом` и `ПослеКаждогоТеста\ПослеТеста` +* Для клиентских тестов настройка игнорируется + +### Схема работы транзакций + +Для настройки + +```bsl title='Тесты набора с настройкой ВТранзакции' +ЮТТесты + .ДобавитьТестовыйНабор("Основной").ВТранзакции() + .ДобавитьТест("Тест1") + .ДобавитьТест("Тест2") +``` + +Схема выполнения будет выглядеть так: + +```mermaid +flowchart TB + bm(ПередВсемиТестами)-->b(ПередТестовымНабором) + b-->Транзакция1 + Транзакция1-->Транзакция2 + Транзакция2-->a(ПослеТестовогоНабора) + a-->am(ПослеВсехТестов) + + subgraph Транзакция1 + direction LR + b1(ПередКаждымТестом)-->t1(Тест1) + t1-->a1(ПослеКаждогоТеста) + end + subgraph Транзакция2 + b2(ПередКаждымТестом)-->t2(Тест2) + t2-->a2(ПослеКаждогоТеста) + end +``` + +Точно также она будет выглядеть и для настройки + +```bsl +ЮТТесты.ВТранзакции() + .ДобавитьТестовыйНабор("Основной") + .ДобавитьТест("Тест1") + .ДобавитьТест("Тест2") +``` + +:::caution Учитывайте +В транзакцию оборачивается тест, а не модуль или набор, поэтому данные созданные вне теста не будут удалены. +Такие данные необходимо удалять самостоятельно при необходимости. + +Например, настройка + +```bsl +ЮТТесты + .ДобавитьТестовыйНабор("Основной").ВТранзакции() // Использование транзакции для набора тестов +``` + +указывает, что каждый тест набор будет выполняться в своей транзакции, которая будет отменена по окончании каждого теста. +::: + +## Механизм удаления тестовых данных + +В некоторых ситуация тестирование в транзакции невозможно: + +* Клиентский тест +* Тестируемый метод не рассчитан на работу в транзакции (например, используются внутренние транзакции) +* Необходимо создавать данные за рамками теста (общие параметры) + +В подобных случаях, для удаления созданных данных, может подойти механизм удаления тестовых данных. + +Для его включения нужно при регистрации теста вызвать метод [`УдалениеТестовыхДанных()`](/api/ЮТТесты#удалениетестовыхданных). + +:::caution Механизм имеет ряд ограничений и не работает для следующих кейсов: + +* Данные созданы не через API +* Данные создаются внутри тестируемого кода +* Данные созданы в клиентском модуле через вызов своего серверного модуля, даже если он использует API тестового движка +::: + +```bsl title=УдалениеТестовыхДанных.bsl +ЮТТесты + .ДобавитьТест("Фикция").УдалениеТестовыхДанных() // Использование для конкретного теста + +ЮТТесты + .ДобавитьТестовыйНабор("Основной").УдалениеТестовыхДанных() // Использование для всех тестов набора + .ДобавитьТест("Фикция") + +ЮТТесты.УдалениеТестовыхДанных() // Использование для всех тестов модуля + .ДобавитьТест("Фикция") + +ЮТТесты.ВТранзакции().УдалениеТестовыхДанных() // Совместно с транзакцией + .ДобавитьТест("Фикция") + +``` + +Механизм не использует транзакции, а запоминает в контексте все созданные с помощью API объекты и записи регистров сведений. +Позволяет: + +* Удалять данные созданные с клиента +* Удалять данные созданные вне теста (в обработчиках событий) + +:::caution Удаление и только +Механизм только удаляет созданные объекты, изменения не откатываются +::: + +:::tip Разное время жизни данных +Механизм понимает в рамках какого контекста исполнения (тест, набор, модуль) были созданы данные и удаляет их по выходу из него. +::: + +Рассмотрим время жизни объектов созданных на разных этапах тестирования, например имеем такой модуль. + +```bsl title=УдалениеТестовыхДанныхВремяЖизни.bsl +Процедура ПередВсемиТестами() Экспорт + ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент(); +КонецПроцедуры + +Процедура ПередТестовымНабором() Экспорт + ДанныеНабора = ЮТест.Данные().СоздатьЭлемент(); +КонецПроцедуры + +Процедура ПослеВсехТестов() Экспорт + ДанныеТеста = ЮТест.Данные().СоздатьЭлемент(); +КонецПроцедуры + +Процедура Тест() Экспорт + Ссылка = ЮТест.Данные().СоздатьЭлемент(); +КонецПроцедуры +``` + +Для переменных получим разное время жизни + +* `ДанныеМодуля` - Живет, пока исполняются тесты модуля одного контекста (Сервер, Клиент). +* `ДанныеНабора` - Живет, пока исполняются тесты набора. +* `ДанныеТеста` и `Ссылка` - Живут, пока исполняется тест. + +### Схема работы механизма "УдалениеТестовыхДанных" + +```mermaid +sequenceDiagram + actor Y as YAxUnit + participant M as Тестовый модуль + participant D as Тестовые данные + box rgb(132 132 132 / 10%) Контексты + participant MC as КонтекстМодуля + participant SC as КонтекстНабора + participant TC as КонтекстТеста + end + + Y->>M: ПередВсемиТестами + activate M + M->>D: СоздатьЭлемент + activate D + D ->> MC: ЗапомнитьСсылку + D ->> M: Созданный элемент + deactivate D + deactivate M + + Y->>M: ПередТестовымНабором + activate M + M->>D: СоздатьЭлемент + activate D + D ->> SC: ЗапомнитьСсылку + D ->> M: Созданный элемент + deactivate D + deactivate M + + Y ->> M: Выполнить тест + activate M + M ->> D: КонструкторОбъекта().Записать() + activate D + D ->> TC: ЗапомнитьСсылку + D ->> M: Созданный элемент + deactivate D + deactivate M + + Y->>M: ПослеТеста + activate M + M->>D: УдалитьТестовыеДанные + activate D + D ->> TC: ПолучитьСохраненныеСсылки + TC ->>D: Сохраненные cсылки + D-->>D: Удаление сохраненных ссылок + deactivate D + deactivate M + + Y->>M: ПослеТестовогоНабора + activate M + M->>D: УдалитьТестовыеДанные + activate D + D ->> SC: ПолучитьСохраненныеСсылки + SC ->>D: Сохраненные cсылки + D-->>D: Удаление сохраненных ссылок + deactivate D + deactivate M + + Y->>M: ПослеВсехТестов + activate M + M->>D: УдалитьТестовыеДанные + activate D + D ->> MC: ПолучитьСохраненныеСсылки + MC ->>D: Сохраненные cсылки + D-->>D: Удаление сохраненных ссылок + deactivate D + deactivate M +``` + +## Глобальная настройка удаления данных + +Для глобальной настройки [`ВТранзакции()`](/api/ЮТТесты#втранзакции) и/или [`УдалениеТестовыхДанных()`](/api/ЮТТесты#удалениетестовыхданных) вам необходимо всего лишь создать свой общий модуль, подписать на событие инициализации и там установить глобальные настройки. + +Подробнее тема будет раскрыта в будущем. diff --git a/documentation/docs/features/test-data/test-data.md b/documentation/docs/features/test-data/test-data.md new file mode 100644 index 000000000..1c3d58463 --- /dev/null +++ b/documentation/docs/features/test-data/test-data.md @@ -0,0 +1,127 @@ +--- +tags: [Начало, Тестовые данные] +sidebar_position: 2 +--- +# Тестовые данные + +Тестовые данные, на мой взгляд, одна из самых сложных тем в тестировании решений на базе 1С:Предприятия. + +Почти все алгоритмы системы опираются на данные базы, они их создают, обрабатывают, изменяют и используют в логике работы. Для корректного проведения одного документа может понадобиться множество записей справочников, настройки/остатки из регистров, значения констант и так далее. +Все это вам придется создать в тесте, который проверит корректность проведения этого документа. И это будет проверка только одного кейса. Для проверки проведения в других условиях вам придется создать еще пачку данных и так далее. + +Можно сократить объемы создаваемых данных используя [мокито](../mocking/mockito.md) и отключая часть логики для каких-то кейсов, но все равно данных понадобится много. + +Для облегчения работы с данными вам необходимо продумать схему, как вы будете с ними работать, откуда брать, как создавать, искать и так далее. + +## Подходы к работе с данными + +1. Ручное наполнение тестовой базы (мы предварительно создаем все что необходимо для тестов в базе, а потом используем её для прогона тестов) +2. Использование файлов с данными (макеты - сгенерированные в нужном формате файлы с описанием тестовых данных, загружаемые при выполнении тестов) +3. Программное создание нужных данных внутри теста + +У каждого из вариантов есть свои плюсы и минусы и при грамотной компоновке можно достичь наилучшего результата. + +* Ручное наполнение базы не учитывает последующие доработки системы, нужна миграция на новые алгоритмы и структуру. А также в этом случае нам необходимо завязываться на конкретные записи в системе, и при их изменении тестом мы можем сломать другие тесты. Поэтому, предварительное наполнение базы должно быть минимальным. +* В случае использования макетов данных возникают некоторые трудности с их доработкой и вариативностью, например, в новом тесте нужны данные из макета, но с некоторыми изменениями. В этом случае нам потребуется создавать новый макет или проверять, не сломают ли наши изменения другие тесты. Также при таком подходе сложно контролировать и искать какие макеты используются и кем. +* Программное создание тестовых данных увеличивает время и сложность теста. + +Если грамотно распределить тестовые данные на способы создания, можно добиться оптимального результата. +Например, статичные данные создать вручную, сложные кейсы данных засунуть в макеты, а для программного создания реализовать методы-конструкторы, которые будем переиспользовать. Таким образом, сможем уйти от минусов того или иного подхода или минимизировать их вред. + +Ниже хочу рассказать как мы работает с данными. + +### Образ тестовой базы + +Для прогона тестов используется предварительно подготовленный образ базы, на котором гоняются тесты как в CI, так и на базах разработки. + +Образ базы - это выгрузка (файл dt) или сама база (файл 1cd), на основании которого копированием или загрузкой создается база для прогона тестов. + +### Ручное наполнение тестовой базы + +Образ предварительно настраивается вручную (либо методами обновления/миграции), вводится минимально необходимая информация и базовые настройки. + +В образе не должно быть документов, справочников и прочего, с чем обычно имеют дело пользователи, только минимальный набор неизменных данных. + +### Программное создание данных + +Все остальные данные тесты готовят для себя сами. + +В большинстве случаев используется программное создание данных + +* Данные создаются кодом, используя [механизмы движка](data-generation.md) +* Используется генерация случайных значений, где это не противоречит требования +* Тесты стараются [прибрать за собой](test-data-deletion.md), используя транзакции или механизм удаления данных +* Созданы отдельные [модули-помощники](../../getting-started/auxiliary-modules.md) реализующие типовые кейсы данных + +#### Благодаря программной генерации данных вы получаете + +* Старый добрый код 1С, который понятен и не требует изучения дополнительных материалов +* Переиспользование и кастомизация алгоритмов генерации данных - общие модули, экспортные методы, параметры. +* Возможность создавать новые уникальные данные +* Можете использовать уже готовую логику тестируемого решения + +```bsl title="Общий модуль ТестовыеДанные" +Функция НовыйТовар() Экспорт + // Логика генерации +КонецФункции + +Функция НовыйПоставщик() Экспорт + // Логика генерации +КонецФункции + +Функция НовоеПоступлениеТовара(Склад, Знач Товар = Неопределено, Знач Поставщик = Неопределено) Экспорт + + Если Поставщик = Неопределено Тогда + Поставщик = НовыйПоставщик(); + КонецЕсли; + + Если Товар = Неопределено тогда + Товар = НовыйТовар(); + КонецЕсли; + + Возврат ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров) + .Установить("Склад", Склад) + .Установить("Поставщик", Поставщик) + .ФикцияОбязательныхПолей(); + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .Установить("Номенклатура", Товар) + .Фикция("Количество") + .Фикция("Цена") + .Провести(); + +КонецФункции +``` + +#### Использование генерации случайных значений позволяет + +* Сократить количество кода +* Акцентировать внимание на "важных" значениях + Например, в тесте ниже важно, чтобы `товар` и `склад` в документах совпадали, дата расхода должна быть больше прихода, количество расхода меньше прихода. + + ```bsl title="Тест" + Склад = ТестовыеДанные.НовыйСклад(); + Товар = ТестовыеДанные.НовыйТовар(); + + ДатаПоступления = ЮТест.Данные().СлучайнаяДата(); + ДатаРасхода = ЮТест.Данные().СлучайнаяДатаПосле(ДатаПоступления); + + КоличествоРасход = ЮТест.Данные().СлучайноеПоложительноеЧисло(100); + КоличествоПоступления = КоличествоРасход + ЮТест.Данные().СлучайноеПоложительноеЧисло(100); + + ТестовыеДанные.НовоеПоступлениеТовара(Склад, Товар, КоличествоПоступления, ДатаПоступления); + ТестовыеДанные.НовыйРасходТовара(Склад, Товар, КоличествоРасход, ДатаРасхода); + + // Проверки + ``` + +* Вскрыть неожиданные проблемы, за счет случайности данных вы покрываете больше кейсов. Правда это имеет и негативный эффект - тесты могут "фонить", то падать, то успешно проходить, а также сложнее воспроизвести упавший тест. + +Правильно организовав работу с тестовыми данными вы существенно облегчите процесс создания и поддержки тестов + +* Регламентируйте подход к именованию модулей и методов, это облегчит их поиск +* Договоритесь как вы будете создавать общие модули, как разделяются по ним конструкторы, например: + * Использовать один модуль на все методы-конструкторы, подходит для небольших решений. + * Создаете модули по подсистемам (разрезы учета/функциональности) - для небольших и средних конфигураций. + * Для каждого объекта/функциональности создается свой модуль с конструкторами - для больших и сложных проектов. +* Выполняйте перекрестные ревью, делитесь знаниями в команде. diff --git a/documentation/docs/features/test-registration.md b/documentation/docs/features/test-registration.md new file mode 100644 index 000000000..db36a1aad --- /dev/null +++ b/documentation/docs/features/test-registration.md @@ -0,0 +1,52 @@ +--- +tags: [Начало] +sidebar_position: 0 +--- + +# Регистрация тестовых методов + +Кроме того, чтобы написать тестовые сценарии (методы), разработчик должен зарегистрировать их в движке - рассказать ему, какие имеются тесты, как их запускать, с какими параметрами и т.д. +Регистрация выполняется внутри предопределенного экспортного метод `ИсполняемыеСценарии`, который обязательно должен находиться в каждом тестовом модуле. + +```bsl +Процедура ИсполняемыеСценарии() Экспорт + + // Регистрация тестов + ЮТТесты // Регистрация тестов выполняет через модуль регистратор + .ДобавитьТестовыйНабор("Математические методы") // Набор - объединение тестов + .ДобавитьТест("Сложение") // Обязательно при регистрации указываем имя экспортного метода + .ДобавитьТест("Вычитание", "Вычитание") // Также можно указать представление теста + .ДобавитьТест("Вычитание", "ВычитаниеСервер", , "Сервер") // Контекст исполнения, по умолчанию тест выполняется во всех контекстах модуля + .ДобавитьКлиентскийТест("УмножениеНаКлиенте") // Есть отдельный метод для регистрации клиентских тестов + .ДобавитьСерверныйТест("ДелениеНаСервере", "Деление на сервер") // Есть отдельный метод для регистрации серверных тестов + .ДобавитьТестовыйНабор("Строковые методы") + .ДобавитьТест("СтрНайти") + .ДобавитьТест("СтрРазделить"); + +КонецПроцедуры + +Процедура Сложение() Экспорт + // Тест сложения +КонецПроцедуры + +``` + +В нем перечисляются все доступные тесты этого модуля. +Метод `ИсполняемыеСценарии` вызывается движком для каждого тестового модуля при загрузке тестов, задолго до исполнения самих тестов. +В нем **не стоит** создавать какие-то тестовые данные или выполнять инициализацию, он должен просто отдать список тестов модуля. + +Регистрация и настройка тестов выполняется через методы модуля [`ЮТТесты`](/api/ЮТТесты), он позволяет: + +* Зарегистрировать тесты, с возможностью выбрать контексты исполнения: + * [`ДобавитьТест`](/api/ЮТТесты#добавитьтест) - Тест выполняется во всех контекстах тестового модуля + * [`ДобавитьКлиентскийТест`](/api/ЮТТесты#добавитьклиентскийтест) - Тест выполняется на клиенте + * [`ДобавитьСерверныйТест`](/api/ЮТТесты#добавитьсерверныйтест) - Тест выполняется на сервере +* [`ДобавитьТестовыйНабор`](/api/ЮТТесты#добавитьтестовыйнабор) позволяет сгруппировать тесты в наборы +* Настроить параметры исполнения теста + * [Очистка данных](test-data/test-data-deletion), перед использованием изучите [документацию](test-data/test-data-deletion) + * Выполнение [`ВТранзакции`](/api/ЮТТесты#втранзакции) - Тест выполняется в транзакции + * Удаление тестовых данных ([`УдалениеТестовыхДанных`](/api/ЮТТесты#удалениетестовыхданных)) - Данные созданные тестом будут удалены (если они создаются с помощью API движка - [`ЮТест.Данные()`](/api/ЮТест#данные)) вне зависимости от транзакции + * [`СПараметрами`](/api/ЮТТесты#спараметрами) - Тестовый метод будет вызван с указанными параметрами +* Настройка обработчиков [событий](events.md) + * [`Перед`](/api/ЮТТесты#перед) - Указывает, какой метод будет выполнятся перед тестом + * [`После`](/api/ЮТТесты#после) - Указывает, какой метод будет выполнятся после тестом diff --git a/documentation/docs/first-test.md b/documentation/docs/first-test.md deleted file mode 100644 index a81b84616..000000000 --- a/documentation/docs/first-test.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -sidebar_position: 2 -tags: [Начало] ---- - -# Пишем первый тест - -Для создания теста нужно в расширении (в отдельном или в том же) добавить модуль, содержащий экспортный метод регистрации - ИсполняемыеСценарии и реализовать тесты. - -```bsl title="ОМ_ПервыйТест" -#Область СлужебныйПрограммныйИнтерфейс - -Процедура ИсполняемыеСценарии() Экспорт - - ЮТТесты - .ДобавитьТест("Сложение") - .СПараметрами(2, 3, 5) - .СПараметрами(2, -3, -1) - ; - -КонецПроцедуры - -Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт - - ЮТест.ОжидаетЧто(ПервыйОперанд + ВторойОперанд) - .ИмеетТип("Число") - .Равно(Результат); - -КонецПроцедуры - -#КонецОбласти -``` diff --git a/documentation/docs/getting-started/auxiliary-modules.md b/documentation/docs/getting-started/auxiliary-modules.md new file mode 100644 index 000000000..a49921b70 --- /dev/null +++ b/documentation/docs/getting-started/auxiliary-modules.md @@ -0,0 +1,97 @@ +# Модули помощники + +При написании тестов не стоит забывать, что вы пишете код, а это значит, что вы можете использовать те же принципы, что при обычной разработке. + +Вы можете создавать общие модули и экспортные методы, которые упростят написание тестов для вашего продукта. +Такие как модули создания тестовых данных, настройки мокирования, общих проверок и так далее. +Главное сначала подумать об организации работы с ними, чтобы в будущем было проще находить нужные методы и избежать конфликтов при разработке. + +## Конструкторы данных + +Предположим у нас есть подсистема управления складом, которая содержит документы поступления, перемещения и реализации. +Создание документа поступления нам понадобится при тестировании всех видов документов, поэтому стоит вынести это в отдельный общий модуль. + +```bsl title="ОбщийМодуль.ТестовыеДанныеУправлениеСкладом" +Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт + Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров) + .ФикцияОбязательныхПолей() + .Установить("Склад"); + + Если Поставщик = Неопределено Тогда + Конструктор.Фикция("Поставщик"); + Иначе + Конструктор.Установить("Поставщик", Поставщик); + КонецЕсли + + Возврат Конструктор + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .Установить("Номенклатура", Товар) + .Фикция("Количество") + .Фикция("Цена") + .Записать(); + +КонецФункции +``` + +Бывают случаи, когда слишком сложно кастомизировать создание объекта через параметры, тогда удобнее возвращать конструктор объекта с базовым заполнением. Либо сделать набор методов-пресетов для различных кейсов. + +```bsl title="ОбщийМодуль.ТестовыеДанныеУправлениеСкладом" +Функция КонструкторПоступленияТовара(Склад, Поставщик = Неопределено) Экспорт + Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПоступлениеТоваров) + .ФикцияОбязательныхПолей() + .Установить("Склад"); + + Если Поставщик = Неопределено Тогда + Конструктор.Фикция("Поставщик"); + Иначе + Конструктор.Установить("Поставщик", Поставщик); + КонецЕсли + + Возврат Конструктор; + +КонецФункции + +Функция НовоеПоступлениеТовара(Склад, Товар, Поставщик = Неопределено) Экспорт + Конструктор = КонструкторПоступленияТовара(Склад, Поставщик); + + Возврат Конструктор + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .Установить("Номенклатура", Товар) + .Фикция("Количество") + .Фикция("Цена") + .Записать(); + +КонецФункции + +Функция НовоеПоступлениеТовараОтЮрЛица(Склад, Товар) Экспорт + Поставщик = НовоеЮрЛицо(); + + Конструктор = КонструкторПоступленияТовара(Склад, Поставщик); + + Возврат Конструктор + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .Установить("Номенклатура", Товар) + .Фикция("Количество") + .Фикция("Цена") + .Записать(); + +КонецФункции + +Функция НовоеПоступлениеТовараОтФизЛица(Склад, Товар) Экспорт + Поставщик = НовоеФизЛицо(); + + Конструктор = КонструкторПоступленияТовара(Склад, Поставщик); + + Возврат Конструктор + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .Установить("Номенклатура", Товар) + .Фикция("Количество") + .Фикция("Цена") + .Записать(); + +КонецФункции +``` diff --git a/documentation/docs/getting-started/edt-plugin/images/launch-type-and-extension.png b/documentation/docs/getting-started/edt-plugin/images/launch-type-and-extension.png new file mode 100644 index 000000000..ae669afa2 Binary files /dev/null and b/documentation/docs/getting-started/edt-plugin/images/launch-type-and-extension.png differ diff --git a/documentation/docs/getting-started/edt-plugin/images/module-launch-test.png b/documentation/docs/getting-started/edt-plugin/images/module-launch-test.png new file mode 100644 index 000000000..11ad6d1fa Binary files /dev/null and b/documentation/docs/getting-started/edt-plugin/images/module-launch-test.png differ diff --git a/documentation/docs/getting-started/edt-plugin/images/report.png b/documentation/docs/getting-started/edt-plugin/images/report.png new file mode 100644 index 000000000..8314a493e Binary files /dev/null and b/documentation/docs/getting-started/edt-plugin/images/report.png differ diff --git a/documentation/docs/getting-started/edt-plugin/images/yaxunit-commands.png b/documentation/docs/getting-started/edt-plugin/images/yaxunit-commands.png new file mode 100644 index 000000000..6170ba18b Binary files /dev/null and b/documentation/docs/getting-started/edt-plugin/images/yaxunit-commands.png differ diff --git a/documentation/docs/getting-started/edt-plugin/index.md b/documentation/docs/getting-started/edt-plugin/index.md new file mode 100644 index 000000000..658bf4a04 --- /dev/null +++ b/documentation/docs/getting-started/edt-plugin/index.md @@ -0,0 +1,58 @@ +--- +sidebar_position: 1 +tags: [Начало] +--- + +# Плагин для EDT + +Предоставляет следующие функции + +## Запуск тестов + +В первую очередь, плагин предоставляет новую конфигурацию запуска, позволяя указать настройки запуска тестов. + +![Расширение и конфигурация запуска](images/launch-type-and-extension.png) + +После создания конфигурация запуска тестов, появляется возможность запустить выполнение тестов, используя стандартное меню EDT _(также как и 1С:Предприятие)_. + +Кроме конфигурации запуска тестов, плагин добавляет команды запуска тестова для конкретных методов, а также тестовых модулей. +Справа от имени каждого тестового метода появляется кнопка запуска, запускающая этот тест или все тесты модуля _(если выполнить запуск тестова для метода `ИсполняемыеСценарии`)_. + +Для удобства, эти команды продублированы в контекстное меню на панеле "Схема модуля". + +![Команды запуска теста](images/module-launch-test.png) + +## Отчет о тестировании + +По окончании тестирования плагин выводит отчет в котором детально отображается список пройденных тестов, статус их прохождения и информация о возникших ошибках. + +![Отчет](images/report.png) + +Отчет позволяет: + +* Получить информацию о результате тестирования; +* Перезапустить тесты _(упавшие, все или выбранные)_; +* Посмотреть историю тестовых прогонов; +* Перейти к тесту и тестируемому методу; +* Просмотреть стек ошибки и перейти к месту их возникновения; +* Увидеть различие ожидаемого и фактического значения. + +## Команды помощники + +Для помощи при написании тестов добавлена команда "1С:Модульные тесты (YAxUnit)" в контекстное меню редактора и схемы модуля. Она позволяет: + +* создавать тестовые методы, +* генерировать наборы тестов, +* создавать моки, +* переходить между проверяемым методом и тестом, +* а также запускать тесты. + +При выборе этой команды открывается окно с доступными действиями. Список действий формируется динамически и зависит от модуля. + +Для модулей конфигурации доступны действия создания тестов и моков, а также переходы к тестам при их наличии. + +Для модулей с тестами - команды создания тестов и их запуска. + +Для того, чтобы движок мог находить тестовые модули, выполнять переходы между ними, вы должны следовать [схеме наименования](../structure.md) + +![Команды переходов](images/yaxunit-commands.png) diff --git a/documentation/docs/getting-started/first-test.md b/documentation/docs/getting-started/first-test.md new file mode 100644 index 000000000..1245f5c2a --- /dev/null +++ b/documentation/docs/getting-started/first-test.md @@ -0,0 +1,125 @@ +--- +sidebar_position: 2 +tags: [Начало] +--- + +# Пишем первый тест + +## Подготовка окружения + +Перед написанием тестов вам необходимо: + +* Создать информационную базу, на которой будете прогонять тесты. +* Установить [тестовый движок](install/install.md) в проект. Не забывайте о необходимости сбросить признаки `Безопасный режим` и `Защита от опасных действий` после загрузки расширения. +* Если вы используете 1С:Enterprise Development Tools (EDT), то установить [плагин](install/install-plugin.md), который будет вам помогать. + +## Первый тест + +Вы все установили, перед вами открыта EDT или конфигуратор, в котором есть проверяемая конфигурация и расширение с тестовым движком `YAxUnit`. + +Тесты с использование YAxUnit пишутся в расширении, это может быть как отдельное расширение, так и расширение движка. Подробнее об плюсах и минусах этих вариантов вы можете почитать в [статье об организации тестов](structure.md). +Для первого теста **рекомендую** использовать расширение движка. + +Необходимо создать общий модуль в расширении (новый, а не заимствованный), назовем его `ОМ_ПервыйТест`, это будет наш первый тестовый набор (test suite). + +Следующим шагом необходим создать экспортную процедуру с наименованием `ИсполняемыеСценарии`, это главный метод тестового набора, здесь необходимо будет перечислить тесты, которые содержит модуль. Так как в 1С:Предприятии нельзя в режиме исполнения понять, какие методы содержит модуль (нет рефлексии). + +```bsl title="ОМ_ПервыйТест" + +Процедура ИсполняемыеСценарии() Экспорт + +КонецПроцедуры +``` + +Предположим **мы хотим протестировать** как работает сложение. + +Для этого нам необходимо создать **экспортный метод**, который будет реализовывать тест и **зарегистрировать** его в методе `ИсполняемыеСценарии`. + +```bsl title="ОМ_ПервыйТест" +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты.ДобавитьТест("Сложение"); + +КонецПроцедуры + +Процедура Сложение() Экспорт + +КонецПроцедуры + +``` + +За [регистрацию тестов](../features/test-registration.md) отвечает модуль `ЮТТесты`. Он содержит набор методов позволяющих добавлять тесты и настраивать их исполнение (параметры, режимы исполнения - клиент/сервер, работу в транзакции и многое другое). +С помощью команды `ЮТТесты.ДобавитьТест("Сложение")` мы добавляем тест `Сложение` в тестовый набор. На этом этапе можно уже [запускать](run/run.md) наш тест. + +Теперь добавим полезной нагрузки тесту, проверим что `2 + 2 = 4`. + +```bsl title="ОМ_ПервыйТест" +Процедура Сложение() Экспорт + + РезультатСложения = 2 + 2; // 1 + ЮТест.ОжидаетЧто(РезультатСложения) // 2 + .Равно(4); // 3 + +КонецПроцедуры +``` + +1. Тест выполняет интересующую нас команду `2 + 2` (это может быть вызов какого-то метода конфигурации). +2. Используя [механизм утверждений](../features/assertions/assertions.md) (проверок) указываем, что хотим проверить `ЮТест.ОжидаетЧто(РезультатСложения)` +3. Проверяем, что `РезультатСложения` равно `4` + +С помощью утверждений разработчик описывает, ожидания (требования) от работы команды(метода). Тест во время исполнения, проверяет соответствуют ли эти ожидания реальным данным, если есть расхождения, то будет выброшено исключение, которое зафиксируется в отчете о тестировании. + +Настало время запустить наш первый тест, как это сделать прочтите в [статье](run/run.md). +После выполнения вы увидите отчет о тестировании, в котором тест будет "зеленым". Если в тесте исправить проверку `.Равно(4);` на `.Равно(3);` и еще раз запустить, то тест уже изменит свой статус и вы увидите сообщение об ошибке. + +Можно еще доработать нащ тест, проверить разные варианты сложения, для этого могут помочь параметры теста. + +```bsl title="ОМ_ПервыйТест" +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .ДобавитьТест("Сложение") + .СПараметрами(2, 3, 5) + .СПараметрами(2, -3, -1) + .СПараметрами("2", "-3", "2-3") + .СПараметрами("2", -3, "2-3") + ; + +КонецПроцедуры + +Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт + + РезультатСложения = ПервыйОперанд + ВторойОперанд; + ЮТест.ОжидаетЧто(РезультатСложения) + .Равно(Результат); + +КонецПроцедуры +``` + +При регистрации указываются параметры, с которыми должен быть вызван тест, дополняем сигнатуру процедуры, чтобы она приняла параметры и переводим тест на использование этих параметров. + +Также можно добавить проверок. + +```bsl title="ОМ_ПервыйТест" +Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт + + РезультатСложения = ПервыйОперанд + ВторойОперанд; + ЮТест.ОжидаетЧто(РезультатСложения) + .Заполнено() + .ИмеетТип("Число, Строка") + .Равно(Результат); + +КонецПроцедуры +``` + +Поздравляю с первый реализованным тестом. +Используя [руководство](../features) и имеющиеся тесты вы сможете дальше изучить и написать более полезные тесты для своих продуктов. + +Примеры тестов: + +* [Тестов движка](https://github.com/bia-technologies/yaxunit/tree/develop/tests/src/CommonModules) +* Тесты других открытых проектов + * [bellerage-ssl](https://github.com/Bellerage-IT/bellerage-ssl/tree/master/src/cfe/yaxunit/src/CommonModules) + * [AdvancedGlobalSearchOneS](https://github.com/SeiOkami/AdvancedGlobalSearchOneS/tree/main/%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%D0%93%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%D0%9F%D0%BE%D0%B8%D1%81%D0%BA.%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/src/CommonModules) + +Также есть [видео курс](https://www.youtube.com/playlist?list=PLQ0oWbrgHNk5RF3dfH1QexQLr38Cm03Kj), кажется годным, но все не смотрел. diff --git a/documentation/docs/getting-started/fluent-api.md b/documentation/docs/getting-started/fluent-api.md new file mode 100644 index 000000000..3bed79394 --- /dev/null +++ b/documentation/docs/getting-started/fluent-api.md @@ -0,0 +1,102 @@ +# Текучий интерфейс + +Большая часть публичной функциональности тестового движка YAxUnit реализована с использование [`текучих выражений (Fluent interface)`](https://ru.wikipedia.org/wiki/Fluent_interface) + +Основная цель их использования - улучшение читаемости кода и упрощение работы с движком. Текучие выражения хорошо зарекомендовали себя и широко применяются в других языках (примеры: [C#: builder pattern](https://metanit.com/sharp/patterns/6.1.php), [java: stream-api](https://javarush.com/groups/posts/2203-stream-api), [php: dsl](https://ru.hexlet.io/courses/php-object-oriented-design/lessons/fluent-interface/theory_unit), [C#: tests assertions](https://fluentassertions.com/introduction), [1С: текучие утверждения](https://habr.com/ru/articles/260013/), [1С: Элемент](https://its.1c.ru/db/pubelementlang/content/18/hdoc), [1С: объектная модель запроса](https://infostart.ru/1c/articles/1991009/)). +Текучие выражения - это цепочка методов, объединенных одним контекстом, который они настраивают/обрабатывают. Он упрощает множественные вызовы методов одного и того же объекта. +Например: + +```bsl title="Создание документа с использованием текучих выражений" + Документ = ЮТест.Данные().КонструкторОбъекта(Документы.ПриходТовара) + .Установить("Поставщик", Поставщик) // Устанавливает значение реквизита документа. + .Фикция("Дата") // Генерирует случайную дату. + .Фикция("Номер") // Генерирует случайный номер. + .Фикция("Склад") // Создает "пустышку" склада. + .Фикция("Валюта") // Создает "пустышку" валюты. + .ТабличнаяЧасть("Товары") // Переключает контекст на работу с табличной частью "Товары". + .ДобавитьСтроку() // Добавляет строку табличной части. + .Фикция("Товар", Новый Структура("Поставщик", Поставщик)) // Создает "пустышку" товары от конкретного поставщика. + .Фикция("Цена") // Генерирует случайную цену. + .Провести(); +``` + +```bsl title="Проверка документа с использованием текучих выражений" + ЮТест.ОжидаетЧто(Документ) + .Свойство("Дата").Заполнено() // Проверяет, что дата документа заполнена. + .Свойство("Номер").Заполнено() // Проверяет, что номер документа заполнен. + .Свойство("Склад").Заполнено() // Проверяет, что склад документа заполнен. + .Свойство("Валюта").Заполнено() // Проверяет, что валюта документа заполнена. + .Свойство("Товары").ИмеетДлину(1) // Проверяет, что табличная часть "Товары" имеет длину 1. + .Свойство("Товары[0].Товар").Заполнено() // Проверяет, что товар из первой строки заполнен + .Свойство("Товары[0].Товар.Поставщик").Равно(Поставщик); // и имеет поставщика, равного нужному +``` + +Примеры выше можно было бы реализовать без использования текучих выражений, например: + +```bsl title="Создание документа с заполнением случайных значений" +Документ = Документы.ПриходТовара.СоздатьДокумент(); +Документ.Поставщик = Поставщик; +Документ.Дата = ЮТест.Данные().СлучайнаяДата(); +Документ.Номер = ЮТест.Данные().СлучайнаяСтрока(); +Документ.Склад = ЮТест.Данные().Фикция(Тип("СправочникСсылка.Склад")); +Документ.Валюта = ЮТест.Данные().Фикция(Тип("СправочникСсылка.Валюты")); + +СтрокаТовары = Документ.Товары.Добавить(); +СтрокаТовары.Товар = ЮТест.Данные().Фикция(Тип("СправочникСсылка.Товары"), Новый Структура("Поставщик", Поставщик)); +СтрокаТовары.Цена = ЮТест.Данные().СлучайноеПоложительноеЧисло(); + +Документ.Записать(РежимЗаписиДокумента.Проведение); +Ссылка = Документ.Ссылка; +``` + +```bsl title="Или вариант используя конструктора, но без цепочки вызовов" +Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПриходТовара); +Конструктор.Установить("Поставщик", Поставщик); +Конструктор.Фикция("Дата"); +Конструктор.Фикция("Номер"); +Конструктор.Фикция("Склад"); +Конструктор.Фикция("Валюта"); +Конструктор.ТабличнаяЧасть("Товары"); +Конструктор.ДобавитьСтроку(); +Конструктор.Фикция("Товар", Новый Структура("Поставщик", Поставщик)); +Конструктор.Фикция("Цена"); +Документ = Конструктор.Провести(); +``` + +Первый вариант (с использованием текучих выражений) не содержит "служебного" кода (обращения к документу или конструктору), таким образом концентрация полезного кода выше, меньше отвлекающих факторов и больше акцент на то, что действительно важно. + +Но при этом текучие выражения имеют и ряд минусов: + +* Проблема с отладкой, нельзя поставить точку внутри цепочки, только проход по шагам. +* Не работает контекстная подсказка в конфигураторе (хотя она и так редко работает). +* Необходимость привычки и использовать "правильное" форматирование (отступы). + +## Принцип работы текучих выражений в YAxUnit + +Текучие выражения работают за счет передачи контекста между вызовами, достигается это тем, что объект, реализующий интерфейс текучих выражений: + +* хранит внутри себя контекст(состояние) +* возвращает сам себя из методов +* или новый объект, передав в него текущий контекст. + +В языках, поддерживающих ООП, под каждый текучий интерфейс создается свой класс, хранящий контекст и предоставляющий необходимый API. В 1С это можно реализовать в виде набора обработок. +Таким образом в YAxUnit созданы: + +* Конструктор объектов информационной базы, `ЮТест.Данные().КонструкторОбъекта`. +* Конструктор объектов XDTO, `ЮТест.Данные().КонструкторОбъектаXDTO`. +* Эмулятор выборки данных ADO.RecordSet, `ЮТест.Данные().ADORecordSet`. +* Эмулятор запроса к http сервису, `ЮТест.Данные().HTTPСервисЗапрос`. + +А есть, другая часть API построенная на текучих выражения, она реализуется через общие модули и хранение состояния в глобальном контексте. +Общие модули позволяют, в отличии от обработок: + +* создавать API доступный и на клиенте, и на сервере +* избежать дублирования кода, который приводи к расхождению логики api +* не захламлять контекстную подсказку свойствами обработки (или формы для клиента) +* оптимизировать время работы (нет затрат на создание обработок) + +Дополнительно, так как контекст глобальный, не обязательно передавать объект, чтобы получить доступ к настроенному контексту. +Например: + +* При регистрации теста, информация о тестах никуда не возвращается, движок, после вызова метода `ИсполняемыеСценарии`, просто считывает результат из глобального контекста. +* Или настройки мокито, выполненные в методе теста сразу же доступны в методах других модулей (перехватываемых). diff --git a/documentation/docs/getting-started/images/structure.png b/documentation/docs/getting-started/images/structure.png new file mode 100644 index 000000000..3e73f353f Binary files /dev/null and b/documentation/docs/getting-started/images/structure.png differ diff --git a/documentation/docs/getting-started/index.md b/documentation/docs/getting-started/index.md new file mode 100644 index 000000000..7ff83f31e --- /dev/null +++ b/documentation/docs/getting-started/index.md @@ -0,0 +1,30 @@ +--- +sidebar_label: "Начало работы" +sidebar_position: 0 +--- + +# Начало работы + +YAxUnit - это расширение конфигурации с открытым исходным кодом, которое помогает в нелегком труде по написанию модульных тестов для решений на платформе 1С:Предприятие. + +![Отчет о тестировании](../images/report-ui.png) + +Прежде всего нужно пройти через [процесс установки](install/). + +После этого вы можете попробовать написать свой [первый тест](first-test.md) или ознакомиться с возможностями YAxUnit изучив [руководство](../features/). + +## Системные требования + +| | | +|--------------------------------------:|-------------------------| +| Версия платформы 1С:Предприятие | `8.3.10+` | +| Поддерживаемые ОС | `Windows`, `Linux` | +| Вариант встроенного языка | `Русский`, `Английский` | +| Поддерживаемые режимы работы: | | +| Тонкий клиент | ✅ | +| Тонкий клиент | ✅ | +| Толстый клиент управляемое приложение | ✅ | +| Толстый клиент обычное приложение | ✅ | +| Web-клиент | ❌ | +| Файловая информационная база | ✅ | +| Клиент-серверная информационная база | ✅ | diff --git a/documentation/docs/install/images/compare.png b/documentation/docs/getting-started/install/images/compare.png similarity index 100% rename from documentation/docs/install/images/compare.png rename to documentation/docs/getting-started/install/images/compare.png diff --git a/documentation/docs/install/images/gh-release-content.png b/documentation/docs/getting-started/install/images/gh-release-content.png similarity index 100% rename from documentation/docs/install/images/gh-release-content.png rename to documentation/docs/getting-started/install/images/gh-release-content.png diff --git a/documentation/docs/install/images/gh-release.png b/documentation/docs/getting-started/install/images/gh-release.png similarity index 100% rename from documentation/docs/install/images/gh-release.png rename to documentation/docs/getting-started/install/images/gh-release.png diff --git a/documentation/docs/install/images/link-base-project.png b/documentation/docs/getting-started/install/images/link-base-project.png similarity index 100% rename from documentation/docs/install/images/link-base-project.png rename to documentation/docs/getting-started/install/images/link-base-project.png diff --git a/documentation/docs/install/images/plugin-install-from-rep.png b/documentation/docs/getting-started/install/images/plugin-install-from-rep.png similarity index 100% rename from documentation/docs/install/images/plugin-install-from-rep.png rename to documentation/docs/getting-started/install/images/plugin-install-from-rep.png diff --git a/documentation/docs/install/images/project-import.png b/documentation/docs/getting-started/install/images/project-import.png similarity index 100% rename from documentation/docs/install/images/project-import.png rename to documentation/docs/getting-started/install/images/project-import.png diff --git a/documentation/docs/install/install-plugin.md b/documentation/docs/getting-started/install/install-plugin.md similarity index 76% rename from documentation/docs/install/install-plugin.md rename to documentation/docs/getting-started/install/install-plugin.md index 13b60729d..250c66b3f 100644 --- a/documentation/docs/install/install-plugin.md +++ b/documentation/docs/getting-started/install/install-plugin.md @@ -1,8 +1,8 @@ --- -sidebar_position: 2 -sidebar_label: Установка плагина EDT +sidebar_position: 1 +sidebar_label: Установка плагина для EDT --- -# Установка плагина для работы с тестами в EDT +# Установка плагина для работы с тестами ```mdx-code-block import Tabs from '@theme/Tabs'; @@ -10,7 +10,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ``` -Для того, что бы вам и нам было проще писать тесты мы разработали плагин для EDT. +Для того, что бы вам и нам было проще писать тесты мы разработали плагин для 1С:Enterprise Development Tools (EDT). С его помощью вы сможете: @@ -20,40 +20,34 @@ import TabItem from '@theme/TabItem'; Для установки плагина вам необходимо воспользоваться стандартным функционалом Eclipse (EDT) `Установить новое ПО...`. -* Открываем EDT. +* Открываем EDT. * Переходим к `Установить новое ПО` (в меню `Справка`); * Добавляем новый репозиторий; - ```mdx-code-block - - - ``` - +````mdx-code-block + + ```url https://bia-technologies.github.io/edt-test-runner/repository ``` - - ```mdx-code-block - - - - ``` - + + ```url https://bia-technologies.github.io/edt-test-runner/dev/repository ``` - - ```mdx-code-block - - + + + ```url + https://bia-technologies.github.io/edt-test-runner/repository/updates/23.x ``` + + +```` ![Установка плагина](images/plugin-install-from-rep.png) :::tip совет - Для ускорения установки можно убрать галочку `Обращаться во время инсталляции ко всем сайтам ...` - ::: * Нажимаем далее; @@ -61,7 +55,5 @@ import TabItem from '@theme/TabItem'; * Соглашаемся с предупреждением безопасности; * И перезагружаем IDE. :::note примечание - EDT будет долго перезагружаться и это нормально. - ::: diff --git a/documentation/docs/install/install.md b/documentation/docs/getting-started/install/install.md similarity index 92% rename from documentation/docs/install/install.md rename to documentation/docs/getting-started/install/install.md index a0c2108de..67148ea5e 100644 --- a/documentation/docs/install/install.md +++ b/documentation/docs/getting-started/install/install.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 0 tags: [Начало] --- @@ -11,16 +11,16 @@ YAxUnit - это расширение для 1С:Предприятия, кот * 1С:Предприятие версии 8.3.10 или старше -## Установка в EDT +## Установка в 1С:Enterprise Development Tools (EDT) ### Первичная установка тестового движка в рабочее пространство (workspace) 1. Скачаем архив [релиза](https://github.com/bia-technologies/yaxunit/releases/latest) ![Страница релиза](images/gh-release.png) -2. Копируем из архива расширение расположенное в каталоге `exts/yaxunit/` в свой каталог с исходниками (не в воркспейс) +2. Копируем из архива расширение расположенное в каталоге `exts/yaxunit/` в свой каталог с исходниками (не в workspace) ![Содержимое архива](images/gh-release-content.png) -3. Импортируем проект расширения в воркспейс +3. Импортируем проект расширения в workspace ![Импорт проекта](images/project-import.png) 4. Привязываем импортированный проект расширения к конфигурации ![Связь с базовым проектом](images/link-base-project.png) diff --git a/documentation/docs/getting-started/recomendations.md b/documentation/docs/getting-started/recomendations.md new file mode 100644 index 000000000..0ae812ba3 --- /dev/null +++ b/documentation/docs/getting-started/recomendations.md @@ -0,0 +1,12 @@ +# Рекомендации + +* Для того чтобы лучше понять тестирование и научиться разным приемам читайте/ищите статьи по тестированию в других языках/продуктах. Большинство практик и примеров универсальные и никак не связаны с тем, что вы тестируете, разница лишь в инструментарии. +* Перед внедрением, когда вы уже попробовали и поняли необходимость использования тестов вам следует сразу же продумать и регламентировать + * Подход к организации тестов - что тестировать, что нет, как называть модули с тестами, как именовать модули помощники. Это все нужно чтобы упростить работу с тестами в будущем. + * Как вам валидировать "правильность" тестов, чтобы они были действительно полезными. + +## Внедрение + +* Если у вас в компании множество команд занимающихся тестированием, то вам следует: + * Продумать схему обновления, рекомендую использовать релизный репозиторий и обновление через git + * Возможно стоит создать свою версию движка на базе публичной версии, в которой вы будете собирать "помогаторы" тестирования для ваших продуктов. \ No newline at end of file diff --git a/documentation/docs/run/configuration.md b/documentation/docs/getting-started/run/configuration.md similarity index 96% rename from documentation/docs/run/configuration.md rename to documentation/docs/getting-started/run/configuration.md index 37122b8dd..591621c51 100644 --- a/documentation/docs/run/configuration.md +++ b/documentation/docs/getting-started/run/configuration.md @@ -28,12 +28,12 @@ ## Параметры логирования -| Имя параметра | Тип | Значение по умолчанию | Описание | -|---------------|-----------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------| -| `file` | `String` | `""` | Путь к файлу лога | +| Имя параметра | Тип | Значение по умолчанию | Описание | +|---------------|-----------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------| +| `file` | `String` | `""` | Путь к файлу лога | | `enable` | `Boolean` | `Null` | Использование логирвания.
Если не указан, зависит от параметра `file` и `console`, если установлены - вкл, если нет - выкл | -| `console` | `Boolean` | `false` | Вывод лога в stdout (консоль) | -| `level` | `String` | `"debug"` | Уровень детализации лога. Возможные значения: `"debug"`, `"info"`, `"error"` | +| `console` | `Boolean` | `false` | Вывод лога в stdout (консоль) | +| `level` | `String` | `"debug"` | Уровень детализации лога. Возможные значения: `"debug"`, `"info"`, `"error"` | Примеры: diff --git a/documentation/docs/getting-started/run/images/from-configurator.png b/documentation/docs/getting-started/run/images/from-configurator.png new file mode 100644 index 000000000..942d200e5 Binary files /dev/null and b/documentation/docs/getting-started/run/images/from-configurator.png differ diff --git a/documentation/docs/getting-started/run/images/run-button.png b/documentation/docs/getting-started/run/images/run-button.png new file mode 100644 index 000000000..168912ffa Binary files /dev/null and b/documentation/docs/getting-started/run/images/run-button.png differ diff --git a/documentation/docs/getting-started/run/images/run-configuration.png b/documentation/docs/getting-started/run/images/run-configuration.png new file mode 100644 index 000000000..77132e57a Binary files /dev/null and b/documentation/docs/getting-started/run/images/run-configuration.png differ diff --git a/documentation/docs/getting-started/run/images/run-from-command-palette.png b/documentation/docs/getting-started/run/images/run-from-command-palette.png new file mode 100644 index 000000000..1cede5ba2 Binary files /dev/null and b/documentation/docs/getting-started/run/images/run-from-command-palette.png differ diff --git a/documentation/docs/getting-started/run/images/run-from-module.png b/documentation/docs/getting-started/run/images/run-from-module.png new file mode 100644 index 000000000..139f1c06d Binary files /dev/null and b/documentation/docs/getting-started/run/images/run-from-module.png differ diff --git a/documentation/docs/getting-started/run/images/run-from-schema.png b/documentation/docs/getting-started/run/images/run-from-schema.png new file mode 100644 index 000000000..8af3f031c Binary files /dev/null and b/documentation/docs/getting-started/run/images/run-from-schema.png differ diff --git a/documentation/docs/getting-started/run/run.md b/documentation/docs/getting-started/run/run.md new file mode 100644 index 000000000..43638c47e --- /dev/null +++ b/documentation/docs/getting-started/run/run.md @@ -0,0 +1,91 @@ +--- +sidebar_position: 3 +tags: [Начало] +--- + +# Запуск и отладка тестов + +В общем случае запуск тестов выполняется запуском 1С:Предприятия с параметром `RunUnitTests`. При необходимости можно указать путь к файлу [конфигурации запуска](configuration.md) для настройки прогона тестов. + +Для упрощения этого процесса есть другие способы. + +:::caution Важно +*После загрузки расширения в информационную базу необходимо отключить у него `безопасный режим` и `защиту от опасных действий`* +::: + +## Запуск из 1С:Enterprise Development Tools (EDT) + +Если вы используете EDT, то установив [плагин](../install/install-plugin.md) вы получаете возможность запускать тесты нажатием одной кнопки. + +:::info +Все описанные ниже способы позволяют запускать тесты в режиме отладки +::: + +### Конфигурация запуска + +Плагин добавляет в EDT новый тип конфигурации запуска приложения. + +![EDT](images/run-configuration.png) + +С ее помощью вы можете запускать тесты также как и 1С:Предприятие (кнопкой панели инструментов) + +![EDT](images/run-button.png) + +:::caution Важно +Без созданной и настроенной конфигурации запуска модульных тестов не будут работать другие варианты запуска. +::: + +### Запуск из боковой панели модуля + +Также плагин позволяет запускать тесты прямо из модуля для нужных методов. +Если вы перейдете в модуль с тестами, то рядом с каждым тестовым методом вы увидите иконки запуска. + +![EDT](images/run-from-module.png) + +Кликнув по ним вы сможете запустить конкретный тест. +При нажатии на иконку метода `ИсполняемыеСценарии` вы запустите все тесты модуля. + +Команды запуска добавлены в схему модуля. + +![EDT](images/run-from-schema.png) + +### Запуск из палитры команд + +Плагин добавляет набор различных команд для работы с тестами, среди которых есть и запуск. + +![EDT](images/run-from-command-palette.png) + +Основным ее плюсом является возможность работать с клавиатуры и не запоминать большое количество горячих клавиш. +`Ctrl+Shift+T`, затем `Enter` и тест текущего метода запущен. + +## Запуск из конфигуратора + +Возможности конфигуратора не столь большие, поэтому есть только один способ запустить тесты. + +1. Создать файл конфигурации запуска + * [Вручную](configuration.md) + * С помощью [формы настройки](../../yaxunit-ui.md#интерфейс-настройки-конфигурации) +2. Указать путь к файлу конфигурации запуска в параметрах запуска + + ![Конфигуратор](images/from-configurator.png) + +:::tip +При разработки/отладке тестов полезно держать открытой [форму настройки](../../yaxunit-ui.md#интерфейс-настройки-конфигурации) для быстрой перенастройки запускаемых тестов. Сначала запустил тесты модуля, потом в той же форме убрали "зеленые", сохранили настройку в тот же файл и выполнили отладку нужных тестов, запустив их из конфигуратор. +::: + +## Запуск из предприятия + +Для запуска тестов из предприятия необходимо воспользоваться командой [Запуск тестирования](../../yaxunit-ui.md#запуск-тестов) + +![Запуск тестов](../../images/ui-run-tests.png) + +## Строка запуска предприятия + +`[путь к клиенту 1С] ENTERPRISE [Параметры подключения к ИБ] [Параметры авторизации] /C RunUnitTests=/путь/к/конфигурационному/файлу` + +Для формирования строки запуска можно воспользоваться [интерфейсом настройки](../../yaxunit-ui.md#интерфейс-настройки-конфигурации) + +Пример: + +`"C:\Program Files\1cv8\8.3.18.1698\bin\1cv8c.exe" ENTERPRISE /IBName MyInfoBase /N Admin /C RunUnitTests=C:\tmp\test-config.json` + Запуск тестов в режиме тонкого клиента на информационной базе `MyInfoBase` под пользователем `Admin` по конфигурации указанной в файле `C:\tmp\test-config.json` diff --git a/documentation/docs/getting-started/structure.md b/documentation/docs/getting-started/structure.md new file mode 100644 index 000000000..98d55e071 --- /dev/null +++ b/documentation/docs/getting-started/structure.md @@ -0,0 +1,79 @@ +# Организация тестов + +## Расширение с тестами + +Тесты размещаются в расширениях конфигурации, вы можете их совместить с движком, либо создать отдельное расширение. + +* Вместе с движком. + * Доступна контекстная подсказка. + * Сложнее обновлять движок, необходимо воспользоваться сравнением-объединением. +* В отдельном расширении. + * Нет подсказки по методам движка. + * Движок обновляется загрузкой/заменой. + * Проще переключаться между версиями. + * Движок можно не хранить в репозитории проекта. + +Мы в своих проектах используем первый вариант, так как удобство и экономия времени каждым разработчиком от контекстной подсказки перевешивает минус ручного обновления. + +![Тесты движка](images/structure.png) + +## Тестовые модули + +Тесты располагаются в общих модулях (не заимствованных). +Тестовые модули (наборы тестов объекта) состоят из следующих блоков: + +* Метод регистрации тестов `ИсполняемыеСценарии`. + В методе регистрации необходимо [перечислить все тесты](../features/test-registration.md) и, при необходимости, выполнить настройку. +* Реализация тестов, тестовые методы, собственно сами тесты. +* [Обработчики событий](../features/events.md), при необходимости. + +Принято на один тестируемый модуль объекта создавать один общий модуль с тестами, например, тесты на модуль объекта и отдельно тесты на модуль менеджера. + +Также полезно использовать регламент наименования тестовых модулей, так чтобы вам проще было с ними работать в будущем, облегчить навигацию. + +Рекомендуем рассмотреть схему именования для EDT и если ее соблюдать, вы сможете с легкостью переключатся между тестом и тестируемым методом. + +### Схема наименования модулей + +Все тесты должны располагаться в общих модулях. + +Имя тестового модуля должно соответствовать шаблону `[Префикс типа объекта_][Имя проверяемого объект]{_Суффикс типа модуля}`, где суффикс не обязателен, но крайне желателен. + +По правильно названному модулю мы можем с легкостью получить информацию о типе тестируемого объекта и его имени, а также тип его модуля, методы которого проверяем. Список поддерживаемых суффиксов и префиксов приведен в таблицах ниже. + +#### Префиксы типов объекта + +| Тип тестируемого объекта | Префикс | Пример | +| ------------------------ | ------- | ------------------------------------------- | +| Общий модуль | `ОМ_` | ОМ_ОбщегоНазначения | +| Регистр бухгалтерии | `РБ_` | РБ_Хозрасчетный, РБ_Хозрасчетный_НЗ | +| Регистр накопления | `РН_` | РН_ОстаткиНаСкладах, РН_ОстаткиНаСкладах_ММ | +| Регистр расчета | `РР_` | РР_Зарплата, РР_Зарплата_НЗ | +| Регистр сведений | `РС_` | РС_АдресныйКлассификатор | +| Бизнес процесс | `БП_` | БП_Согласование | +| Справочник | `Спр_` | Спр_Пользователи, Спр_Пользователи_МО | +| План счетов | `ПС_` | ПС_Хозрасчетный | +| План видов расчета | `ПВР_` | ПВР_Зарплатный | +| План видов характеристик | `ПВХ_` | ПВХ_Субконто, ПВХ_Субконто_ММ | +| Документ | `Док_` | Док_ПКО | +| Перечисление | `Пер_` | Пер_СтатусСогласования | +| План обмена | `ПО_` | ПО_РИБ, ПО_РИБ_ММ | +| Задача | `Зад_` | Зад_Задача | +| Обработка | `Обр_` | Обр_ЗакрытиеМесяца, Обр_ЗакрытиеМесяца_МО | +| Отчет | `Отч_` | Отч_УниверсальныйОтчет | + +#### Суффиксы типов модулей + +| Тип тестируемого модуля | Суффикс | Пример | +| ----------------------- | -------------- | ------------------------------------------ | +| Общий модуль | `<Без суффикса>` | ОМ_ОбщегоНазначения | +| Модуль объекта | `_МО` | Спр_Пользователи_МО, Обр_ЗакрытиеМесяца_МО | +| Модуль менеджера | `_ММ` | ПВХ_Субконто_ММ, ПО_РИБ_ММ | +| Модуль набора записей | `_НЗ` | РБ_Хозрасчетный_НЗ, РР_Зарплата_НЗ | + +## Тестовые методы + +Тест состоит из двух обязательных частей: + +* Регистрация в методе `ИсполняемыеСценарии` +* Реализация теста. diff --git a/documentation/docs/images/report-ui.png b/documentation/docs/images/report-ui.png index 87842ff29..12d9e46b9 100644 Binary files a/documentation/docs/images/report-ui.png and b/documentation/docs/images/report-ui.png differ diff --git a/documentation/docs/images/ui-run-menu.png b/documentation/docs/images/ui-run-menu.png index 1f1bd4a5c..e08bbd8dc 100644 Binary files a/documentation/docs/images/ui-run-menu.png and b/documentation/docs/images/ui-run-menu.png differ diff --git a/documentation/docs/images/ui-run-tests.png b/documentation/docs/images/ui-run-tests.png index 811e7fb74..6b545fd90 100644 Binary files a/documentation/docs/images/ui-run-tests.png and b/documentation/docs/images/ui-run-tests.png differ diff --git a/documentation/docs/run/images/from-configurator.png b/documentation/docs/run/images/from-configurator.png deleted file mode 100644 index cb83544d2..000000000 Binary files a/documentation/docs/run/images/from-configurator.png and /dev/null differ diff --git a/documentation/docs/run/images/from-edt.png b/documentation/docs/run/images/from-edt.png deleted file mode 100644 index f6a1986c8..000000000 Binary files a/documentation/docs/run/images/from-edt.png and /dev/null differ diff --git a/documentation/docs/run/run.md b/documentation/docs/run/run.md deleted file mode 100644 index 11e44b1b5..000000000 --- a/documentation/docs/run/run.md +++ /dev/null @@ -1,38 +0,0 @@ -# Запуск - -Для запуска тестов необходимо запустить 1С:Предприятие с параметром `RunUnitTests`, при необходимости можно указать путь к файлу [конфигурации запуска](configuration.md). - -:::caution Важно -*После загрузки расширения в информационную базу необходимо отключить у него `безопасный режим` и `защиту от опасных действий`* -::: - -## Запуск из EDT - -Для запуска тестов из EDT необходимо установить [плагин](../install/install-plugin.md), либо вручную создать файл [конфигурации запуска](configuration.md) и указать его в параметрах запуска. - -![EDT](images/from-edt.png) - -## Запуск из конфигуратора - -Для запуска тестов из конфигуратора вы можете - -* Вручную создать файл [конфигурации запуска](configuration.md) и указать его в параметрах запуска - ![Конфигуратор](images/from-configurator.png) -* Воспользоваться [интерфейсом настройки](../yaxunit-ui.md#интерфейс-настройки-конфигурации) - -## Запуск из предприятия - -Для запуска тестов из предприятия необходимо воспользоваться командой [Запуск тестирования](../yaxunit-ui.md#запуск-тестов) - -![Запуск тестов](../images/ui-run-tests.png) - -## Строка запуска предприятия - -`[путь к клиенту 1С] ENTERPRISE [Параметры подключения к ИБ] [Параметры авторизации] /C RunUnitTests=/путь/к/конфигурационному/файлу` - -Для формирования строки запуска можно воспользоваться [интерфейсом настройки](../yaxunit-ui.md#интерфейс-настройки-конфигурации) - -Пример: - -`"C:\Program Files\1cv8\8.3.18.1698\bin\1cv8c.exe" ENTERPRISE /IBName MyInfoBase /N Admin /C RunUnitTests=C:\tmp\test-config.json` - Запуск тестов в режиме тонкого клиента на информационной базе `MyInfoBase` под пользователем `Admin` по конфигурации указанной в файле `C:\tmp\test-config.json` diff --git a/documentation/docs/user-api/assertions/assertions-base.md b/documentation/docs/user-api/assertions/assertions-base.md deleted file mode 100644 index dff8c667d..000000000 --- a/documentation/docs/user-api/assertions/assertions-base.md +++ /dev/null @@ -1,233 +0,0 @@ ---- -tags: [Начало, Утверждения] ---- - -# Базовые утверждения - -Утверждения для проверки значений - -Доступ к утверждениям обеспечивает метод `ЮТест.ОжидаетЧто`, который возвращает инициализированный модуль `ЮТУтверждения`, реализующий работу с утверждениями. - -:::tip -Не рекомендуется обращаться к модулю `ЮТУтверждения` напрямую, используйте `ЮТест.ОжидаетЧто` -::: - -* Реализован минимально необходимый набор проверок -* Большая часть методов - это сравнения фактического и ожидаемого результатов, но есть несколько методов настройки - * `Что` - устанавливает проверяемый объект. Все дальнейшие проверки будут выполняется с этим объектом - * `Метод` - устанавливает имя и параметры проверяемого метода. Для проверки методов имеются утверждения `ВыбрасываетИсключение` и `НеВыбрасываетИсключение` - * `Параметр` - добавляет параметр метода. Создан для удобства установки параметров проверяемого метода - * `Свойство` - устанавливает проверяемое свойство и проверяет его наличие. - * Последующие проверки, вызванные после этого метода, будут относиться к свойству объекта. - Например, `ЮТест.ОжидаетЧто(Контекст).Свойство("ИмяМетода").Равно("МетодБезИсключение")` эквивалентно проверке `Контекст.ИмяМетода = "МетодБезИсключение"` -* Методы работы со свойствами позволяют указывать цепочку свойств (доступ к вложенным свойствам через точку) - Например: - * `Свойство("Контекст.ИмяМетода")` - вложенное свойство - * `ИмеетСвойство("Контекст.ПараметрыМетода[0]")` - элемент вложенной коллекции - * `НеИмеетСвойства("[0].Свойство")` - свойство элемента коллекции -* Все методы имеют параметр `ОписаниеПроверки` для описания конкретной проверки - -## Доступные методы - -:::tip -Полный и актуальный набор методов смотрите в описании API -::: - -### Сравнение значений - -* `Равно` - проверка на равенство конкретному значению. Для сериализуемых объектов идет сравнение по значению -* `НеРавно` - проверка на не равенство конкретному значению. Для сериализуемых объектов идет сравнение по значению -* `Больше` - проверяемое значение должно быть больше указанного -* `БольшеИлиРавно` - проверяемое значение должно быть больше или равно указанному -* `Меньше` - проверяемое значение должно быть меньше указанного -* `МеньшеИлиРавно` - проверяемое значение должно быть меньше или равно указанному -* `ЭтоНеопределено` - проверяемое значение должно быть равно `Неопределено` -* `ЭтоНеНеопределено` - проверяемое значение должно быть не равно `Неопределено` -* `ЭтоNull` - проверяемое значение должно быть равно `Null` -* `ЭтоНеNull` - проверяемое значение должно быть не равно `Null` -* `ЭтоИстина` - проверяемое значение должно быть истиной -* `ЭтоНеИстина` - проверяемое значение не должно быть истиной -* `ЭтоЛожь` - проверяемое значение должно быть ложью -* `ЭтоНеЛожь` - проверяемое значение не должно быть ложью - -### Проверка заполненности - -* `Заполнено` - проверяет заполненность значения -* `НеЗаполнено` - проверяет незаполненность значения -* `Существует` - проверяет существование (не равно `Null` и `Неопределено`) значения -* `НеСуществует` - проверяет не существование (не равно `Null` и `Неопределено`) значения - -### Проверка строк - -* `ИмеетДлину` - проверяет, что строка имеет указанную длину -* `ИмеетДлинуБольше` - проверяет, что длин строки больше указанной -* `ИмеетДлинуМеньше` - проверяет, что длина строки меньше указанной -* `НеИмеетДлину` - проверяет, что длина строки отличается от указанной -* `Содержит` - проверяемая строка содержит указанную подстроку -* `НеСодержит` - проверяемая строка не содержит указанную подстроку -* `НачинаетсяС` - проверяемая строка начинается с указанной строки -* `ЗаканчиваетсяНа` - проверяемая строка заканчивается на указанную строку -* `СодержитСтрокуПоШаблону` - проверяемая строка содержит подстроку, соответствующую регулярному выражению -* `НеСодержитСтрокуПоШаблону` - проверяемая строка не содержит подстроку, соответствующую регулярному выражению - -### Проверка вхождения значения в интервал - -* `МеждуВключаяГраницы` - проверяемое значение находиться в указанному интервале (включая границы) -* `МеждуИсключаяГраницы` - проверяемое значение находиться в указанному интервале (исключая границы) -* `МеждуВключаяНачалоГраницы` - проверяемое значение находиться в указанному интервале (включая левую границу и исключая правую) -* `МеждуВключаяОкончаниеГраницы` - проверяемое значение находиться в указанному интервале (исключая левую границу и включая правую) - -### Проверка типа значения - -* `ИмеетТип` - проверяемое значение должно иметь указанный тип -* `НеИмеетТип` - тип проверяемого значения должен отличаться от указанного - -### Проверка выполнения метода - -* `ВыбрасываетИсключение` - проверят, что указанный метод объекта выбрасывает исключение -* `НеВыбрасываетИсключение` - проверят, что указанный метод объекта не выбрасывает исключение - -### Проверка наличия свойств/реквизитов - -* `ИмеетСвойство` - проверяемый объект должен содержать указанное свойство -* `НеИмеетСвойства` - проверяемый объект не содержит указанное свойство -* `ИмеетСвойстваРавные` - проверяемый объект должен содержать указанный набор свойств/реквизитов и значений - -### Проверка коллекции - -* `ИмеетДлину` - проверяет, что коллекция имеет указанный размер -* `ИмеетДлинуБольше` - проверяет, что коллекция имеет размер, который больше указанного -* `ИмеетДлинуМеньше` - проверяет, что коллекция имеет размер, который меньше указанного -* `НеИмеетДлину` - проверяет, что размер коллекции отличается от указанного -* `Содержит` - проверяемая коллекция должна содержать указанный элемент -* `НеСодержит` - проверяемая коллекция не должна содержать указанный элемент -* `КаждыйЭлементСодержитСвойство` - проверяет, что каждый элемент коллекции имеет указанное свойство -* `КаждыйЭлементСодержитСвойствоСоЗначением` - проверяет, что каждый элемент коллекции имеет указанное свойство, которое равно ожидаемому значению -* `ЛюбойЭлементСодержитСвойство` - проверяет, что в коллекции есть элемент содержащий указанное свойство -* `ЛюбойЭлементСодержитСвойствоСоЗначением` - проверяет, что в коллекции есть элемент содержащий указанное свойство, которое равно ожидаемому значению -* `КаждыйЭлементСоответствуетПредикату` - проверяет, что элементы коллекции соответствуют переданным условиям -* `ЛюбойЭлементСоответствуетПредикату` - проверяет, что коллекция содержит элемент, который соответствует переданным условиям - -### Проверка на соответствие набору условий, предикату - -* `СоответствуетПредикату` - проверяет, что объект или его свойство соответствует набору условий -* `КаждыйЭлементСоответствуетПредикату` - проверяет, что элементы коллекции соответствуют переданным условиям -* `ЛюбойЭлементСоответствуетПредикату` - проверяет, что коллекция содержит элемент, который соответствует переданным условиям -* `Содержит` - проверяемая коллекция должна содержать элемент, который соответствует переданным условиям -* `НеСодержит` - проверяемая коллекция не должна содержать элемент, который соответствует переданным условиям - -### Проверка методов объекта - -Для проверки работы методов объекта есть набор утверждений среди описанных выше (`ВыбрасываетИсключение` и `НеВыбрасываетИсключение`), но для их работы необходимо выполнить предварительные настройки. -Нужно указать какой методы объекта мы хотим проверить и с какими параметрами, для этого имеются следующие методы api - -* `Метод` - устанавливает имя и параметры проверяемого метода -* `Параметр` - добавляет параметр метода. Создан для удобства установки параметров проверяемого метода - -### Методы позиционирования - -В дополнении к указанным методам утверждений есть возможность применить их к вложенным свойствам. Например, проверить, наличие заполненной табличной части документа используя выражение `ОжидаетЧто(Документ).Свойство("Товары").Заполнено()`. -Используя методы `Свойство` и `Элемент` можно позиционировать утверждения на вложенный реквизит/элемент. - -* `Свойство` - проверяет наличие свойства и позиционирует дальнейшие проверки на указанном свойстве -* `Элемент` - проверяет наличие элемента коллекции и позиционирует дальнейшие проверки на указанном элементе -* `Объект` - позиционирует дальнейшие проверки на объекте, указанном в методе `Что` -* `НетСвойства` - проверяет отсутствие свойства и позиционирует дальнейшие проверки на объекте, указанном в методе `Что` - -## Примеры - -### Базовые проверки - -```bsl -ЮТест.ОжидаетЧто(2 + 3, "2 + 3") // Используя модуль утверждений установим проверяемое значение и пояснение - .ИмеетТип("Число") // Проверим тип - .Заполнено() // Заполненность проверяемого значения - .Больше(0) // Сравним с нулем - .Равно(5); // Проверим ожидаемый результат -``` - -### Проверка сложного объекта - -```bsl -Объект = ЮТОбщий.ЗначениеВМассиве("1", "2", "3"); -ЮТУтверждения.Что(Объект, "Проверка элементов массива") - .Содержит("1") - .НеСодержит(1) - .Элемент(0).Равно("1") - .Элемент(1).Равно("2") - .Элемент(-1).Равно("3") - .Свойство("[00]").Равно("1") - .Свойство("[1]").Равно("2") - .Свойство("[-1]").Равно("3") - .НетСвойства(3) - .НеИмеетСвойства("[3]"); - -Объект.Добавить(Новый Структура("Первый, Второй", 1, ЮТОбщий.ЗначениеВМассиве(2))); -ЮТУтверждения.Что(Объект, "Проверка свойства элемента массива") - .Свойство("[3].Первый").Равно(1) - .Свойство("[3].Второй[-1]").Равно(2) - .Свойство("[3].Второй[0]").Равно(2) -``` - -### Проверка вызова метода - -```bsl -ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодБезИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) - .НеВыбрасываетИсключение() - .НеВыбрасываетИсключение("Ожидаемое исключение"); -ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение", 2)) - .ВыбрасываетИсключение("Слишком много фактических параметров"); -ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) - .ВыбрасываетИсключение("Исключение"); -ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодБезИсключение") - .ВыбрасываетИсключение("Недостаточно фактических параметров"); -``` - -### Проверка соответствия предикату - -```bsl -Дата = ЮТест.Данные().СлучайнаяДата(); - -Объект = Новый Структура; -Объект.Вставить("Число", 1); -Объект.Вставить("Строка", "1"); -Объект.Вставить("Дата", Дата); -Объект.Вставить("Массив", ЮТОбщий.ЗначениеВМассиве(1, "1")); - -ПроверкаЧисла = ЮТест.Предикат().Реквизит("Число") - .ИмеетТип(Тип("Число")) - .БольшеИлиРавно(1) - .МеньшеИлиРавно(10) - .Получить(); -ПроверкаДаты = ЮТест.Предикат().Реквизит("Дата") - .ИмеетТип(Новый ОписаниеТипов("Дата")) - .Равно(Дата) - .Получить(); - -ЮТест.ОжидаетЧто(Объект) - .СоответствуетПредикату(ЮТест.Предикат() - .Заполнено() - .ИмеетТип("Структура")) - .СоответствуетПредикату(ПроверкаЧисла) - .СоответствуетПредикату(ПроверкаДаты) -; -``` - -### Проверка элементов коллекции на соответствие предикату - -```bsl -ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C1:R5C11", ОписанияТипов); -Ютест.ОжидаетЧто(ТаблицаРезультатов) - .ИмеетТип("Массив") - .ИмеетДлину(3) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Товар").Заполнено().ИмеетТип("СправочникСсылка.Товары") - .Реквизит("Период").Заполнено().ИмеетТип("Дата") - .Реквизит("Количество").Заполнено().ИмеетТип("Число") - .Реквизит("Цена").Заполнено().ИмеетТип("Число") - ) -``` diff --git a/documentation/docs/user-api/assertions/assertions-db.md b/documentation/docs/user-api/assertions/assertions-db.md deleted file mode 100644 index 290dda00f..000000000 --- a/documentation/docs/user-api/assertions/assertions-db.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -tags: [Начало, Утверждения, ДанныеИБ] ---- - -# Утверждения для проверки данных информационной базы - -Большая часть тестируемых методов так или иначе оставляет свой след в базе, создает или изменяет записи в ИБ. - -Для проверки правильности работы метода нам необходимо проверить, что изменилось в базе. В этом могут помочь утверждения проверяющие записи ИБ. - -Доступ к утверждениям обеспечивает метод `ЮТест.ОжидаетЧтоТаблицаБазы`, который возвращает инициализированный модуль `ЮТУтвержденияИБ`, реализующий работу с утверждениями для ИБ. - -Утверждения позволяют проверить наличие и отсутствие записей по различным условиям, для задания условий используются [предикаты](../predicates.md) - -```bsl - ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары") - .НеСодержитЗаписи(); // В базе нет товаров - ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары") - .СодержитЗаписи(); // В базе есть товары - ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары") - .СодержитЗаписи(ЮТест.Предикат() // В базе есть товары определенного поставщика - .Реквизит("Поставщик").Равно(ДанныеСправочника.Поставщик)); - ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют") - .НеСодержитЗаписи(ЮТест.Предикат() // Курс валюты не установлен - .Реквизит("Валюта").Равно(ДанныеРегистра.Валюта) - .Реквизит("Период").БольшеИлиРавно(ДанныеРегистра.Период)); -``` - -## Доступные методы - -* `СодержитЗаписи` - проверяет наличие записей по условиям -* `НеСодержитЗаписи` - проверяет отсутствие записей по условиям -* `СодержитЗаписиСНаименованием` - проверяет наличие в таблице записей с указанным наименованием -* `СодержитЗаписиСКодом` - проверяет наличие в таблице записей с указанным кодом -* `СодержитЗаписиСНомером` - проверяет наличие в таблице записей с указанным номером -* `НеСодержитЗаписиСНаименованием` - проверяет отсутствие в таблице записей с указанным наименованием -* `НеСодержитЗаписиСКодом` - проверяет отсутствие в таблице записей с указанным кодом -* `НеСодержитЗаписиСНомером` - проверяет отсутствие в таблице записей с указанным номером - -:::tip - -[Предлагайте](https://github.com/bia-technologies/yaxunit/issues) и [добавляйте](https://github.com/bia-technologies/yaxunit/pulls) свои утверждения - -::: \ No newline at end of file diff --git a/documentation/docs/user-api/assertions/assertions.md b/documentation/docs/user-api/assertions/assertions.md deleted file mode 100644 index 78cbca29c..000000000 --- a/documentation/docs/user-api/assertions/assertions.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -tags: [Начало, Утверждения] ---- - -# Утверждения - -Каждый тестовый сценарий должен проверить результат работы тестируемого метода, будь то функция или процедура. - -Для написания таких проверок реализован механизм утверждений, позволяющий в лаконичной форме описать свои ожидания, требования к результату. - - -Как и большая часть API, утверждения реализованы по модели [текучих выражений](https://ru.wikipedia.org/wiki/Fluent_interface), с целью повышения удобства и читаемости тестов - - ```bsl - ЮТест.ОжидаетЧто(Контекст) - .ИмеетТип("Структура") - .Свойство("ПрефиксОшибки").Равно("Контекст метода с параметрами") - .Свойство("ИмяМетода").Заполнено().Равно("МетодБезИсключение") - .Свойство("ПараметрыМетода").ИмеетТип("Массив").ИмеетДлину(1); - ``` - -YaxUnit содержит утверждения для: - -* Проверки [значений](assertions-base.md#доступные-методы) -* Проверки [методов объекта на выброс исключений](assertions-base.md#проверка-методов-объекта) -* Проверки [данных информационной базы](assertions-db.md) \ No newline at end of file diff --git a/documentation/docs/user-api/context.md b/documentation/docs/user-api/context.md deleted file mode 100644 index 46a2e8a09..000000000 --- a/documentation/docs/user-api/context.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -tags: [Начало, Контекст] ---- - -# Контекст - -## Механизм контекстов - -Одним из важнейших блоков работы тестового движка является механизм контекстов. - -Он позволяет: - -1. Хранить промежуточные данные и обеспечивать работу механизма текучих выражений. -2. Передавать между тестами необходимые данные. -3. Удалять тестовые данные. - -И имеет несколько ограничений: - -1. Не синхронизируется между клиентом и сервером. -2. Тестовые контексты имеют ограниченное время жизни. Например, контекст теста "живет" только в рамках теста и событиях "ПередКаждымТестом", "ПослеКаждогоТеста". - -Для различных механизмов движка существуют различные контексты, такие как контекст утверждений, контекст теста и тд. - -## Контексты тестового модуля - -Разработчику тестов будут интересны следующие контексты: - -* Контекст теста (`ЮТест.КонтекстТеста`) - живет в рамках одного теста. Доступен в каждом тесте и в обработчиках событий - * `ПередКаждымТестом` - * `ПослеКаждогоТеста` -* Контекст тестового набора (`ЮТест.КонтекстТестовогоНабора`) - живет в рамках набора тестов. Доступен в каждом тесте набора и в обработчиках событий - * `ПередТестовымНабором` - * `ПослеТестовогоНабора` - * `ПередКаждымТестом` - * `ПослеКаждогоТеста` -* Контекст тестового модуля (`ЮТест.КонтекстМодуля`) - живет в рамках тестового модуля. Доступен в каждом тесте модуля и в обработчиках событий - * `ПередВсемиТестами` - * `ПослеВсехТестов` - * `ПередТестовымНабором` - * `ПослеТестовогоНабора` - * `ПередКаждымТестом` - * `ПослеКаждогоТеста` - -На каждом уровне исполнения есть возможность переопределить обработчики событий соответствующего контекста исполнения при помощи методов `Перед()` и `После()`. Настроенный обработчик события будет вызван _вместо_ основного. Пример: -```bsl -ЮТТесты - .ДобавитьТестовыйНабор("Набор1") // Будет вызван основной обработчик ПередТестовымНабором() - .ДобавитьТест("Тест1") - .ДобавитьТестовыйНабор("Набор2").Перед("Перед_Набор2") // Будет вызван обработчик Перед_Набор2() - .ДобавитьТест("Тест2"); - -``` diff --git a/documentation/docs/user-api/index.md b/documentation/docs/user-api/index.md deleted file mode 100644 index 6e7112fa1..000000000 --- a/documentation/docs/user-api/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -tags: [Начало] ---- - -# Пользовательский API - -Для разработчиков тестов расширение предоставляет API: - -* [Регистрации тестовых сценариев](test-registration.md) -* Формирования [утверждений](assertions/assertions.md) для проверки результата работы различных механизмов системы. -* Создания [тестовых данных](test-data/test-data.md) -* Сохранения состояния и обмена данными между тестами используя [контекст](context.md) -* [Подмены](mockito.md) алгоритмов работы системы -* [Предикаты](predicates.md), которые используются во многих механизмах движка -* Методы [получения данных](queries.md) информационной базы -* [Интерфейс](yaxunit-ui.md) для просмотра отчета и настройки параметров запуска тестов - -Доступ к API осуществляется через методы модуля `ЮТест`, например - -* `ЮТест.Данные()` для доступа к методам работы с тестовыми данными -* `ЮТест.ОжидаетЧто()` для доступа к утверждения - -:::tip -Не рекомендуется обращаться к модулям API напрямую, используйте `ЮТест` -::: diff --git a/documentation/docs/user-api/mockito.md b/documentation/docs/user-api/mockito.md deleted file mode 100644 index 95d3e2eb3..000000000 --- a/documentation/docs/user-api/mockito.md +++ /dev/null @@ -1,285 +0,0 @@ ---- -tags: [Начало, Мокирование] ---- - -# Мокито - -Мокито - модуль созданный по образу популярного java-фреймворка для тестирования [Mockito](https://site.mockito.org/). Расширяет возможности тестирования, позволяет легко менять логику работы системы подменяя результаты работы методов, отключая какие-либо алгоритмы и проверки. - -Юнит-тесты, это тесты конкретных методов в отрыве от системы - контролировать данные используемые методом, изменение логики и ошибки других объектов не должны аффектить на тест. -В реальных конфигурациях объекты тесно связаны друг с другом, поэтому добиться контроля влияющих данных очень сложно. Обычно приходится создавать большой объем тестовых данных. А добиться изоляции от изменения логики других объектов почти невозможно. Мокирование же позволяет изменить логику работы системы таким образом, чтобы тестируемый метод не вызывал другие методы и использовал уже подготовленные данные. Например, для тестирования проведения реализации товаров мы можем подменить результат функции формирующей таблицу проводок и избежать сложной подготовки данных. - -С помощью Мокито разработчик указывает, что делать при вызове определенных методов - вернуть нужный результат, вызвать исключение или просто не трогать ненужные методы. После тестирования разработчик может запросить и проверить статистику о вызовах, как и какие методы были вызваны. - -Пример: - -```bsl -ОтветСерверы = ОтветУспешногоЗапроса("Серверы"); -ОтветДиски = ОтветУспешногоЗапроса("Диски"); - -Мокито.Обучение(РаботаСHTTP) - .Когда(РаботаСHTTP.ВыполнитьЗапрос(ПараметрыПодключения, "/hosts", "GET")) - .Вернуть(ОтветСерверы) - .Когда(РаботаСHTTP.ВыполнитьЗапрос(ПараметрыПодключения, "/disks", "GET")) - .Вернуть(ОтветДиски) - .Прогон(); - -Результат = БиллингДрайверГипервизорNutanix.Серверы(ПараметрыПодключения); -``` - -В этом примере изменяется работа модуля `РаботаСHTTP`, для функции `ВыполнитьЗапрос`, вызванной с нужными параметрами будет возвращено подготовленное значение, а сам метод не будет вызван. -Мы получим ожидаемые ответы на запросы к сторонней системе и уйдет от проблем связанных с ней - недоступность, изменение контрактов и т.д. - -Работа с Мокито делится на 3 стадии: - -```mermaid -flowchart LR - training(Обучение) --> run(Прогон, запуск тестового метода) - run --> check(Проверка) -``` - -* [Обучение](#обучение) - настраиваем поведение методов системы -* [Прогон](#прогон) - выполнение теста целевого метода -* [Проверка](#проверка) - анализ вызовов - -## Использование - -### Настройка мокируемых методов - -Для работы Мокито вам необходимо добавить интересующие методы в тестовое расширение. - -Эта позволит управлять поведением метода: - -* подменять результат во время выполнения теста -* использовать явный вызов метода с параметрами на стадии обучения, например `Мокито.Обучение(Справочники.ИсточникиДанных).Когда(Справочники.ИсточникиДанных.СохраненныеБезопасныеДанные(Справочник)).Вернуть(Результат)` -* использовать явный вызов метода с параметрами на стадии проверки, например `Мокито.Проверить(Справочники.ИсточникиДанных).КоличествоВызовов(Справочники.ИсточникиДанных.СохраненныеБезопасныеДанные(Справочник)).Больше(1)` - -Примеры добавления методов в расширение. - -#### Метод общего модуля - -Добавляем обработку метода `ИнициализироватьВнешнююКомпоненту` общего модуля `ОбщегоНазначенияКлиентСервер` - -```bsl -&Вместо("ИнициализироватьВнешнююКомпоненту") -Функция ЮТИнициализироватьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ВызыватьИсключение, ПаузаЧерезКомпоненту) Экспорт - // Собираем параметры в массив - ПараметрыМетода = Мокито.МассивПараметров(ИмяМакета, ИмяКомпоненты, ВызыватьИсключение, ПаузаЧерезКомпоненту); - - // Отправляем данные на анализ - ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(ОбщегоНазначенияКлиентСервер, "ИнициализироватьВнешнююКомпоненту", ПараметрыМетода, ПрерватьВыполнение); - - // Обрабатываем результат анализа - Если НЕ ПрерватьВыполнение Тогда - Возврат ПродолжитьВызов(ИмяМакета, ИмяКомпоненты, ВызыватьИсключение, ПаузаЧерезКомпоненту); - Иначе - Возврат Результат; - КонецЕсли; -КонецФункции -``` - -#### Метод модуля менеджера - -Добавляем обработку метода `СохраненныеБезопасныеДанные` модуля менеджера справочника `Справочники.ИсточникиДанных` - -```bsl -&Вместо("СохраненныеБезопасныеДанные") -Функция ЮТСохраненныеБезопасныеДанные(Владелец, Знач Ключи) Экспорт - - // Собираем параметры в массив - ПараметрыМетода = Мокито.МассивПараметров(Владелец, Ключи); - - // Отправляем данные на анализ - ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(Справочники.ИсточникиДанных, "СохраненныеБезопасныеДанные", ПараметрыМетода, ПрерватьВыполнение); - - // Обрабатываем результат анализа - Если НЕ ПрерватьВыполнение Тогда - Возврат ПродолжитьВызов(Владелец, Ключи); - Иначе - Возврат Результат; - КонецЕсли; - -КонецФункции -``` - -#### Метод модуля объекта - -Добавляем обработку приватного метода `ПеренестиДанныеВБезопасноеХранилище` модуля объекта справочника `Справочники.ИсточникиДанных` - -```bsl -&Вместо("ПеренестиДанныеВБезопасноеХранилище") -Функция ЮТПеренестиДанныеВБезопасноеХранилище(Ключи) - - // Собираем параметры в массив - ПараметрыМетода = Мокито.МассивПараметров(Ключи); - - // Отправляем данные на анализ - ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(ЭтотОбъект, "ПеренестиДанныеВБезопасноеХранилище", ПараметрыМетода, ПрерватьВыполнение); - - // Обрабатываем результат анализа - Если НЕ ПрерватьВыполнение Тогда - Возврат ПродолжитьВызов(Ключи); - Иначе - Возврат Результат; - КонецЕсли; - -КонецФункции -``` - -### Обучение - -Самая первая стадия при написании тестов использующих моки - обучение. -Мы создаем правила как будет вести себя метод при различных вариантах вызова. -Правило состоит из условий проверки параметров и действия выполняемого при соблюдении условий. - -Условия можно задать на равенство определенному значению, на проверку типа переданного значения или же безусловно принимать любый параметры - -Существует 2 основных подхода к формированию условий вызова: - -1. Явный вызов метода с параметрами: `Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные)).Вернуть(2)` -2. Указание имени метода и набора параметров: `Обучение(РаботаСHTTP).Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(ИсточникДанных, Данные)).Вернуть(2)` - -Первый вариант имеет ряд недостатков: - -1. Работает только для экспортных методов -2. Необходимо передавать все обязательные параметры или использовать для них маску `Мокито.ЛюбойПараметр()` -3. Если не указывать необязательные параметры, то их значения по умолчанию попадут в настройку. Покажу на примере. - Имеется метод `Функция Метод(Параметр1, Параметр2, Параметр3 = 3)` - - Настройка `Когда(Метод(1, 2)).Вернуть(0)`, в результате ноль мы получим для вызовов - - * `Метод(1, 2)` - * `Метод(1, 2, 3)` - - Для вызова `Метод(1, 2, 4)` будет выполнен основной алгоритм метода. - - А для настройки `Когда("Метод", Мокито.МассивПараметров(1, 2)).Вернуть(0)` все три варианта вызова вернут ноль. - -После того как определились с условием вызова указанным в методе `Когда` нужно указать реакцию. Возможные реакции: - -* `Вернуть` - вернуть указанное значение -* `ВыброситьИсключение` - вызвать исключение с переданным текстом -* `Пропустить` - пропустить выполнение метод (актуально для процедур) - -#### Примеры формирования различных вариантов условий - -Имеется метод: - -```bsl -Функция ОтправитьОбъектНаСервер(ИсточникДанных, Объект, HTTPМетод = "POST", - ТипКонтента = "json", Преобразование = Неопределено, - ДопНастройки = Неопределено, Ответ = Неопределено, ОтветВСтруктуру = Ложь, - ТелоОтветаВХранилище = Ложь) Экспорт -``` - -* Переопределить все вызовы метода - указываем имя метода без указания параметров - `Мокито.Обучение(РаботаСHTTP).Когда("ОтправитьОбъектНаСервер").Вернуть(1)` -* Переопределить вызов, когда первый параметр имеет определенное значение - 1. `Мокито.Обучение(РаботаСHTTP).Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(ИсточникДанных)).Вернуть(2)` - 2. `Мокито.Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Мокито.ЛюбойПараметр()).Вернуть(2)`. Тут используется маска `Мокито.ЛюбойПараметр()`, тк второй параметр является обязательным -* Переопределить вызов, когда **второй** параметр имеет определенное значение - 1. `Мокито.Обучение(РаботаСHTTP).Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ЛюбойПараметр(), Объект)).Вернуть(2)` - 2. `Мокито.Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ЛюбойПараметр(), Объект).Вернуть(2)`. -* Условие на тип параметра - 1. `Мокито.Обучение(РаботаСHTTP).Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ТипизированныйПараметр(ТипИсточникДанных), Мокито.ЧисловойПараметр())).Вернуть(3)` - 2. `Мокито.Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ТипизированныйПараметр(ТипИсточникДанных), Мокито.ЧисловойПараметр()).Вернуть(3)` - -### Прогон - -После обучения, настройки реакций на вызовы методов, можно запускать тест нужного метода. Для перехода к этому режиму работы Мокито используется метод `Прогон`. - -Все вызовы к настроенным методам (добавленным в расширение) будут перехватываться и анализироваться на совпадение условий вызова. -Для вызовов, у которых есть подходящая "реакция" будет переопределено выполнение и запустится соответствующая реакция (вернуть значение, вызвать исключение и тд), для прочих - выполнение продолжится. - -```bsl -// Настройка -Мокито.Обучение(РаботаСHTTP) - .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ЛюбойПараметр(), Мокито.ЛюбойПараметр())) - .Вернуть(РезультатПоУмолчанию) - .Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Справочники.ИсточникиДанных.FTP, 2)) - .Вернуть(2) - .Прогон(); // Перевод в режим прогона теста - -Результат = РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные); // Результат будет равен переменной РезультатПоУмолчанию -Результат = РаботаСHTTP.ОтправитьОбъектНаСервер(Справочники.ИсточникиДанных.FTP, 2); // Результат будет равен 2 -``` - -### Проверка - -После прогона теста можно проверить какие методы, с какими параметрами вызывались. Для этих целей необходимо воспользоваться методом `Проверить` - -```bsl -Мокито.Проверить(РаботаСHTTP) // Устанавливаем проверяемый объект - .КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(ЛюбойПараметр, Мокито.ЧисловойПараметр())) // Условия поиска вызовов - .Больше(1) // Проверки - .Равно(2) - .КоличествоВызовов("ОтправитьОбъектНаСервер").Заполнено().Равно(3).Меньше(6) - .КоличествоВызовов("ОтправитьЗапросHTTP").Пусто().Меньше(1) - .КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(1, 2)).Равно(1) - .КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(ЛюбойПараметр, ЛюбойПараметр)).Равно(3) - .КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ТипизированныйПараметр(ТипИсточникДанных), ЛюбойПараметр)).Равно(1) -``` - -Принцип формирования проверки: - -* Указываем проверяемый объект `Проверить(РаботаСHTTP)`. -* Указываем условия поиска вызовов метода. Логика формирования условия такая же как при обучении. - Например, `КоличествоВызовов(РаботаСHTTP.ОтправитьОбъектНаСервер(ЛюбойПараметр, Мокито.ЧисловойПараметр()))` - Соберет все вызовы метода `РаботаСHTTP.ОтправитьОбъектНаСервер`, к которых вторым параметром идет число, а 3й и последующий параметры имеют значения по умолчанию. -* Проверяем собранные вызовы: - * `Заполнено` - есть вызовы метода по указанным условиям - * `Пусто` - нет вызовов метода по указанным условиям - * `Равно` - количество вызовов попавших под условия равно указанному значению - * `Больше` - количество вызовов попавших под условия больше указанного значения - * `Меньше` - количество вызовов попавших под условия меньше указанного значения - -### Ограничения параметров - -При обучении (а также при проверке) не редко мы не может указать конкретные значения, которые придут в метод. для этих целей имеются. - -* Маски параметров - * `ЛюбойПараметр` - ожидаем любой параметр - * `ЧисловойПараметр` - ожидаем только числовой параметр - * `СтроковыйПараметр` - ожидаем только строковый параметр - * `ТипизированныйПараметр` - ожидаем параметр указанного типа -* [Предикаты](predicates.md) позволяющие сформировать почти любые условия на параметры - -Примеры - -* `Когда(Метод(1, 2))` -* `Когда(Метод(Мокито.ЧисловойПараметр(), 2))` -* `Когда(Метод(ЮТест.Предикат().Больше(0), 2))` - - -## Кейсы использования\* - -\* *В примерах опускается часть добавления метода в расширение* - -1. Подмена результат функции для любого вызова - - ```bsl - Мокито.Обучение(РаботаСHTTP) - .Когда("ОтправитьОбъектНаСервер") - .Вернуть(1) - ``` - -2. Выключение алгоритма проведения документа - - ```bsl - Мокито.Обучение(СсылкаИлиОбъектДокумент) - .Когда("ОбработкаПроведения") - .Пропустить() - ``` - -3. Выбросить исключение, если в метод передан некорректный набор параметров - - ```bsl - Мокито.Обучение(РаботаСHTTP) - .Когда("ОтправитьОбъектНаСервер") - .ВыброситьИсключение("Не верные параметры вызова") - .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Справочники.ИсточникиДанных.FTP, Мокито.ЛюбойПараметр())) - .ВыполнитьМетод(); - ``` diff --git a/documentation/docs/user-api/predicates.md b/documentation/docs/user-api/predicates.md deleted file mode 100644 index 1f11dd002..000000000 --- a/documentation/docs/user-api/predicates.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -tags: [Начало, Предикаты, Утверждения, Запросы, Мокирование] ---- - -# Предикаты - -Предикаты это утверждения, которые вы можете передавать в качестве параметров. -Они расширяют и унифицируют функциональность тестового движка. - -```bsl -Процедура АктуализацияУведомлений() Экспорт - - ИмяРегистра = "РегистрСведений.ОповещенияПользователя"; - Объект = ТестовыеДанные.Объект(); - - УсловиеУведомления = ЮТест.Предикат() - .Реквизит("Источник").Равно(Объект) - .Реквизит("ТипОповещения").Равно(Справочники.ТипыОповещенийПользователя.Уведомление1) - .Получить(); - - ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра) - .НеСодержитЗаписи(УсловиеУведомления); - - УведомленияВызовСервера.АктуализацияУведомлений(); - - ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра) - .СодержитЗаписи(УсловиеУведомления); - - ДанныеУведомления = ЮТЗапросы.Запись(ИмяРегистра, УсловиеУведомления); - - ЮТест.ОжидаетЧто(ДанныеУведомления) - .Свойство("Прочитано").ЭтоЛожь() - .Свойство("Пользователь").Равно(Справочники.ГруппыОповещенийПользователей.Инженер); - -КонецПроцедуры -``` - -Механизм предикатов: - -* позволяет формировать наборы утверждений и передавать их в качества параметров; -* используется для проверки коллекций, записей базы и так далее; -* построен по модели текучих выражения и имеет схожий с базовыми утверждениями синтаксис (`ЮТест.ОжидаетЧто()`); - -## Примеры использования - -* Проверка коллекции - - ```bsl - ЮТест.ОжидаетЧто(Коллекция) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Число").Равно(2)); // Проверят, что в коллекции есть элементы с реквизитом `Число`, которое равно `2` - - ЮТест.ОжидаетЧто(Коллекция) - .Содержит(ЮТест.Предикат() - .Реквизит("Число").Равно(2)); // Тоже самое, что и проверка выше - - ЮТест.ОжидаетЧто(Коллекция) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Заполнено().ИмеетТип("Массив")); // Проверят, что каждый элемент коллекции это заполненный массив - - ЮТест.ОжидаетЧто(Коллекция) - .НеСодержит(ЮТест.Предикат() - .Реквизит("Число").Равно(2)); // Проверят, что в коллекции нет элементов с реквизитом `Число`, которое равно `2` - - ``` - -* Описания параметров метода при мокировании - - Например, имеем метод, который принимает в параметрах структуру. Необходимо вернуть 2 разных результата в зависимости от значения реквизита входной структуры. - - ```bsl - Мокито.Обучение(Модуль) - .Когда(Модуль.Посчитать(ЮТест.Предикат() - .Реквизит("Оператор").Равно("Сложить"))) - .ВернутьРезультат(Результат1) - - .Когда(Модуль.Посчитать(ЮТест.Предикат() - .Реквизит("Оператор").Равно("Вычесть"))) - .ВернутьРезультат(Результат2); - ``` - -* Утверждения, проверяющие данные в базе на основании предикатов. - - ```bsl - ЮТест.ОжидаетЧтоТаблица("Справочник.Товары").СодержитЗаписи( - ЮТест.Предикат() - .Реквизит("Наименование").Равно("Товар 1") - .Реквизит("Ссылка").НеРавно(Исключение) - ); - ``` - -* Получение записей из базы - - ```bsl - ДанныеТовара = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат() - .Реквизит("Наименование").Равно("Товар 1") - .Реквизит("Ссылка").НеРавно(Исключение)); - ``` - -## Особенности - -### Особенности контекста - -Предикаты как и большинство механизмов построены на текучих выражениях с сохранением состояния в глобальном контексте. - -Это приводит к тому, что вы не можете сразу использовать несколько предикатов, например - -```bsl -Мокито.Обучение(Модуль) - .Когда(Модуль.СделатьЧтоТо( - ЮТест.Предикат().ИмеетТип("Строка"), - ЮТест.Предикат().ИмеетТип("Число"))) - .ВернутьРезультат(Результат1); -``` - -В этом примере 1С сначала вычислит выражения для всех параметров, а потом передаст их в метод и мы получим для обоих параметров один и тот же предикат, ожидающий тип `Число`. -Потому что состояние первого предиката будет заменено вторым. Для обхода этой проблемы можно использовать метод `Получить`, который возвращает текущее состояние. - -```bsl -Мокито.Обучение(Модуль) - .Когда(Модуль.СделатьЧтоТо( - ЮТест.Предикат().ИмеетТип("Строка").Получить(), - ЮТест.Предикат().ИмеетТип("Число"))) - .ВернутьРезультат(Результат1); -``` - -Такая же история при сохранение предикатов в переменные. - -```bsl -ПроверкаСтрока = ЮТест.Предикат().ИмеетТип("Строка"); -ПроверкаЧисло = ЮТест.Предикат().ИмеетТип("Число"); -``` - -`ПроверкаСтрока` и `ПроверкаЧисло` будут равны и содержать одинаковые условия. Проблему также можно обойти используя метод `Получить`. - -```bsl -ПроверкаСтрока = ЮТест.Предикат().ИмеетТип("Строка").Получить(); -ПроверкаЧисло = ЮТест.Предикат().ИмеетТип("Число").Получить(); -``` - -### Особенности реализации - -Сам модуль предикатов используется только для формирования утверждений/условий. - -Реализацией проверок и формированием условий занимаются другие модули и возможна ситуация, когда некоторые предикаты еще не реализованы или не поддерживаются каким-либо механизмом. Например, проверка заполненности не поддерживается запросами. diff --git a/documentation/docs/user-api/queries.md b/documentation/docs/user-api/queries.md deleted file mode 100644 index c8330ed7d..000000000 --- a/documentation/docs/user-api/queries.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -tags: [Начало, ДанныеИБ] ---- - -# Запросы - -Для получения данных базы предоставлен API выполнения запросов `ЮТЗапросы` - -Позволяет как с сервера, так и с клиента получать данные информационной базы и имеет следующие методы - -* `ЗначенияРеквизитов` - Возвращает значения реквизитов ссылки -* `ЗначениеРеквизита` - Возвращает значение реквизита ссылки -* `Запись` - Возвращает первую запись таблицы, соответствующую условиям -* `Записи` - Возвращает записи таблицы, соответствующую условиям -* `ЗначенияРеквизитовЗаписи` - Возвращает значения реквизитов первой записи таблицы, соответствующей условиям -* `ЗначениеРеквизитаЗаписи` - Возвращает значение реквизита первой записи таблицы, соответствующей условиям -* `ТаблицаСодержитЗаписи` - Вернет признак, содержит ли таблица записи, удовлетворяющие переданным условиям -* `РезультатЗапроса` - Возвращает результат выполнения простого запроса, используя описание запроса -* `РезультатПустой` - Определяет, есть ли в результате записи, используя описание запроса -* `ОписаниеЗапроса` - Формирует описание простого запроса diff --git a/documentation/docs/user-api/test-data/test-data-deletion.md b/documentation/docs/user-api/test-data/test-data-deletion.md deleted file mode 100644 index 905a076ad..000000000 --- a/documentation/docs/user-api/test-data/test-data-deletion.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -tags: [Начало, Тестовые данные] ---- - -# Удаление тестовых данных - -При использовании тестовых данных нередко необходимо удалять созданные объекты. - -Для этого вы можете использовать - -## Автоматические транзакции - -Для включения нужно при регистрации теста вызвать метод `ВТранзакции()` - -```bsl title=ВТранзакции.bsl -ЮТТесты - .ДобавитьТест("Фикция").ВТранзакции() // Использование транзакции для конкретного теста - -ЮТТесты - .ДобавитьТестовыйНабор("Основной).ВТранзакции() // Использование транзакции для набора тестов - .ДобавитьТест("Фикция") - -ЮТТесты.ВТранзакции() // Использование транзакции для тестов модуля - .ДобавитьТест("Фикция") - -``` - -И тогда тестовый движок будет оборачивать в транзакцию каждый серверный тест (для клиентских будет игнорироваться) - -:::caution Учитывайте -В транзакцию оборачивается тест, а не модуль или набор, поэтому данные созданные вне теста не будут удалены. -Такие данные необходимо удалять самостоятельно при необходимости. -::: - -## Механизм удаления тестовых данных - -Для включения нужно при регистрации теста вызвать метод `УдалениеТестовыхДанных()` - -```bsl title=УдалениеТестовыхДанных.bsl -ЮТТесты - .ДобавитьТест("Фикция").УдалениеТестовыхДанных() // Использование для конкретного теста - -ЮТТесты - .ДобавитьТестовыйНабор("Основной).УдалениеТестовыхДанных() // Использование для всех тестов набора - .ДобавитьТест("Фикция") - -ЮТТесты.УдалениеТестовыхДанных() // Использование для всех тестов модуля - .ДобавитьТест("Фикция") - -ЮТТесты.ВТранзакции().УдалениеТестовыхДанных() // Совместно с транзакцией - .ДобавитьТест("Фикция") - -``` - -Механизм не использует транзакции, а запоминает в контексте все созданные с помощью API объекты и записи регистров сведений. -Позволяет: - -* Удалять данные созданные с клиента -* Удалять данные созданные вне теста (в обработчиках событий) - -:::caution Удаление и только -Механизм только удаляет созданные объекты, изменения не откатываются -::: - -:::tip Разное время жизни данных -Механизм понимает в рамках какого контекста исполнения (тест, набор, модуль) были созданы данные и удаляет их по выходу из него. -::: - -Рассмотрим время жизни объектов созданных на разных этапах тестирования, например имеем такой модуль. - -```bsl title=УдалениеТестовыхДанныхВремяЖизни.bsl -Процедура ПередВсемиТестами() Экспорт - ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент(); -КонецПроцедуры - -Процедура ПередТестовымНабором() Экспорт - ДанныеНабора = ЮТест.Данные().СоздатьЭлемент(); -КонецПроцедуры - -Процедура ПослеВсехТестов() Экспорт - ДанныеТеста = ЮТест.Данные().СоздатьЭлемент(); -КонецПроцедуры - -Процедура Тест() Экспорт - Ссылка = ЮТест.Данные().СоздатьЭлемент(); -КонецПроцедуры -``` - -Для переменных получим разное время жизни - -* `ДанныеМодуля` - Живет, пока исполняются тесты модуля одного контекста (Сервер, Клиент). -* `ДанныеНабора` - Живет, пока исполняются тесты набора. -* `ДанныеТеста` и `Ссылка` - Живут, пока исполняется тест. - -:::caution Механизм имеет ряд ограничений и не работает для следующих кейсов: - -* Данные создан не через API -* Данные созданы в клиентском модуле через вызов своего серверного модуля, даже если он использует API тестового движка -::: diff --git a/documentation/docs/user-api/test-registration.md b/documentation/docs/user-api/test-registration.md deleted file mode 100644 index 24e7a80b0..000000000 --- a/documentation/docs/user-api/test-registration.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -tags: [Начало] ---- - -# Регистрация тестовых методов (ЮТТесты) - -Кроме того, чтобы написать тестовые сценарии, разработчик должен зарегистрировать их в движке. -Регистрация выполняется внутри предопределенного экспортного метод `ИсполняемыеСценарии`, который обязательно должен находиться в тестовом модуле. - -```bsl - -Процедура ИсполняемыеСценарии() Экспорт - - // Регистрация тестов - ЮТТесты // Регистрация тестов выполняет через модуль регистратор - .ДобавитьТестовыйНабор("Математические методы") // Набор - объединение тестов - .ДобавитьТест("Сложение") // Обязательно при регистрации указываем имя экспортного метода - .ДобавитьТест("Вычитание", "Вычитание") // Также можно указать представление теста - .ДобавитьТест("Вычитание", "ВычитаниеСервер", , "Сервер") // Контекст исполнения, по умолчанию тест выполняется во всех контекстах модуля - .ДобавитьКлиентскийТест("УмножениеНаКлиенте") // Есть отдельный метод для регистрации клиентских тестов - .ДобавитьСерверныйТест("ДелениеНаСервере", "Деление на сервер") // Есть отдельный метод для регистрации серверных тестов - .ДобавитьТестовыйНабор("Строковые методы") - .ДобавитьТест("СтрНайти") - .ДобавитьТест("СтрРазделить"); - -КонецПроцедуры - -``` - -Этот метод автоматически вызывается тестовым движком при старте тестирования. - -Как видно из примера выше, регистрация выполняется с помощью методов модуля `ЮТТесты`. - -Он позволяет: - -* Объединять тесты в наборы, указывать теги, по которым возможно формировать отборы запускаемых тестов -* Указывать контекст вызова, например, для клиент-серверного модуля (или метода) можно реализовать тесты в одном тестовом модуле, проверяющие логику и на клиенте, и на сервере. -* Указывать параметры выполнения тестов. -* Организовывать черновики, регистрируя нереализованные тесты. diff --git a/documentation/docs/yaxunit-ui.md b/documentation/docs/yaxunit-ui.md index 4e19a8022..2d9ec4304 100644 --- a/documentation/docs/yaxunit-ui.md +++ b/documentation/docs/yaxunit-ui.md @@ -1,3 +1,8 @@ +--- +sidebar_position: 5 +tags: [Начало] +--- + # Графический интерфейс Расширение добавляет в командный интерфейс конфигурации новый раздел "Юнит тест". diff --git a/documentation/docusaurus.config.js b/documentation/docusaurus.config.js index 75fb358e9..39388937e 100644 --- a/documentation/docusaurus.config.js +++ b/documentation/docusaurus.config.js @@ -1,8 +1,7 @@ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion -const lightCodeTheme = require('prism-react-renderer/themes/github'); -const darkCodeTheme = require('prism-react-renderer/themes/dracula'); +import {themes as prismThemes} from 'prism-react-renderer'; /** @type {import('@docusaurus/types').Config} */ const config = { @@ -95,13 +94,13 @@ const config = { navbar: { title: 'YAx Unit', logo: { - alt: 'YaxUnit Logo', + alt: 'YAxUnit Logo', src: 'img/logo.png', }, items: [ { type: 'doc', - docId: 'user-api/index', + docId: 'features/features', position: 'left', label: 'Описание', }, @@ -142,7 +141,7 @@ const config = { items: [ { label: 'Tutorial', - to: '/docs/user-api', + to: '/docs/features', }, ], }, @@ -168,14 +167,25 @@ const config = { copyright: `Copyright © ${new Date().getFullYear()} BIA Technologies, Inc. Built with Docusaurus.`, }, prism: { - theme: lightCodeTheme, - darkTheme: darkCodeTheme, + theme: prismThemes.vsLight, + darkTheme: prismThemes.vsDark, + additionalLanguages: ['bsl'], }, }), markdown: { mermaid: true, }, - themes: ['@docusaurus/theme-mermaid'], + themes: ['@docusaurus/theme-mermaid', + ["@easyops-cn/docusaurus-search-local", { + hashed: true, + language: ["en", "ru"], + indexBlog: false, + indexDocs: true, + docsRouteBasePath: ["docs", "api", 'contributing', 'lessons'], + docsDir: ["docs", "api", 'contributing', 'lessons'], + highlightSearchTermsOnTargetPage: true, + hideSearchBarWithNoSearchContext: true, + }]], }; module.exports = config; diff --git a/documentation/package.json b/documentation/package.json index f5d57605c..a8ef6d8ce 100644 --- a/documentation/package.json +++ b/documentation/package.json @@ -14,17 +14,20 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "2.3.1", - "@docusaurus/preset-classic": "2.3.1", - "@docusaurus/theme-mermaid": "2.3.1", - "@mdx-js/react": "^1.6.22", - "clsx": "^1.2.1", - "prism-react-renderer": "^1.3.5", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "@docusaurus/core": "^3.1.1", + "@docusaurus/preset-classic": "^3.1.1", + "@docusaurus/theme-mermaid": "^3.1.1", + "@easyops-cn/docusaurus-search-local": "^0.40.1", + "@mdx-js/react": "^3.0.0", + "dagre": "^0.8.5", + "prism-react-renderer": "^2.3.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.20.0", + "reactflow": "^11.10.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.3.1" + "@docusaurus/module-type-aliases": "^3.1.1" }, "browserslist": { "production": [ @@ -39,6 +42,6 @@ ] }, "engines": { - "node": ">=16.14" + "node": ">=18.0" } } diff --git a/documentation/src/components/mindmap.js b/documentation/src/components/mindmap.js new file mode 100644 index 000000000..520a92bc6 --- /dev/null +++ b/documentation/src/components/mindmap.js @@ -0,0 +1,121 @@ +import React, { useCallback } from 'react'; +import ReactFlow, { + addEdge, + ConnectionLineType, + Panel, + useNodesState, + useEdgesState, +} from 'reactflow'; +import dagre from 'dagre'; +import { useHistory } from "react-router-dom"; + +// we have to import the React Flow styles for it to work +import 'reactflow/dist/style.css'; + +const dagreGraph = new dagre.graphlib.Graph(); +dagreGraph.setDefaultEdgeLabel(() => ({})); + +const nodeWidth = 150; +const nodeHeight = 36; + +const getLayoutedElements = (nodes, edges, direction = 'LR') => { + const isHorizontal = direction === 'LR'; + dagreGraph.setGraph({ rankdir: direction }); + + nodes.forEach((node) => { + dagreGraph.setNode(node.id, { width: nodeWidth, height: nodeHeight }); + }); + + edges.forEach((edge) => { + dagreGraph.setEdge(edge.source, edge.target); + }); + + dagre.layout(dagreGraph); + + nodes.forEach((node) => { + const nodeWithPosition = dagreGraph.node(node.id); + node.targetPosition = isHorizontal ? 'left' : 'top'; + node.sourcePosition = isHorizontal ? 'right' : 'bottom'; + + // We are shifting the dagre node position (anchor=center center) to the top left + // so it matches the React Flow node anchor point (top left). + node.position = { + x: nodeWithPosition.x - nodeWidth / 2, + y: nodeWithPosition.y - nodeHeight / 2, + }; + + return node; + }); + + return { nodes, edges }; +}; + +const Mindmap = (nodesTree) => { + const initialNodes = [] + const initialEdges = [] + var id = 0; + const fillNodes = (nodeTree, parentID)=>{ + console.log(nodeTree); + + const nodeId = 'n' + (id++); + const node = { id: nodeId, data: { label: nodeTree.label, href: nodeTree.href } }; + initialNodes.push(node); + if(parentID){ + initialEdges.push({ id: 'e' + parentID + nodeId, source: parentID, target: nodeId }); + } else { + node.type = 'input' + } + if(nodeTree.child){ + nodeTree.child.forEach(childNode=>{ + fillNodes(childNode, nodeId); + }) + } else{ + node.type = 'output' + } + } + + fillNodes(nodesTree.nodesTree, undefined); + + const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements( + initialNodes, + initialEdges + ); + + const [nodes, setNodes, onNodesChange] = useNodesState(layoutedNodes); + const [edges, setEdges, onEdgesChange] = useEdgesState(layoutedEdges); + + const onConnect = useCallback( + (params) => + setEdges((eds) => + addEdge({ ...params, type: ConnectionLineType.SmoothStep, animated: true }, eds) + ), + [] + ); + + const history = useHistory(); + const onNodeClick = (event, node) => history.push(node.data.href); + + return ( +
+ +
+ ); +}; + +const Node = (label, href, child) =>{ + return {label: label, href: href, child: child}; +} + +export { Mindmap, Node }; diff --git a/documentation/src/pages/images/report.png b/documentation/src/pages/images/report.png deleted file mode 100644 index 884d8c3fc..000000000 Binary files a/documentation/src/pages/images/report.png and /dev/null differ diff --git a/documentation/src/pages/images/reports.png b/documentation/src/pages/images/reports.png new file mode 100644 index 000000000..6579ece01 Binary files /dev/null and b/documentation/src/pages/images/reports.png differ diff --git a/documentation/src/pages/images/telegram.svg b/documentation/src/pages/images/telegram.svg new file mode 100644 index 000000000..fd71cc560 --- /dev/null +++ b/documentation/src/pages/images/telegram.svg @@ -0,0 +1,16 @@ + + + + Artboard + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/documentation/src/pages/index.md b/documentation/src/pages/index.md index 6c8d97bc4..cc3bdde7a 100644 --- a/documentation/src/pages/index.md +++ b/documentation/src/pages/index.md @@ -12,174 +12,27 @@ slug: / [![GitHub Releases](https://img.shields.io/github/downloads/bia-technologies/yaxunit/latest/total?style=flat-square)](https://github.com/bia-technologies/yaxunit/releases) [![Quality Gate](https://sonar.openbsl.ru/api/project_badges/measure?project=yaxunit&metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=yaxunit) [![Maintainability](https://sonar.openbsl.ru/api/project_badges/measure?project=yaxunit&metric=sqale_rating)](https://sonar.openbsl.ru/dashboard?id=yaxunit) - [![Build and test](https://github.com/bia-technologies/yaxunit/actions/workflows/main-build.yml/badge.svg)](https://github.com/bia-technologies/yaxunit/actions/workflows/main-build.yml) [![Build ocumentation](https://github.com/bia-technologies/yaxunit/actions/workflows/deploy-documentation.yml/badge.svg)](https://github.com/bia-technologies/yaxunit/actions/workflows/deploy-documentation.yml) - -Обсудить в [Telegram чате](https://t.me/BIAOpenTools/12) +[![Telegram чате](images/telegram.svg)](https://t.me/BIAOpenTools/12) ---- -- [Назначение](#назначение) - - [Возможности](#возможности) -- [Пример тестового модуля](#пример-тестового-модуля) -- [Запуск](#запуск) - - [Запуск из EDT](#запуск-из-edt) - - [Запуск вне EDT](#запуск-вне-edt) -- [Благодарности](#благодарности) -- [Лицензия](#лицензия) - -## Назначение - -Самостоятельное расширение для написания и выполнения модульного тестирования. - -### Возможности - -- YAxUnit - это расширение с открытым исходным кодом, которое используется для написания и выполнения тестов -- Разрабатывалось с оглядкой на JUnit5, пожалуй, лучший фреймворк тестирования -- Предоставляет движок выполнения тестов -- Предоставляет утверждения для проверки ожидаемых результатов -- Тесты могут быть организованы в наборы и выполняться в разных контекстах -- Позволяет быстрее и проще не только писать, но и читать тесты -- Результаты тестирования могут быть сохранены в отчет, на текущий момент jUnit и json. -- Большая часть пользовательского API реализована как [текучие выражения](https://ru.wikipedia.org/wiki/Fluent_interface) -- Предусмотрена возможность расширения функциональности, можно регистрировать свои форматы отчетов, добавлять модули с утверждениями -- Реализован [плагин для EDT](https://github.com/bia-technologies/edt-test-runner), который упрощает процесс запуска тестов - -Подробнее ознакомиться с функциональностью вы можете изучив [документацию](/docs/user-api). - -А для того, что бы начать писать тесты необходимо [установить расширение](/docs/install) в свою IDE (конфигуратор или EDT). - -## Пример тестового модуля - -Для создания теста нужно в расширении (в отдельном или в том же) добавить модуль, содержащий экспортный метод регистрации - `ИсполняемыеСценарии` и реализовать тесты. - -Пример модуля тестов: - -```bsl -#Область СлужебныйПрограммныйИнтерфейс - -Процедура ИсполняемыеСценарии() Экспорт - - // Регистрация тестов - ЮТТесты // Регистрация тестов выполняет через модуль регистратор - .ДобавитьТестовыйНабор("Математические методы") // Набор - объединение тестов - .ДобавитьТест("Сложение") // Обязательно при регистрации указываем имя экспортного метода - .ДобавитьТест("Вычитание", "Вычитание") // Также можно указать представление теста - .ДобавитьТест("Вычитание", "ВычитаниеСервер", , "Сервер") // Контекст исполнения, по умолчанию тест выполняется во всех контекстах модуля - .ДобавитьКлиентскийТест("УмножениеНаКлиенте") // Есть отдельный метод для регистрации клиентских тестов - .ДобавитьСерверныйТест("ДелениеНаСервере", "Деление на сервер") // Есть отдельный метод для регистрации серверных тестов - .ДобавитьТестовыйНабор("Строковые методы") - .ДобавитьТест("СтрНайти") - .ДобавитьТест("СтрРазделить"); - -КонецПроцедуры - -#КонецОбласти - -#Область Тесты - -Процедура Сложение() Экспорт - - // Реализация теста на сложение - ЮТест.ОжидаетЧто(2 + 3, "2 + 3") // Используя модуль утверждений установим проверяемое значение и пояснение - .ИмеетТип("Число") // Проверим тип - .Заполнено() // Заполненность проверяемого значения - .Больше(0) // Сравним с нулем - .Равно(5); // Проверим ожидаемый результат - - ЮТест.ОжидаетЧто(-8 + 8, "-8 + 8") // Проверим второй вариант - .Равно(0); - -КонецПроцедуры - -Процедура Вычитание() Экспорт - - // Реализация теста на вычитание - ЮТест.ОжидаетЧто(2 - 3, "2 - 3").ИмеетТип("Число").Заполнено().Меньше(0); - -КонецПроцедуры - -#КонецОбласти - -#Область События - -// Также в тесте можно обрабатывать события выполнения -// Например можно реализовать подготовку и удаление тестовых данных -// Зачистку временных файлов, настройку системы - -Процедура ПередВсемиТестами() Экспорт - // Выполняется перед запуском всех тестов контекста, те если есть тесты и на клиенте и на сервер, то метод будет выполнен 2 раза - Сообщить("Запуск тестирования"); - -КонецПроцедуры - -Процедура ПередТестовымНабором() Экспорт - - // Выполняется перед каждым тестовым набором для каждого контекста выполнения - Контекст = ЮТест.КонтекстТестовогоНабора(); // Контекст набора служит для хранения любых данных, нужных при тестировании - // Контекст живет в рамках контекста выполнения, - // таки образом, через контекст нельзя передавать данные между серверными и клиентскими тестами - Контекст.Вставить("ВремяНачала", ТекущаяУниверсальнаяДатаВМиллисекундах()); - -КонецПроцедуры - -Процедура ПередКаждымТестом() Экспорт - - // Выполняется перед каждым тестом - Контекст = ЮТест.КонтекстТеста(); // Контекст теста служит для хранения любых данных, нужных при тестировании - // Контекст создает перед тестом и уничтожается после его выполнения - // В контекст например, можно помещать созданные в процессе данные, что бы потом их удалить - Контекст.Вставить("ВремяНачала", ТекущаяУниверсальнаяДатаВМиллисекундах()); - -КонецПроцедуры - -Процедура ПослеКаждогоТеста() Экспорт - - // Выполняется после каждого теста - Контекст = ЮТест.КонтекстТеста(); - Сообщить("Время выполнения теста: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - Контекст.ВремяНачала)); - -КонецПроцедуры - -Процедура ПослеТестовогоНабора() Экспорт - - // Выполняется после каждого тестового набора для каждого контекста выполнения - // Применяется для очистки данных и т.д. - Контекст = ЮТест.КонтекстТестовогоНабора(); - Сообщить("Время выполнения набора: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - Контекст.ВремяНачала)); - -КонецПроцедуры - -Процедура ПослеВсехТестов() Экспорт - - // Выполняется после выполнения всех тестов контекста, те если есть тесты и на клиенте и на сервер, то метод будет выполнен 2 раза - // В этом событии все контексты уже уничтожены - Сообщить("Тестирование завершено"); - -КонецПроцедуры - -#КонецОбласти - -``` - -После запуска тестов модуля в EDT (используя [плагин](https://github.com/bia-technologies/edt-test-runner)) получаем такой отчет: - -![Отчет](images/report.png) - -## Запуск - -### Запуск из EDT +**YAxUnit** представляет собой мощный инструмент написания тестов для решений на платформе 1С:Предприятие. +Он был создан с учетом лучших практик тестирования и предлагает [множество функций](/docs/features/), которые позволяют эффективно справиться с поставленной задачей. -При разработке в EDT процесс запуска тестов можно упростить, установив [плагин](https://github.com/bia-technologies/edt-test-runner) -и настроив конфигурацию запуска, как указано в описании плагина. +* Тестовый движок, который выполнит тесты и предоставит подробный отчет в нужном формате. +* [Утверждения](/docs/features/assertions/) для проверки ожидаемых результатов. Они помогают разработчикам ясно и точно определить, какие результаты они ожидают, и автоматически проверить, соответствуют ли реальные результаты этим ожиданиям. +* Мощные инструменты для работы с [тестовыми данными](/docs/features/test-data/). Создание, удаление и поиск нужных данных теперь не проблема. +* Благодаря поддержке [текучих выражений](/docs/getting-started/fluent-api), код тестов становится более читаемым и понятным, что упрощает его поддержку и модификацию. +* Кроме того, YAxUnit предусматривает возможность расширения функциональности, что позволяет разработчикам адаптировать инструмент под свои уникальные требования. +* Последнее, но не менее важное - [плагин для запуска тестов](/docs/getting-started/edt-plugin/) из 1С:Enterprise Development Tools (EDT). Значительно упрощает процесс написания и отладки тестов. В один клик вы может запустить и увидеть результат нужного теста. -### Запуск вне EDT +Все эти возможности делают YAxUnit мощным помощником разработчика на непростом пути тестирования. -Для запуска тестов без использования EDT необходимо: +![Отчет о тестировании](images/reports.png) -1. Сформировать файл конфигурации запуска [вручную](/docs/run), либо воспользоваться [формой настройки](/docs/yaxunit-ui) -2. [Запустить 1С:Предприятие](/docs/run) с параметром `RunUnitTests=ПутьКФайлуКонфигурации.json`. +Чтобы более подробнее ознакомиться с возможностями YAxUnit вы можете изучить [документацию](/docs/features), либо [установив](/docs/getting-started/install) все необходимое? попробуйте написать [первый тест](/docs/getting-started/first-test) ## Благодарности diff --git a/documentation/src/theme/prism-include-languages.js b/documentation/src/theme/prism-include-languages.js new file mode 100644 index 000000000..0f888307f --- /dev/null +++ b/documentation/src/theme/prism-include-languages.js @@ -0,0 +1,23 @@ +import siteConfig from '@generated/docusaurus.config'; +export default function prismIncludeLanguages(PrismObject) { + const { + themeConfig: {prism}, + } = siteConfig; + const {additionalLanguages} = prism; + // Prism components work on the Prism instance on the window, while prism- + // react-renderer uses its own Prism instance. We temporarily mount the + // instance onto window, import components to enhance it, then remove it to + // avoid polluting global namespace. + // You can mutate PrismObject: registering plugins, deleting languages... As + // long as you don't re-assign it + globalThis.Prism = PrismObject; + additionalLanguages.forEach((lang) => { + if (lang === 'php') { + // eslint-disable-next-line global-require + require('prismjs/components/prism-markup-templating.js'); + } + // eslint-disable-next-line global-require, import/no-dynamic-require + require(`prismjs/components/prism-${lang}`); + }); + delete globalThis.Prism; +} diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" index 563f9cfa4..1fef6412b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -35,7 +35,7 @@ // ПараметрыМетода = Мокито.МассивПараметров(ПараметрыПодключения, Ресурс, HTTPМетод, Параметры, ОписаниеТела, Заголовки); // // ПрерватьВыполнение = Ложь; -// Результат = Мокито.АнализВызова(РаботаСHTTP, "ВыполнитьЗапрос", ПараметрыМетода, ПрерватьВыполнение); +// Результат = МокитоПерехват.АнализВызова(РаботаСHTTP, "ВыполнитьЗапрос", ПараметрыМетода, ПрерватьВыполнение); // // Если НЕ ПрерватьВыполнение Тогда // Возврат ПродолжитьВызов(ПараметрыПодключения, Ресурс, HTTPМетод, Параметры, ОписаниеТела, Заголовки); @@ -197,17 +197,17 @@ Параметр8 = "_!%*", Параметр9 = "_!%*", Параметр10 = "_!%*") Экспорт - - Возврат ЮТОбщий.ЗначениеВМассиве(Параметр1, - Параметр2, - Параметр3, - Параметр4, - Параметр5, - Параметр6, - Параметр7, - Параметр8, - Параметр9, - Параметр10); + + Возврат ЮТКоллекции.ЗначениеВМассиве(Параметр1, + Параметр2, + Параметр3, + Параметр4, + Параметр5, + Параметр6, + Параметр7, + Параметр8, + Параметр9, + Параметр10); КонецФункции @@ -238,8 +238,9 @@ #Область СлужебныйПрограммныйИнтерфейс -// Анализ вызова. -// Deprecate +#Область УстаревшиеПроцедурыИФункции + +// Устарела. Анализ вызова. // // Параметры: // Объект - Произвольный @@ -251,8 +252,12 @@ // Произвольный - Подменный результат работы метода Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("Мокито.АнализВызова", "МокитоПерехват.АнализВызова", "24.03"); + Возврат МокитоСлужебный.АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение); КонецФункции #КонецОбласти + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276/\320\234\320\276\320\272\320\270\321\202\320\276.suppress" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276/\320\234\320\276\320\272\320\270\321\202\320\276.suppress" deleted file mode 100644 index 0491407cf..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276/\320\234\320\276\320\272\320\270\321\202\320\276.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\236\320\261\321\203\321\207\320\265\320\275\320\270\320\265/\320\234\320\276\320\272\320\270\321\202\320\276\320\236\320\261\321\203\321\207\320\265\320\275\320\270\320\265.suppress" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\236\320\261\321\203\321\207\320\265\320\275\320\270\320\265/\320\234\320\276\320\272\320\270\321\202\320\276\320\236\320\261\321\203\321\207\320\265\320\275\320\270\320\265.suppress" deleted file mode 100644 index 6ef77900c..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\236\320\261\321\203\321\207\320\265\320\275\320\270\320\265/\320\234\320\276\320\272\320\270\321\202\320\276\320\236\320\261\321\203\321\207\320\265\320\275\320\270\320\265.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202/Module.bsl" new file mode 100644 index 000000000..a3ab77ff8 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202/Module.bsl" @@ -0,0 +1,37 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область ПрограммныйИнтерфейс + +// Анализ вызова. +// +// Параметры: +// Объект - Произвольный +// ИмяМетода - Произвольный +// ПараметрыМетода - Произвольный +// ПрерватьВыполнение - Произвольный +// +// Возвращаемое значение: +// Произвольный - Подменный результат работы метода +Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт + + Возврат МокитоСлужебный.АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение); + +КонецФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202.mdo" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202.mdo" new file mode 100644 index 000000000..f0f1d0ab8 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\320\265\321\200\320\265\321\205\320\262\320\260\321\202.mdo" @@ -0,0 +1,11 @@ + + + МокитоПерехват + + ru + Мокито перехват + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270/Module.bsl" index 0aa8cfc40..6a8f1c98e 100644 --- "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ #Область ПрограммныйИнтерфейс // см. Мокито.Проверить -Функция Проверить(Объект, Описание) Экспорт +Функция Проверить(Объект, Описание = Неопределено) Экспорт УстановитьПараметрыПроверки(Объект, Описание); Возврат МокитоПроверки; @@ -244,7 +244,7 @@ СтруктураВызоваМетода = ПараметрыПроверки().СтруктураВызоваМетода; Объект = СтруктураВызоваМетода.Объект; - ПредставлениеТипа = ЮТОбщий.ПредставлениеТипа(ТипЗнч(Объект)); + ПредставлениеТипа = ЮТТипыДанныхСлужебный.ПредставлениеТипа(ТипЗнч(Объект)); Возврат СтрШаблон(" - вызовы метода `%1(%2).%3`,", Объект, ПредставлениеТипа, СтруктураВызоваМетода.ИмяМетода); КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270.suppress" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270.suppress" deleted file mode 100644 index 20316abcb..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270/\320\234\320\276\320\272\320\270\321\202\320\276\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 2beb4238f..142426c91 100644 --- "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Функция Включен() Экспорт - ДанныеКонтекста = ЮТКонтекст.ДанныеКонтекста(); + ДанныеКонтекста = ЮТКонтекстСлужебный.ДанныеКонтекста(); Настройки = Неопределено; Возврат ДанныеКонтекста <> Неопределено И ДанныеКонтекста.Свойство(КлючНастроек(), Настройки) И Настройки <> Неопределено; @@ -40,7 +40,7 @@ // см. НовыеНастройки Функция Настройки() Экспорт - Настройки = ЮТКонтекст.ЗначениеКонтекста(КлючНастроек()); + Настройки = ЮТКонтекстСлужебный.ЗначениеКонтекста(КлючНастроек()); Если Настройки = Неопределено Тогда ВызватьИсключение "Что-то пошло не так, настройки Мокито не инициализированы"; @@ -206,7 +206,7 @@ ИначеЕсли Условие.Режим = ТипыУсловий.Значение Тогда - Совпадает = ЮТСравнениеКлиентСервер.ЗначенияРавны(Условие.Значение, Параметр); + Совпадает = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Условие.Значение, Параметр); ИначеЕсли Условие.Режим = ТипыУсловий.Тип Тогда @@ -218,7 +218,7 @@ ИначеЕсли Условие.Режим = ТипыУсловий.Предикат Тогда - Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Параметр, Условие.Предикат); + Результат = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Параметр, Условие.Предикат); Совпадает = Результат.Успешно; КонецЕсли; @@ -531,7 +531,7 @@ Процедура ИнициализироватьНастройки() Экспорт - ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), НовыеНастройки(), Истина); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(КлючНастроек(), НовыеНастройки(), Истина); КонецПроцедуры @@ -568,7 +568,7 @@ Процедура ОчиститьНастройки() Экспорт - ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Неопределено); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(КлючНастроек(), Неопределено); КонецПроцедуры @@ -611,10 +611,10 @@ Условия.Добавить(Параметр); - ИначеЕсли ЮТПредикатыКлиентСервер.ЭтоПредикат(Параметр) Тогда + ИначеЕсли ЮТПредикатыСлужебныйКлиентСервер.ЭтоПредикат(Параметр) Тогда Маска = ОписаниеМаскиПараметра(ТипыУсловий.Предикат, 90); - Маска.Вставить("Предикат", ЮТПредикатыКлиентСервер.НаборПредикатов(Параметр)); + Маска.Вставить("Предикат", ЮТПредикатыСлужебныйКлиентСервер.НаборПредикатов(Параметр)); Условия.Добавить(Маска); Иначе @@ -672,7 +672,7 @@ И Элемент.Ключ.Ссылка = Ссылка И Элемент.Значение.Свойство(ИмяМетода); Если ПодходящийЭлемент Тогда - ЮТОбщий.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]); + ЮТКоллекции.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]); КонецЕсли; КонецЦикла; @@ -700,7 +700,7 @@ ПодходящийЭлемент = ТипЗнч(Элемент.Ключ) = ТипОбъекта И Элемент.Значение.Свойство(ИмяМетода); Если ПодходящийЭлемент Тогда - ЮТОбщий.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]); + ЮТКоллекции.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]); КонецЕсли; КонецЦикла; diff --git "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.suppress" "b/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.suppress" deleted file mode 100644 index 3f3f0462d..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" index 65dc068c9..e2a540455 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" @@ -35,7 +35,7 @@ Функция ЗначенияРеквизитов(Ссылка, ИменаРеквизитов) Экспорт //@skip-check constructor-function-return-section - Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, Ложь); + Возврат ЮТЗапросыСлужебныйВызовСервера.ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, Ложь); КонецФункции @@ -49,7 +49,7 @@ // Произвольный - Значение реквизита ссылки Функция ЗначениеРеквизита(Ссылка, ИмяРеквизита) Экспорт - Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИмяРеквизита, Истина); + Возврат ЮТЗапросыСлужебныйВызовСервера.ЗначенияРеквизитов(Ссылка, ИмяРеквизита, Истина); КонецФункции @@ -65,9 +65,9 @@ // Структура, Неопределено - Содержит все данные записи, включая табличный части Функция Запись(ИмяТаблицы, Предикат) Экспорт - ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*"); + ОписаниеЗапроса = ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*"); //@skip-check constructor-function-return-section - Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Истина); + Возврат ЮТЗапросыСлужебныйВызовСервера.Записи(ОписаниеЗапроса, Истина); КонецФункции @@ -83,8 +83,8 @@ // Массив из Структура - Найденные записи, включая табличный части Функция Записи(ИмяТаблицы, Предикат) Экспорт - ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*"); - Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь); + ОписаниеЗапроса = ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*"); + Возврат ЮТЗапросыСлужебныйВызовСервера.Записи(ОписаниеЗапроса, Ложь); КонецФункции @@ -102,8 +102,8 @@ // Функция ЗначенияРеквизитовЗаписи(ИмяТаблицы, Предикат, ИменаРеквизитов) Экспорт - ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИменаРеквизитов); - Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Ложь); + ОписаниеЗапроса = ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИменаРеквизитов); + Возврат ЮТЗапросыСлужебныйВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Ложь); КонецФункции @@ -121,9 +121,9 @@ // Функция ЗначениеРеквизитаЗаписи(ИмяТаблицы, Предикат, ИмяРеквизита) Экспорт - ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИмяРеквизита); + ОписаниеЗапроса = ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИмяРеквизита); //@skip-check constructor-function-return-section - Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Истина); + Возврат ЮТЗапросыСлужебныйВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Истина); КонецФункции @@ -139,7 +139,7 @@ // Булево - Таблица содержит записи Функция ТаблицаСодержитЗаписи(ИмяТаблицы, Предикат = Неопределено) Экспорт - ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат); + ОписаниеЗапроса = ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат); Возврат НЕ РезультатПустой(ОписаниеЗапроса); КонецФункции @@ -155,9 +155,9 @@ Функция РезультатЗапроса(ОписаниеЗапроса) Экспорт #Если Клиент Тогда - Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Истина); + Возврат ЮТЗапросыСлужебныйВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Истина); #Иначе - Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Ложь); + Возврат ЮТЗапросыСлужебныйВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Ложь); #КонецЕсли КонецФункции @@ -171,7 +171,7 @@ // Булево - Результат пустой Функция РезультатПустой(ОписаниеЗапроса) Экспорт - Возврат ЮТЗапросыВызовСервера.РезультатПустой(ОписаниеЗапроса); + Возврат ЮТЗапросыСлужебныйВызовСервера.РезультатПустой(ОписаниеЗапроса); КонецФункции @@ -202,7 +202,7 @@ Функция НовыйОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля) Экспорт - Возврат ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля); + Возврат ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля); КонецФункции @@ -228,10 +228,10 @@ КонецЕсли; Предикат = ЮТест.Предикат().Реквизит("Регистратор").Равно(Документ); - ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяРегистра, Предикат, "*"); + ОписаниеЗапроса = ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяРегистра, Предикат, "*"); ОписаниеЗапроса.Порядок.Добавить("НомерСтроки"); - Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь); + Возврат ЮТЗапросыСлужебныйВызовСервера.Записи(ОписаниеЗапроса, Ложь); КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 93% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index 3875208f4..94b9e2790 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -156,12 +156,12 @@ Если ОписаниеЗапроса.ВыбираемыеПоля.Количество() Тогда ВыбираемыеПоля = ОписаниеЗапроса.ВыбираемыеПоля; Иначе - ВыбираемыеПоля = ЮТОбщий.ЗначениеВМассиве("1 КАК Поле"); + ВыбираемыеПоля = ЮТКоллекции.ЗначениеВМассиве("1 КАК Поле"); КонецЕсли; Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС)); Строки.Добавить("ИЗ " + ОписаниеЗапроса.ИмяТаблицы); - + Условия = СформироватьУсловия(ОписаниеЗапроса.Условия, ОписаниеЗапроса.ИмяТаблицы, Запрос); Если Условия.Количество() Тогда @@ -176,7 +176,7 @@ КонецЕсли; Запрос.Текст = СтрСоединить(Строки, Символы.ПС); - ЮТОбщий.ОбъединитьВСтруктуру(Запрос.Параметры, ОписаниеЗапроса.ЗначенияПараметров); + ЮТКоллекции.ДополнитьСтруктуру(Запрос.Параметры, ОписаниеЗапроса.ЗначенияПараметров); Возврат Запрос; @@ -276,9 +276,9 @@ Функция ШаблонУсловия(ВыражениеПредиката, ВыраженияПредикатов, ТипРеквизита) Выражение = ВыражениеПредиката.ВидСравнения; - Отрицание = ЮТПредикатыКлиентСервер.ЭтоВыраженияОтрицания(Выражение); + Отрицание = ЮТПредикатыСлужебныйКлиентСервер.ЭтоВыраженияОтрицания(Выражение); Если Отрицание Тогда - Выражение = ЮТПредикатыКлиентСервер.ВыраженияБезОтрицания(Выражение); + Выражение = ЮТПредикатыСлужебныйКлиентСервер.ВыраженияБезОтрицания(Выражение); КонецЕсли; Если Выражение = ВыраженияПредикатов.Равно Тогда @@ -299,6 +299,8 @@ Шаблон = "ТИПЗНАЧЕНИЯ(%1) = &%2"; ИначеЕсли Выражение = ВыраженияПредикатов.Содержит Тогда Шаблон = "%1 ПОДОБНО ""%%"" + &%2 + ""%%"""; + ИначеЕсли Выражение = ВыраженияПредикатов.ВСписке Тогда + Шаблон = "%1 В (&%2)"; ИначеЕсли Выражение = ВыраженияПредикатов.Заполнено Тогда // TODO Реализовать ВызватьИсключение "Проверка заполненности пока не поддерживается"; @@ -323,7 +325,7 @@ ДлинаПсевдонима = СтрДлина(ПсевдонимТаблицы); Для Каждого ВыражениеПредиката Из Предикаты Цикл - Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ВыражениеПредиката) И ЗначениеЗаполнено(ВыражениеПредиката.ИмяРеквизита) Тогда + Если ЮТПредикатыСлужебныйКлиентСервер.ЭтоПредикат(ВыражениеПредиката) И ЗначениеЗаполнено(ВыражениеПредиката.ИмяРеквизита) Тогда Реквизиты.Добавить(СтрШаблон("%1.%2 КАК _%3", ПсевдонимТаблицы, ВыражениеПредиката.ИмяРеквизита, Реквизиты.Количество())); КонецЕсли; КонецЦикла; @@ -372,7 +374,7 @@ Для Каждого Условие Из Условия Цикл - Если НЕ ЮТПредикатыКлиентСервер.ЭтоПредикат(Условие) Тогда + Если НЕ ЮТПредикатыСлужебныйКлиентСервер.ЭтоПредикат(Условие) Тогда Результат.Добавить(Условие); Продолжить; КонецЕсли; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 81% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 10fbfd8d8..d9cf66049 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТЗапросыВызовСервера + ЮТЗапросыСлужебныйВызовСервера ru Запросы вызов сервера diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 82% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 489b23354..d964e146e 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ КонецЕсли; Если ПредикатыУсловия <> Неопределено Тогда - Описание.Условия = ЮТПредикатыКлиентСервер.НаборПредикатов(ПредикатыУсловия); + Описание.Условия = ЮТПредикатыСлужебныйКлиентСервер.НаборПредикатов(ПредикатыУсловия); КонецЕсли; Возврат Описание; @@ -45,7 +45,7 @@ ТипПараметра = ТипЗнч(ВыбираемыеПоля); Если ТипПараметра = Тип("Строка") Тогда - ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ","); + ВыбираемыеПоля = ЮТСтроки.РазделитьСтроку(ВыбираемыеПоля, ","); ТипПараметра = Тип("Массив"); КонецЕсли; @@ -62,7 +62,7 @@ Иначе - ВызватьИсключение ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТЗапросыКлиентСервер.ЗаполнитьВыбираемыеПоля", ВыбираемыеПоля); + ВызватьИсключение ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТЗапросыКлиентСервер.ЗаполнитьВыбираемыеПоля", ВыбираемыеПоля); КонецЕсли; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 85% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index f0a712979..081f5647d 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,6 +1,6 @@ - ЮТЗапросыКлиентСервер + ЮТЗапросыСлужебныйКлиентСервер ru Запросы клиент сервер diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 000000000..ab781986a --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,64 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область ПрограммныйИнтерфейс + +// Формирует текст исключения о некорректных параметрах вызова метода +// +// Параметры: +// ИмяМетода - Строка +// Пояснение - Строка +// +// Возвращаемое значение: +// Строка - Текст исключения +Функция НекорректныеПараметрыМетода(ИмяМетода, Пояснение = Неопределено) Экспорт + + Сообщение = СтрШаблон("Некорректные параметры метода `%1`"); + Возврат ЮТСтроки.ДобавитьСтроку(Сообщение, Пояснение, ", "); + +КонецФункции + +// Формирует текст исключения о неподдерживаемом значении параметра вызова метода +// +// Параметры: +// ИмяМетода - Строка +// ЗначениеПараметра - Произвольный +// +// Возвращаемое значение: +// Строка - Текст исключения +Функция НеподдерживаемыйПараметрМетода(ИмяМетода, ЗначениеПараметра) Экспорт + + Возврат СтрШаблон("Неподдерживаемый параметр метода `%1` `%2`(%3)", ИмяМетода, ЗначениеПараметра, ТипЗнч(ЗначениеПараметра)); + +КонецФункции + +// Формирует текст исключения о недоступности метода в указанном контексте +// +// Параметры: +// ИмяМетода - Строка +// ИмяКонтекста - Строка +// +// Возвращаемое значение: +// Строка - Текст исключения +Функция МетодНеДоступен(ИмяМетода, ИмяКонтекста = "веб-клиенте") Экспорт + + Возврат СтрШаблон("Метод `%1` не доступен в/на %2", ИмяМетода, ИмяКонтекста); + +КонецФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 000000000..bceff2664 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/\320\256\320\242\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,11 @@ + + + ЮТИсключения + + ru + Исключения + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.suppress" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.suppress" deleted file mode 100644 index 71114e427..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 55% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index 83ad8d2e7..77ad127d7 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,14 +22,14 @@ // Выполняет тесты наборов модуля. Возвращает результат прогона // Это обертка для прогона на сервере // Параметры: -// Наборы - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Наборы исполняемых тестов, структуру набора см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля +// Наборы - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов - Наборы исполняемых тестов, структуру набора см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля // // Возвращаемое значение: -// Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов, структура набора см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов +// Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов, структура набора см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов Функция ВыполнитьГруппуНаборовТестов(Знач Наборы, Знач ТестовыйМодуль) Экспорт - Возврат ЮТИсполнительКлиентСервер.ВыполнитьГруппуНаборовТестов(Наборы, ТестовыйМодуль); + Возврат ЮТИсполнительСлужебныйКлиентСервер.ВыполнитьГруппуНаборовТестов(Наборы, ТестовыйМодуль); КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 80% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 844cea612..bbcec480b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТИсполнительСервер + ЮТИсполнительСлужебныйВызовСервера ru Исполнитель тестов (сервер) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/Module.bsl" similarity index 84% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/Module.bsl" index faba7e613..0a5099ab3 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Процедура ЮТВыполнитьМодульноеТестирование() Экспорт - ЮТИсполнительКлиент.ВыполнитьМодульноеТестирование(); + ЮТИсполнительСлужебныйКлиент.ВыполнитьМодульноеТестирование(); КонецПроцедуры diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271.mdo" similarity index 72% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271.mdo" index 03a76c730..3a25f8920 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\223\320\273\320\276\320\261\320\260\320\273\321\214\320\275\321\213\320\271.mdo" @@ -1,9 +1,9 @@ - ЮТИсполнительГлобальный + ЮТИсполнительСлужебныйГлобальный ru - Исполнитель клиент глоб + Исполнитель глобальный true true diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" similarity index 77% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" index 19cbaa888..55ce81d8b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" @@ -80,7 +80,7 @@ Продолжить; КонецЕсли; - РежимИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим); + РежимИсполнения = ЮТФабрикаСлужебный.КонтекстИсполнения(Набор.Режим); Если РежимИсполнения = КонтекстыИсполнения.Клиент Тогда КлиентскиеНаборы.Добавить(Набор); @@ -92,20 +92,20 @@ КонецЦикла; - ТестовыйМодульОблегченный = ЮТОбщий.СкопироватьСтруктуру(ТестовыйМодуль); + ТестовыйМодульОблегченный = ЮТКоллекции.СкопироватьСтруктуру(ТестовыйМодуль); ТестовыйМодульОблегченный.НаборыТестов = Новый Массив(); Если ЗначениеЗаполнено(КлиентскиеНаборы) Тогда - Результаты = ЮТИсполнительКлиентСервер.ВыполнитьГруппуНаборовТестов(КлиентскиеНаборы, ТестовыйМодульОблегченный); + Результаты = ЮТИсполнительСлужебныйКлиентСервер.ВыполнитьГруппуНаборовТестов(КлиентскиеНаборы, ТестовыйМодульОблегченный); КонецЕсли; Если ЗначениеЗаполнено(СерверныеНаборы) Тогда - Результат = ЮТИсполнительСервер.ВыполнитьГруппуНаборовТестов(СерверныеНаборы, ТестовыйМодульОблегченный); - ЮТЛогирование.ВывестиСерверныеСообщения(); - ЮТОбщий.ДополнитьМассив(Результаты, Результат); + Результат = ЮТИсполнительСлужебныйВызовСервера.ВыполнитьГруппуНаборовТестов(СерверныеНаборы, ТестовыйМодульОблегченный); + ЮТЛогированиеСлужебный.ВывестиСерверныеСообщения(); + ЮТКоллекции.ДополнитьМассив(Результаты, Результат); КонецЕсли; - ЮТОбщий.ДополнитьМассив(Результаты, ПропущенныеНаборы); + ЮТКоллекции.ДополнитьМассив(Результаты, ПропущенныеНаборы); ТестовыйМодульОблегченный.НаборыТестов = Результаты; @@ -117,6 +117,17 @@ ВызватьИсключение ТекстОшибки; КонецПроцедуры +Процедура ВыполнитьИнициализацию(ПараметрыЗапуска) Экспорт + + ЮТКонтекстСлужебный.ИнициализироватьКонтекст(); + ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings); + // Повторно сохраним для передачи на сервер + ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения()); + + ЮТСобытияСлужебный.Инициализация(ПараметрыЗапуска); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -132,7 +143,7 @@ Процедура ОбработчикЗагрузитьПараметры(Результат, ДополнительныеПараметры) Экспорт Обработчик = ЮТАсинхроннаяОбработкаСлужебныйКлиент.СледующийОбработчик(ДополнительныеПараметры); - ЮТПараметрыЗапуска.ПараметрыЗапуска(ДополнительныеПараметры.АргументыЗапуска, Обработчик); + ЮТПараметрыЗапускаСлужебный.ПараметрыЗапуска(ДополнительныеПараметры.АргументыЗапуска, Обработчик); КонецПроцедуры @@ -150,18 +161,17 @@ Процедура ОбработчикИнициализация(Результат, ДополнительныеПараметры) Экспорт - ЮТСобытия.Инициализация(ДополнительныеПараметры.ПараметрыЗапуска); - + ВыполнитьИнициализацию(ДополнительныеПараметры.ПараметрыЗапуска); ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры); КонецПроцедуры Процедура ОбработчикЗагрузитьТесты(Результат, ДополнительныеПараметры) Экспорт - ЮТСобытия.ПередЧтениеСценариев(); + ЮТСобытияСлужебный.ПередЧтениеСценариев(); - ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(ДополнительныеПараметры.ПараметрыЗапуска); - ЮТСобытия.ПослеЧтенияСценариев(ТестовыеМодули); + ТестовыеМодули = ЮТЧитательСлужебный.ЗагрузитьТесты(ДополнительныеПараметры.ПараметрыЗапуска); + ЮТСобытияСлужебный.ПослеЧтенияСценариев(ТестовыеМодули); ИсполняемыеТестовыеМодули = Новый Массив(); @@ -170,7 +180,7 @@ ИсполняемыеТестовыеМодули.Добавить(ИсполняемыйТестовыйМодуль); КонецЦикла; - ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули); + ЮТСобытияСлужебный.ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули); ДополнительныеПараметры.ИсполняемыеТестовыеМодули = ИсполняемыеТестовыеМодули; ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры, ИсполняемыеТестовыеМодули); @@ -179,7 +189,7 @@ Процедура ОбработчикВыполнитьТестирование(Результат, ДополнительныеПараметры) Экспорт - ЮТСобытия.ПередВыполнениемТестов(ДополнительныеПараметры.ИсполняемыеТестовыеМодули); + ЮТСобытияСлужебный.ПередВыполнениемТестов(ДополнительныеПараметры.ИсполняемыеТестовыеМодули); РезультатыТестирования = Новый Массив(); @@ -190,7 +200,7 @@ КонецЦикла; - ЮТСобытия.ПослеВыполненияТестов(РезультатыТестирования); + ЮТСобытияСлужебный.ПослеВыполненияТестов(РезультатыТестирования); ДополнительныеПараметры.РезультатыТестирования = РезультатыТестирования; ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры, РезультатыТестирования); @@ -201,7 +211,7 @@ Если ЗначениеЗаполнено(ДополнительныеПараметры.ПараметрыЗапуска.reportPath) Тогда Обработчик = ЮТАсинхроннаяОбработкаСлужебныйКлиент.СледующийОбработчик(ДополнительныеПараметры); - ЮТОтчет.СформироватьОтчет(ДополнительныеПараметры.РезультатыТестирования, ДополнительныеПараметры.ПараметрыЗапуска, Обработчик); + ЮТОтчетСлужебный.СформироватьОтчет(ДополнительныеПараметры.РезультатыТестирования, ДополнительныеПараметры.ПараметрыЗапуска, Обработчик); Иначе ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры); КонецЕсли; @@ -218,7 +228,7 @@ Процедура ОбработчикЗавершить(Результат, ДополнительныеПараметры) Экспорт Параметры = ДополнительныеПараметры.ПараметрыЗапуска; - ЮТКонтекст.УдалитьКонтекст(); + ЮТКонтекстСлужебный.УдалитьКонтекст(); Если Параметры.showReport Тогда ПоказатьОтчет(ДополнительныеПараметры.РезультатыТестирования, Параметры); @@ -232,7 +242,7 @@ Если ДополнительныеПараметры.ПараметрыЗапуска.ПодключатьВнешниеКомпоненты Тогда Обработчик = ЮТАсинхроннаяОбработкаСлужебныйКлиент.СледующийОбработчик(ДополнительныеПараметры); - ЮТКомпонентыКлиент.ТихаяУстановкаКомпонент(Обработчик); + ЮТКомпонентыСлужебныйКлиент.ТихаяУстановкаКомпонент(Обработчик); Иначе ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры); КонецЕсли; @@ -243,18 +253,9 @@ #Область ОбработчикиСобытий -Процедура Инициализация(Параметры) Экспорт - - ЮТКонтекст.ИнициализироватьКонтекст(); - ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(Параметры.settings); - // Повторно сохраним для передачи на сервер - ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения()); - -КонецПроцедуры - Процедура ПередВыполнениемТестов(ИсполняемыеМодули) Экспорт - ЮТКонтекст.УстановитьКонтекстИсполнения(ЮТФабрика.НовыйКонтекстИсполнения()); + ЮТКонтекстСлужебный.УстановитьКонтекстИсполнения(ЮТФабрикаСлужебный.НовыйКонтекстИсполнения()); КонецПроцедуры @@ -269,17 +270,17 @@ Функция ИсполняемыйТестовыйМодуль(ТестовыйМодуль) - ИсполняемыйТестовыйМодуль = ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль); + ИсполняемыйТестовыйМодуль = ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль); - КонтекстыПриложения = ЮТФабрика.КонтекстыПриложения(); - КонтекстыМодуля = ЮТФабрика.КонтекстыМодуля(ТестовыйМодуль.МетаданныеМодуля); + КонтекстыПриложения = ЮТФабрикаСлужебный.КонтекстыПриложения(); + КонтекстыМодуля = ЮТФабрикаСлужебный.КонтекстыМодуля(ТестовыйМодуль.МетаданныеМодуля); КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения(); ИсполняемыйТестовыйМодуль.НаборыТестов = ИсполняемыеНаборыМодуля(ТестовыйМодуль); Для Каждого Набор Из ИсполняемыйТестовыйМодуль.НаборыТестов Цикл - КонтекстИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим); + КонтекстИсполнения = ЮТФабрикаСлужебный.КонтекстИсполнения(Набор.Режим); Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда ОшибкаКонтекста = "Неподдерживаемый режим запуска"; @@ -293,9 +294,9 @@ Если ОшибкаКонтекста <> Неопределено Тогда Набор.Выполнять = Ложь; - ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста); Для Каждого Тест Из Набор.Тесты Цикл - ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста); КонецЦикла; КонецЕсли; @@ -313,7 +314,7 @@ НаборыКонтекстов = Новый Структура; - ТестыНабора = ЮТОбщий.ЗначениеСтруктуры(ТестовыйНабор, "Тесты", Новый Массив()); + ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(ТестовыйНабор, "Тесты", Новый Массив()); ОбработатьОшибкиЧтенияНабора(ТестовыйНабор, ТестовыйМодуль); Для Каждого Тест Из ТестыНабора Цикл @@ -321,16 +322,16 @@ Для Каждого Контекст Из Тест.КонтекстВызова Цикл Если НЕ НаборыКонтекстов.Свойство(Контекст) Тогда - ИсполняемыйНабор = ЮТФабрика.ОписаниеИсполняемогоНабораТестов(ТестовыйНабор, ТестовыйМодуль); + ИсполняемыйНабор = ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов(ТестовыйНабор, ТестовыйМодуль); ИсполняемыйНабор.Режим = Контекст; НаборыКонтекстов.Вставить(Контекст, ИсполняемыйНабор); Иначе ИсполняемыйНабор = НаборыКонтекстов[Контекст]; КонецЕсли; - ИсполняемыйТест = ЮТФабрика.ОписаниеИсполняемогоТеста(Тест, Контекст, ТестовыйМодуль); + ИсполняемыйТест = ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста(Тест, Контекст, ТестовыйМодуль); Если Тест.Свойство("Ошибки") И Тест.Ошибки.Количество() > 0 Тогда - ИсполняемыйТест.Ошибки = ЮТОбщий.СкопироватьМассив(Тест.Ошибки); + ИсполняемыйТест.Ошибки = ЮТКоллекции.СкопироватьМассив(Тест.Ошибки); КонецЕсли; ИсполняемыйНабор.Тесты.Добавить(ИсполняемыйТест); @@ -353,15 +354,15 @@ КонецФункции Процедура ОбработатьОшибкиЧтенияНабора(Набор, Модуль) - ТестыНабора = ЮТОбщий.ЗначениеСтруктуры(Набор, "Тесты", Новый Массив()); - Ошибки = ЮТОбщий.ЗначениеСтруктуры(Набор, "Ошибки", Новый Массив()); + ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Тесты", Новый Массив()); + Ошибки = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Ошибки", Новый Массив()); Если Ошибки.Количество() > 0 Тогда Для Каждого Ошибка Из Ошибки Цикл - Если Ошибка.ТипОшибки = ЮТФабрика.ТипыОшибок().ЧтенияТестов Тогда + Если Ошибка.ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().ЧтенияТестов Тогда Тест = ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка); ТестыНабора.Добавить(Тест); - + Прервать; КонецЕсли; КонецЦикла; @@ -369,10 +370,10 @@ КонецПроцедуры Функция ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка) - Контексты = ЮТФабрика.КонтекстыМодуля(Модуль.МетаданныеМодуля); - Тест = ЮТФабрика.ОписаниеТеста("ИсполняемыеСценарии", "ИсполняемыеСценарии", Контексты); + Контексты = ЮТФабрикаСлужебный.КонтекстыМодуля(Модуль.МетаданныеМодуля); + Тест = ЮТФабрикаСлужебный.ОписаниеТеста("ИсполняемыеСценарии", "ИсполняемыеСценарии", Контексты); Тест.Вставить("Ошибки", Новый Массив); - Тест.Ошибки.Добавить(ЮТОбщий.СкопироватьСтруктуру(Ошибка)); + Тест.Ошибки.Добавить(ЮТКоллекции.СкопироватьСтруктуру(Ошибка)); Возврат Тест; КонецФункции @@ -389,7 +390,7 @@ // Записать код возврата. // // Параметры: -// РезультатыТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// РезультатыТестирования - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля // Параметры - см. ЮТФабрика.ПараметрыЗапуска Процедура ЗаписатьКодВозврата(РезультатыТестирования, Параметры) @@ -430,7 +431,7 @@ КонецЦикла; #Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТИсполнительКлиент.ЗаписатьКодВозврата"); + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТИсполнительКлиент.ЗаписатьКодВозврата"); #Иначе Запись = Новый ЗаписьТекста(Параметры.exitCode, КодировкаТекста.UTF8); Запись.ЗаписатьСтроку(?(Успешно, 0, 1)); @@ -446,7 +447,7 @@ Возврат Результат; КонецЕсли; - ТипОшибкиПропущен = ЮТФабрика.ТипыОшибок().Пропущен; + ТипОшибкиПропущен = ЮТФабрикаСлужебный.ТипыОшибок().Пропущен; Для Каждого ОписаниеОшибки Из Тест.Ошибки Цикл Если ОписаниеОшибки.ТипОшибки <> ТипОшибкиПропущен Тогда Результат = Истина; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" similarity index 84% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" index 049d96e65..6b2ea6dff 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" @@ -1,6 +1,6 @@ - ЮТИсполнительКлиент + ЮТИсполнительСлужебныйКлиент ru Исполнитель клиент diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 71% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 1706248fd..9c619b516 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -20,18 +20,18 @@ // Выполняет тесты группы наборов, соответствующих одному режиму выполнения (клиент/сервер) // Параметры: -// Наборы - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Наборы тестов модуля -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// Наборы - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов - Наборы тестов модуля +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля // // Возвращаемое значение: -// Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов с заполненной информацией о выполнении +// Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов с заполненной информацией о выполнении Функция ВыполнитьГруппуНаборовТестов(Наборы, ТестовыйМодуль) Экспорт Если Наборы.Количество() = 0 Тогда Возврат Наборы; КонецЕсли; - ЮТСобытия.ПередВсемиТестамиМодуля(ТестовыйМодуль); + ЮТСобытияСлужебный.ПередВсемиТестамиМодуля(ТестовыйМодуль); Если ЕстьОшибки(ТестовыйМодуль) Тогда СкопироватьОшибкиВ(Наборы, ТестовыйМодуль.Ошибки); @@ -48,7 +48,7 @@ КонецЦикла; - ЮТСобытия.ПослеВсехТестовМодуля(ТестовыйМодуль); + ЮТСобытияСлужебный.ПослеВсехТестовМодуля(ТестовыйМодуль); Если ЕстьОшибки(ТестовыйМодуль) Тогда СкопироватьОшибкиВ(Наборы, ТестовыйМодуль.Ошибки); @@ -67,7 +67,7 @@ Функция ВыполнитьНаборТестов(Набор, ТестовыйМодуль) Набор.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); - ЮТСобытия.ПередТестовымНабором(ТестовыйМодуль, Набор); + ЮТСобытияСлужебный.ПередТестовымНабором(ТестовыйМодуль, Набор); Если ЕстьОшибки(Набор) Тогда Возврат Неопределено; @@ -86,12 +86,12 @@ ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест, ВТранзакции); - Тест.Статус = ЮТРегистрацияОшибок.СтатусВыполненияТеста(Тест); + Тест.Статус = ЮТРегистрацияОшибокСлужебный.СтатусВыполненияТеста(Тест); Результаты.Добавить(Тест); КонецЦикла; - ЮТСобытия.ПослеТестовогоНабора(ТестовыйМодуль, Набор); + ЮТСобытияСлужебный.ПослеТестовогоНабора(ТестовыйМодуль, Набор); Набор.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Набор.ДатаСтарта; @@ -101,7 +101,7 @@ Процедура ПередКаждымТестом(ТестовыйМодуль, Набор, Тест, ВТранзакции) - ЮТСобытия.УстановитьКонтекстИсполнения(ТестовыйМодуль, Набор, Тест); + ЮТСобытияСлужебный.УстановитьКонтекстИсполнения(ТестовыйМодуль, Набор, Тест); #Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда ВТранзакции = ЮТНастройкиВыполнения.ВТранзакции(); Если ВТранзакции Тогда @@ -109,18 +109,18 @@ КонецЕсли; #КонецЕсли - ЮТСобытия.ПередКаждымТестом(ТестовыйМодуль, Набор, Тест); + ЮТСобытияСлужебный.ПередКаждымТестом(ТестовыйМодуль, Набор, Тест); КонецПроцедуры Процедура ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест, ВТранзакции) - Если ЮТКонтекст.ДанныеКонтекста() = Неопределено Тогда // Сломан контекст + Если ЮТКонтекстСлужебный.ДанныеКонтекста() = Неопределено Тогда // Сломан контекст ОбновитьПовторноИспользуемыеЗначения(); ОтменитьТранзакциюТеста(Тест, ВТранзакции); - ЮТСобытия.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест); + ЮТСобытияСлужебный.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест); Иначе - ЮТСобытия.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест); + ЮТСобытияСлужебный.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест); ОтменитьТранзакциюТеста(Тест, ВТранзакции); КонецЕсли; @@ -133,13 +133,13 @@ Если ТранзакцияАктивна() Тогда ОтменитьТранзакцию(); Иначе - ЮТРегистрацияОшибок.ЗарегистрироватьПростуюОшибкуВыполнения(Тест, "Обнаружено лишне закрытие транзакции"); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьПростуюОшибкуВыполнения(Тест, "Обнаружено лишне закрытие транзакции"); КонецЕсли; КонецЕсли; Пока ТранзакцияАктивна() Цикл ОтменитьТранзакцию(); - ЮТРегистрацияОшибок.ЗарегистрироватьПростуюОшибкуВыполнения(Тест, "Обнаружена незакрытая транзакция"); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьПростуюОшибкуВыполнения(Тест, "Обнаружена незакрытая транзакция"); КонецЦикла; #КонецЕсли @@ -160,10 +160,10 @@ СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); Тест.Статус = СтатусыИсполненияТеста.Исполнение; - Ошибка = ЮТОбщий.ВыполнитьМетод(Тест.ПолноеИмяМетода, Тест.Параметры); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(Тест.ПолноеИмяМетода, Тест.Параметры); Если Ошибка <> Неопределено Тогда - ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка); КонецЕсли; КонецПроцедуры @@ -172,7 +172,7 @@ Для Каждого Объект Из Объекты Цикл - ЮТОбщий.ДополнитьМассив(Объект.Ошибки, Ошибки); + ЮТКоллекции.ДополнитьМассив(Объект.Ошибки, Ошибки); Если Объект.Свойство("Статус") Тогда Объект.Статус = ЮТФабрика.СтатусыИсполненияТеста().Сломан; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 83% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index c64fae9a6..ed903cc56 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,6 +1,6 @@ - ЮТИсполнительКлиентСервер + ЮТИсполнительСлужебныйКлиентСервер ru Исполнитель тестов diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl" new file mode 100644 index 000000000..4bd1afce9 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl" @@ -0,0 +1,409 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область ПрограммныйИнтерфейс + +// Возвращает требуемое поле структуры. В случае отсутствия поля возвращает значение по умолчанию +// +// Параметры: +// ИсходнаяСтруктура - Структура - Исходная структура +// ИмяПоля - Строка - Имя поля структуры +// ЗначениеПоУмолчанию - Произвольный - Значение, которое будет возвращено, если поля в структуре нет +// +// Возвращаемое значение: +// Произвольный - Значение искомого поля структуры +Функция ЗначениеСтруктуры(ИсходнаяСтруктура, ИмяПоля, ЗначениеПоУмолчанию = Неопределено) Экспорт + + Если НЕ ЗначениеЗаполнено(ИсходнаяСтруктура) ИЛИ ПустаяСтрока(ИмяПоля) Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + ЗначениеПоля = Неопределено; + + Если ИсходнаяСтруктура.Свойство(ИмяПоля, ЗначениеПоля) Тогда + Возврат ЗначениеПоля; + КонецЕсли; + + Возврат ЗначениеПоУмолчанию; + +КонецФункции + +// Добавляет в приемник данные из источника, при совпадении ключей значения заменяются +// +// Параметры: +// Приемник - Структура +// Источник - Соответствие из Произвольный +// - Структура +Процедура ДополнитьСтруктуру(Приемник, Источник) Экспорт + + Для Каждого Элемент Из Источник Цикл + Приемник.Вставить(Элемент.Ключ, Элемент.Значение); + КонецЦикла; + +КонецПроцедуры + +// Добавляет в приемник все элементы источника +// +// Параметры: +// Приемник - Массив из Произвольный +// Источник - Массив из Произвольный +Процедура ДополнитьМассив(Приемник, Источник) Экспорт + + Для Каждого Элемент Из Источник Цикл + Приемник.Добавить(Элемент); + КонецЦикла; + +КонецПроцедуры + +// Создает копию экземпляра указанного объекта. +// Примечание: +// Функцию нельзя использовать для объектных типов (СправочникОбъект, ДокументОбъект и т.п.). +// +// Параметры: +// Источник - Произвольный - объект, который необходимо скопировать. +// +// Возвращаемое значение: +// Произвольный - копия объекта, переданного в параметре Источник. +// +Функция СкопироватьРекурсивно(Источник) Экспорт + + Перем Приемник; + + СкопироватьПрисвоением = Ложь; + + ТипИсточника = ТипЗнч(Источник); + + Если ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипИсточника) Тогда + Приемник = СкопироватьСтруктуру(Источник); + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипИсточника) Тогда + Приемник = СкопироватьСоответствие(Источник); + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипИсточника) Тогда + Приемник = СкопироватьМассив(Источник); + ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда + Приемник = СкопироватьСписокЗначений(Источник); + Иначе + + СкопироватьПрисвоением = Истина; +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + + Если ТипИсточника = Тип("ТаблицаЗначений") Или ТипИсточника = Тип("ДеревоЗначений") Тогда + + СкопироватьПрисвоением = Ложь; + Приемник = Источник.Скопировать(); + + КонецЕсли; +#КонецЕсли + + КонецЕсли; + + Если СкопироватьПрисвоением Тогда + Приемник = Источник; + КонецЕсли; + + Возврат Приемник; + +КонецФункции + +// Создает копию структуры +// +// Параметры: +// Источник - Структура, ФиксированнаяСтруктура - копируемая структура +// +// Возвращаемое значение: +// Структура - копия исходной структуры. +Функция СкопироватьСтруктуру(Источник) Экспорт + + Результат = Новый Структура; + + Для Каждого КлючИЗначение Из Источник Цикл + Результат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение)); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Создает копию соответствия +// +// Параметры: +// Источник - Соответствие из Произвольный +// - ФиксированноеСоответствие из Произвольный +// +// Возвращаемое значение: +// Соответствие Из Произвольный - копия исходного соответствия. +// +Функция СкопироватьСоответствие(Источник) Экспорт + + Результат = Новый Соответствие; + + Для Каждого КлючИЗначение Из Источник Цикл + + НовыйКлюч = СкопироватьРекурсивно(КлючИЗначение.Ключ); + НовоеЗначение = СкопироватьРекурсивно(КлючИЗначение.Значение); + Результат.Вставить(НовыйКлюч, НовоеЗначение); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Создает копию массива +// +// Параметры: +// Источник - Массив Из Произвольный +// - ФиксированныйМассив из Произвольный +// +// Возвращаемое значение: +// Массив Из Произвольный - копия исходного массива. +Функция СкопироватьМассив(Источник) Экспорт + + Если НЕ ЗначениеЗаполнено(Источник) Тогда + Возврат Новый Массив; + КонецЕсли; + + Размер = Источник.Количество(); + Результат = Новый Массив(Размер); + + Для Инд = 0 По Размер - 1 Цикл + Результат[Инд] = СкопироватьРекурсивно(Источник[Инд]); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Создает копию списка значений +// +// Параметры: +// Источник - СписокЗначений Из Произвольный +// +// Возвращаемое значение: +// СписокЗначений Из Произвольный +// +Функция СкопироватьСписокЗначений(Источник) Экспорт + + Результат = Новый СписокЗначений; + + Для Каждого ЭлементСписка Из Источник Цикл + + НовоеЗначение = СкопироватьРекурсивно(ЭлементСписка.Значение); + Результат.Добавить(НовоеЗначение, ЭлементСписка.Представление, ЭлементСписка.Пометка, ЭлементСписка.Картинка); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Выгружает значения "колонки" коллекции элементов. +// +// Параметры: +// Коллекция - Произвольный - Итерируемая коллекция +// ИмяРеквизита - Строка - Имя реквизата элементов коллекции +// +// Возвращаемое значение: +// Массив из Произвольный +Функция ВыгрузитьЗначения(Коллекция, ИмяРеквизита) Экспорт + + Результат = Новый Массив(); + + Для Каждого ЭлементКоллекции Из Коллекция Цикл + Результат.Добавить(ЭлементКоллекции[ИмяРеквизита]); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Вычисляет двух массивов, коллекцию содержащую общие элементы. +// +// Параметры: +// Коллекция1 - Массив из Произвольный +// Коллекция2 - Массив из Произвольный +// +// Возвращаемое значение: +// Массив из Произвольный - Пересечение массивов +Функция ПересечениеМассивов(Коллекция1, Коллекция2) Экспорт + + Результат = Новый Массив; + + Для Каждого Элемент Из Коллекция1 Цикл + + Если Коллекция2.Найти(Элемент) <> Неопределено Тогда + Результат.Добавить(Элемент); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Создает массив с переданными значениями +// +// Параметры: +// Значение - Произвольный +// Значение2 - Произвольный +// Значение3 - Произвольный +// Значение4 - Произвольный +// Значение5 - Произвольный +// Значение6 - Произвольный +// Значение7 - Произвольный +// Значение8 - Произвольный +// Значение9 - Произвольный +// Значение10 - Произвольный +// +// Возвращаемое значение: +// Массив из Произвольный +//@skip-check method-too-many-params +Функция ЗначениеВМассиве(Значение, + Значение2 = "_!%*", + Значение3 = "_!%*", + Значение4 = "_!%*", + Значение5 = "_!%*", + Значение6 = "_!%*", + Значение7 = "_!%*", + Значение8 = "_!%*", + Значение9 = "_!%*", + Значение10 = "_!%*") Экспорт + + Значения = Новый Массив; + + Если Не ДобавитьНеПоследнее(Значения, Значение) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение2) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение3) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение4) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение5) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение6) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение7) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение8) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение9) Тогда + Возврат Значения; + КонецЕсли; + + Если Не ДобавитьНеПоследнее(Значения, Значение10) Тогда + Возврат Значения; + КонецЕсли; + + Возврат Значения; + +КонецФункции + +// Возвращает соответствие элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции. +// +// Параметры: +// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки. +// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия. +// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции. +// Возвращаемое значение: +// Соответствие Из Произвольный - полученное соответствие. +Функция ВСоответствие(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт + + Результат = Новый Соответствие(); + + Для Каждого ЭлементКоллекции Из Коллекция Цикл + + Значение = ?(ИмяПоляЗначения = Неопределено, ЭлементКоллекции, ЭлементКоллекции[ИмяПоляЗначения]); + + Результат.Вставить(ЭлементКоллекции[ИмяПоляКлюча], Значение); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Возвращает структуру элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции. +// +// Параметры: +// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки. +// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия. +// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции. +// Возвращаемое значение: +// Структура Из Произвольный - полученная структура. +Функция ВСтруктуру(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт + + Результат = Новый Структура(); + + Для Каждого ЭлементКоллекции Из Коллекция Цикл + + Значение = ?(ИмяПоляЗначения = Неопределено, ЭлементКоллекции, ЭлементКоллекции[ИмяПоляЗначения]); + + Результат.Вставить(ЭлементКоллекции[ИмяПоляКлюча], Значение); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Формирует текстовое представление массива. +// Пример результата - "[1, 2, 3]" +// +// Параметры: +// Данные - Массив из Строка +// +// Возвращаемое значение: +// Строка +Функция ПредставлениеМассива(Данные) Экспорт + + Возврат СтрШаблон("[%1]", СтрСоединить(Данные, ", ")); + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ДобавитьНеПоследнее(Значения, Значение, ФлагОкончания = "_!%*") + + Если Значение <> ФлагОкончания Тогда + Значения.Добавить(Значение); + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270.mdo" new file mode 100644 index 000000000..47c180d20 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270.mdo" @@ -0,0 +1,11 @@ + + + ЮТКоллекции + + ru + Коллекции + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Module.bsl" index cc3e0f6f8..ad39dade4 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -74,7 +74,7 @@ Функция СоздатьКомпоненту(ОписаниеКомпоненты, Кэшировать = Ложь) Экспорт Если Кэшировать Тогда - Возврат ЮТПовторногоИспользования.СоздатьКомпоненту(ОписаниеКомпоненты); + Возврат ЮТСлужебныйПовторногоИспользования.СоздатьКомпоненту(ОписаниеКомпоненты); КонецЕсли; #Если Сервер Тогда @@ -107,7 +107,7 @@ Функция ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты, Кэшировать) Экспорт Если Кэшировать Тогда - Возврат ЮТПовторногоИспользования.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты); + Возврат ЮТСлужебныйПовторногоИспользования.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты); КонецЕсли; Возврат ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 96% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index ec01d6304..154ff00f3 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Функция ФайлКомпоненты(Знач ИмяМакета, Знач ОперационнаяСистема, Знач Архитектура) Экспорт - Данные = ЮТОбщийВызовСервера.Макет(ИмяМакета); + Данные = ЮТОбщийСлужебныйВызовСервера.Макет(ИмяМакета); ЧтениеАрхива = Новый ЧтениеZipФайла(); ЧтениеАрхива.Открыть(Данные.ОткрытьПотокДляЧтения()); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 81% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 2fdf4a25f..1a40d8c0d 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТКомпонентыВызовСервера + ЮТКомпонентыСлужебныйВызовСервера ru Компоненты вызов сервера diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" similarity index 93% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" index 5b99ced1a..9856c3620 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -106,7 +106,7 @@ ОперационнаяСистема = MacOS; Архитектура = x64; Иначе - ЮТИсполнительКлиент.ОбработкаОшибки("Неподдерживаемый тип платформы"); + ЮТИсполнительСлужебныйКлиент.ОбработкаОшибки("Неподдерживаемый тип платформы"); КонецЕсли; ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема; @@ -118,7 +118,7 @@ Процедура ПрочитатьФайлRegistry(ПараметрыТихойУстановки) Экспорт #Если ВебКлиент Тогда - ЮТИсполнительКлиент.ОбработкаОшибки(ЮТОбщий.МетодНеДоступен("ЮТКомпонентыКлиент.ПрочитатьФайлRegistry")); + ЮТИсполнительСлужебныйКлиент.ОбработкаОшибки(ЮТИсключения.МетодНеДоступен("ЮТКомпонентыКлиент.ПрочитатьФайлRegistry")); Возврат; #Иначе ФайлРеестра = ЮТФайлы.ОбъединитьПути(ПараметрыТихойУстановки.РабочийКаталог, "registry.xml"); @@ -134,7 +134,7 @@ Процедура ЗаписатьФайлRegistry(ПараметрыТихойУстановки) Экспорт #Если ВебКлиент Тогда - ЮТИсполнительКлиент.ОбработкаОшибки(ЮТОбщий.МетодНеДоступен("ЮТКомпонентыКлиент.ЗаписатьФайлRegistry")); + ЮТИсполнительСлужебныйКлиент.ОбработкаОшибки(ЮТИсключения.МетодНеДоступен("ЮТКомпонентыКлиент.ЗаписатьФайлRegistry")); Возврат; #Иначе Если ПараметрыТихойУстановки.ИзмененРеестр Тогда @@ -188,7 +188,7 @@ Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры) - ДанныеФайла = ЮТКомпонентыВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура); + ДанныеФайла = ЮТКомпонентыСлужебныйВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура); Если ЗаписатьВРеестр(Параметры.ДанныеРеестра, ДанныеФайла.ИмяФайла) Тогда Параметры.ИзмененРеестр = Истина; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" similarity index 85% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" index 3a4492e06..238264fce 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" @@ -1,6 +1,6 @@ - ЮТКомпонентыКлиент + ЮТКомпонентыСлужебныйКлиент ru Компоненты клиент diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262/Module.bsl" index 9877c8097..973ef484e 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\222\320\260\321\200\320\270\320\260\320\275\321\202\320\276\320\262/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ Вариант = Новый Структура(Реквизиты); Варианты.КоличествоРеквизитов = Вариант.Количество(); - ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), Варианты); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(КлючКонтекста(), Варианты); Возврат ЮТКонструкторВариантов; @@ -60,7 +60,7 @@ Параметр7 = Неопределено) Экспорт // BSLLS:MagicNumber-off // BSLLS:NumberOfValuesInStructureConstructor-off - Варианты = ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста()); + Варианты = ЮТКонтекстСлужебный.ЗначениеКонтекста(КлючКонтекста()); Если Варианты.КоличествоРеквизитов = 1 Тогда Вариант = Новый Структура(Варианты.Реквизиты, Параметр1); @@ -91,7 +91,7 @@ // Массив из Структура Функция СписокВариантов() Экспорт - Возврат ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста()).Варианты; + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(КлючКонтекста()).Варианты; КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 488135cfb..1639bbe78 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,30 +20,34 @@ Процедура Установить(Контекст, ИмяРеквизита, Значение) Экспорт - Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда - ТекущаяЗапись = ДанныеСтроки(Контекст); - Иначе - ТекущаяЗапись = Контекст.Данные; - КонецЕсли; + ОписаниеРеквизита(Контекст, ИмяРеквизита); // Проверка наличия реквизита + ТекущаяЗапись = ТекущаяЗапись(Контекст); ТекущаяЗапись.Вставить(ИмяРеквизита, Значение); КонецПроцедуры +Процедура УстановитьРеквизиты(Контекст, ЗначенияРеквизитов) Экспорт + + ТекущаяЗапись = ТекущаяЗапись(Контекст); + Для Каждого ЗначениеРеквизита Из ЗначенияРеквизитов Цикл + + ОписаниеРеквизита(Контекст, ЗначениеРеквизита.Ключ); + ТекущаяЗапись.Вставить(ЗначениеРеквизита.Ключ, ЗначениеРеквизита.Значение); + + КонецЦикла; + +КонецПроцедуры + Процедура Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, Знач ОграничениеТипа) Экспорт ЮТПроверкиСлужебный.ПроверитьТипПараметра(ОграничениеТипа, "Тип, ОписаниеТипов, Строка", "Фикция", "ЮТКонструкторТестовыхДанных", Истина); - Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда - ОписаниеРеквизита = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть][ИмяРеквизита]; - ТекущаяЗапись = ДанныеСтроки(Контекст); - Иначе - ОписаниеРеквизита = Контекст.Метаданные.Реквизиты[ИмяРеквизита]; - ТекущаяЗапись = Контекст.Данные; - КонецЕсли; + ТекущаяЗапись = ТекущаяЗапись(Контекст); + ОписаниеРеквизита = ОписаниеРеквизита(Контекст, ИмяРеквизита); Если ОграничениеТипа <> Неопределено Тогда - ПолноеИмяРеквизита = ЮТОбщий.ДобавитьСтроку(Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита, "."); + ПолноеИмяРеквизита = ЮТСтроки.ДобавитьСтроку(Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита, "."); ТипЗначения = ПересечениеТипов(ОписаниеРеквизита.Тип, ОграничениеТипа, ПолноеИмяРеквизита); Иначе ТипЗначения = ОписаниеРеквизита.Тип; @@ -56,13 +60,8 @@ Процедура ФикцияОбязательныхПолей(Контекст) Экспорт - Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда - Реквизиты = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть]; - ТекущаяЗапись = ДанныеСтроки(Контекст); - Иначе - Реквизиты = Контекст.Метаданные.Реквизиты; - ТекущаяЗапись = Контекст.Данные; - КонецЕсли; + Реквизиты = Реквизиты(Контекст); + ТекущаяЗапись = ТекущаяЗапись(Контекст); Для Каждого Элемент Из Реквизиты Цикл Реквизит = Элемент.Значение; @@ -84,11 +83,15 @@ КонецПроцедуры -Процедура ДобавитьСтроку(Контекст) Экспорт +Процедура ДобавитьСтроку(Контекст, ЗначенияРеквизитов) Экспорт Запись = Новый Структура(); ДанныеТабличнойЧасти(Контекст).Добавить(Запись); + Если ЗначенияРеквизитов <> Неопределено Тогда + УстановитьРеквизиты(Контекст, ЗначенияРеквизитов); + КонецЕсли; + КонецПроцедуры Процедура УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение = Неопределено) Экспорт @@ -103,7 +106,7 @@ ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства; ПараметрыЗаписи.ОбменДаннымиЗагрузка = ОбменДаннымиЗагрузка; - Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект); + Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект); ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка); @@ -113,7 +116,7 @@ Функция НовыйОбъект(Контекст) Экспорт - Возврат ЮТТестовыеДанныеВызовСервера.НовыйОбъект(Контекст.Менеджер, Контекст.Данные, Контекст.ДополнительныеСвойства); + Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.НовыйОбъект(Контекст.Менеджер, Контекст.Данные, Контекст.ДополнительныеСвойства); КонецФункции @@ -123,7 +126,7 @@ ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства; ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение; - Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект); + Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект); ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка); @@ -189,7 +192,7 @@ // Структура - Новый контекст конструктора: // * Менеджер - Произвольный // * Данные - Структура -// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектаМетаданных +// * Метаданные - см. ЮТМетаданные.СтруктураОписанияОбъектаМетаданных // * ТекущаяТабличнаяЧасть - Строка // * ДополнительныеСвойства - Структура Функция НовыйКонтекстКонструктора(Менеджер) Экспорт @@ -222,9 +225,9 @@ КонецЕсли; Если ТипОграничения = Тип("Тип") И ОписаниеТипов.СодержитТип(ОграничениеТипов) И ОграничениеТипов <> Тип("Неопределено") Тогда - Результат = ЮТОбщий.ЗначениеВМассиве(ОграничениеТипов); + Результат = ЮТКоллекции.ЗначениеВМассиве(ОграничениеТипов); ИначеЕсли ТипОграничения = Тип("ОписаниеТипов") Тогда - Результат = ЮТОбщий.ПересечениеМассивов(ОписаниеТипов.Типы(), ОграничениеТипов.Типы()); + Результат = ЮТКоллекции.ПересечениеМассивов(ОписаниеТипов.Типы(), ОграничениеТипов.Типы()); Иначе Результат = Неопределено; КонецЕсли; @@ -247,4 +250,43 @@ КонецФункции +Функция Реквизиты(Контекст) + + Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда + Возврат Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть]; + Иначе + Возврат Контекст.Метаданные.Реквизиты; + КонецЕсли; + +КонецФункции + +Функция ОписаниеРеквизита(Контекст, ИмяРеквизита) + + Реквизиты = Реквизиты(Контекст); + + Если НЕ Реквизиты.Свойство(ИмяРеквизита) Тогда + ИмяОсновнойТаблицы = ЮТМетаданные.НормализованноеИмяТаблицы(Контекст.Метаданные); + Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда + Пояснение = СтрШаблон("Табличная часть `%1.%2` не содержит реквизит `%3`", ИмяОсновнойТаблицы, Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита); + Иначе + Пояснение = СтрШаблон("`%1` не содержит реквизит `%2`", ИмяОсновнойТаблицы, ИмяРеквизита); + КонецЕсли; + + ВызватьИсключение Пояснение; + КонецЕсли; + + Возврат Реквизиты[ИмяРеквизита]; + +КонецФункции + +Функция ТекущаяЗапись(Контекст) + + Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда + Возврат ДанныеСтроки(Контекст); + Иначе + Возврат Контекст.Данные; + КонецЕсли; + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200.suppress" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200.suppress" deleted file mode 100644 index f1965587b..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 80% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index fac42bb52..ce8875bb8 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -25,8 +25,8 @@ #Если НЕ Клиент Тогда ВызватьИсключение "Метод `ИнициализироватьКонтекст` должен вызываться только с клиента"; #Иначе - ЮТКонтекстКлиент.ИнициализироватьКонтекст(); - ЮТКонтекстСервер.ИнициализироватьКонтекст(); + ЮТКонтекстСлужебныйКлиент.ИнициализироватьКонтекст(); + ЮТКонтекстСлужебныйВызовСервера.ИнициализироватьКонтекст(); ОбновитьПовторноИспользуемыеЗначения(); #КонецЕсли @@ -40,10 +40,10 @@ Функция ДанныеКонтекста() Экспорт #Если Клиент Тогда - Возврат ЮТКонтекстКлиент.ДанныеКонтекста(); + Возврат ЮТКонтекстСлужебныйКлиент.ДанныеКонтекста(); #Иначе //@skip-check constructor-function-return-section - Возврат ЮТКонтекстСервер.ДанныеКонтекста(); + Возврат ЮТКонтекстСлужебныйВызовСервера.ДанныеКонтекста(); #КонецЕсли КонецФункции @@ -60,7 +60,8 @@ #Если Клиент Тогда Если ПолучитьССервера Тогда - Возврат ЮТКонтекстСервер.ЗначениеКонтекста(ИмяРеквизита); + //@skip-check constructor-function-return-section + Возврат ЮТКонтекстСлужебныйВызовСервера.ЗначениеКонтекста(ИмяРеквизита); КонецЕсли; #КонецЕсли @@ -76,7 +77,7 @@ КонецЦикла; //@skip-check constructor-function-return-section - Возврат ЮТОбщий.ЗначениеСтруктуры(Объект, Ключи[Ключи.ВГраница()]); + Возврат ЮТКоллекции.ЗначениеСтруктуры(Объект, Ключи[Ключи.ВГраница()]); КонецФункции @@ -101,7 +102,7 @@ #Если НЕ Сервер Тогда Если УстановитьНаСервер Тогда - ЮТКонтекстСервер.УстановитьЗначениеКонтекста(ИмяРеквизита, Значение); + ЮТКонтекстСлужебныйВызовСервера.УстановитьЗначениеКонтекста(ИмяРеквизита, Значение); КонецЕсли; #КонецЕсли @@ -111,13 +112,17 @@ // Возвращает структуру, в которой можно хранить данные используемые в тесте // Данные живут в рамках одного теста, но доступны в обработчиках событий `ПередКаждымТестом` и `ПослеКаждогоТеста` // Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеКаждогоТеста` +// +// Параметры: +// ПолучитьССервера - Булево - Получить контекст с сервера +// // Возвращаемое значение: // - Структура - Контекст теста // - Неопределено - Если метод вызывается за рамками теста -Функция КонтекстТеста() Экспорт +Функция КонтекстТеста(ПолучитьССервера = Ложь) Экспорт //@skip-check constructor-function-return-section - Возврат ЗначениеКонтекста(ИмяКонтекстаТеста()); + Возврат ЗначениеКонтекста(ИмяКонтекстаТеста(), ПолучитьССервера); КонецФункции @@ -161,18 +166,6 @@ КонецФункции -// КонтекстОшибки -// Возвращает служебный контекст, содержит дополнительные детали ошибки теста -// -// Возвращаемое значение: -// Неопределено, Структура - Контекст ошибки, см. ЮТФабрика.ОписаниеКонтекстаОшибки -Функция КонтекстОшибки() Экспорт - - //@skip-check constructor-function-return-section - Возврат ЗначениеКонтекста(ИмяКонтекстаОшибки()); - -КонецФункции - // КонтекстПроверки // Возвращает служебный контекста, данные выполняемой проверки // Возвращаемое значение: @@ -198,7 +191,7 @@ // КонтекстЧитателя // Возвращает служебный контекста, данные используемые исполнителем тестов // Возвращаемое значение: -// см. ЮТФабрика.НовыйКонтекстИсполнения +// см. ЮТФабрикаСлужебный.НовыйКонтекстИсполнения Функция КонтекстИсполнения() Экспорт //@skip-check constructor-function-return-section @@ -210,9 +203,9 @@ // // Возвращаемое значение: // - Неопределено -// - См. ЮТФабрика.ОписаниеТестовогоМодуля -// - См. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// - См. ЮТФабрика.ОписаниеИсполняемогоТеста +// - См. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// - См. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// - См. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста Функция КонтекстИсполненияТекущегоУровня() Экспорт Уровни = ЮТФабрика.УровниИсполнения(); @@ -238,20 +231,6 @@ КонецФункции -// КонтекстОшибки -// Возвращает служебный контекст, содержит дополнительные детали ошибки теста -// Параметры: -// ПолучитьССервера - Булево - Получить значение из серверного контекста -// -// Возвращаемое значение: -// Неопределено, Массив из Строка- Детали ошибки -Функция КонтекстДеталиОшибки(ПолучитьССервера = Ложь) Экспорт - - //@skip-check constructor-function-return-section - Возврат ЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ПолучитьССервера); - -КонецФункции - Функция ОписаниеКонтекста() Экспорт Описание = Новый Структура; @@ -260,13 +239,6 @@ КонецФункции -Процедура УстановитьКонтекстОшибки() Экспорт - - ДанныеОшибки = ЮТФабрика.ОписаниеКонтекстаОшибки(); - УстановитьЗначениеКонтекста(ИмяКонтекстаОшибки(), ДанныеОшибки); - -КонецПроцедуры - Процедура УстановитьКонтекстУтверждений(Знач ДанныеКонтекста) Экспорт УстановитьЗначениеКонтекста(ИмяКонтекстаУтверждений(), ДанныеКонтекста); @@ -309,18 +281,12 @@ КонецПроцедуры -Процедура УстановитьКонтекстДеталиОшибки(Знач ДанныеКонтекста) Экспорт - - УстановитьЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ДанныеКонтекста); - -КонецПроцедуры - Процедура УдалитьКонтекст() Экспорт #Если Клиент Тогда - ЮТКонтекстКлиент.УдалитьКонтекст(); + ЮТКонтекстСлужебныйКлиент.УдалитьКонтекст(); #КонецЕсли - ЮТКонтекстСервер.УдалитьКонтекст(); + ЮТКонтекстСлужебныйВызовСервера.УдалитьКонтекст(); КонецПроцедуры @@ -328,12 +294,6 @@ #Область СлужебныеПроцедурыИФункции -Функция ИмяКонтекстаОшибки() - - Возврат "ДанныеОшибки"; - -КонецФункции - Функция ИмяКонтекстаУтверждений() Возврат "КонтекстУтверждения"; @@ -376,10 +336,4 @@ КонецФункции -Функция ИмяКонтекстаДеталиОшибки() - - Возврат "ДеталиОшибки"; - -КонецФункции - #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 89% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 9c64469db..27a63dc98 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТКонтекст + ЮТКонтекстСлужебный ru Контекст тестового движка diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 87% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index 4dd964da3..7911602e9 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Процедура ИнициализироватьКонтекст() Экспорт - Контекст = ЮТКонтекст.ОписаниеКонтекста(); + Контекст = ЮТКонтекстСлужебный.ОписаниеКонтекста(); АдресХранилища = ПоместитьВоВременноеХранилище(Контекст, Новый УникальныйИдентификатор()); ХранилищеОбщихНастроек.Сохранить(КлючНастроекКонтекста(), "АдресХранилища", АдресХранилища); @@ -48,13 +48,13 @@ // Значение - Произвольный - Новое значение реквизита/вложенного контекста Процедура УстановитьЗначениеКонтекста(Знач ИмяРеквизита, Знач Значение) Экспорт - ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяРеквизита, Значение); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяРеквизита, Значение); КонецПроцедуры Функция ЗначениеКонтекста(Знач ИмяРеквизита) Экспорт - Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяРеквизита); + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяРеквизита); КонецФункции @@ -68,7 +68,7 @@ Если Кэшировать Тогда - Возврат ЮТПовторногоИспользования.АдресСерверногоКонтекста(); + Возврат ЮТСлужебныйПовторногоИспользования.АдресСерверногоКонтекста(); Иначе diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 81% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 26636c802..68270a7aa 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТКонтекстСервер + ЮТКонтекстСлужебныйВызовСервера ru Контекст (сервер) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" similarity index 86% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" index 7ff8718bc..3ca7c41df 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Процедура ИнициализироватьКонтекст() Экспорт - ЮТДанныеКонтекста = ЮТКонтекст.ОписаниеКонтекста(); // BSLLS:UnusedLocalVariable-off + ЮТДанныеКонтекста = ЮТКонтекстСлужебный.ОписаниеКонтекста(); // BSLLS:UnusedLocalVariable-off КонецПроцедуры diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" similarity index 85% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" index cb3a5ef3a..5044a7742 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\232\320\273\320\270\320\265\320\275\321\202.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" @@ -1,6 +1,6 @@ - ЮТКонтекстКлиент + ЮТКонтекстСлужебныйКлиент ru Контекст (клиент) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\242\320\265\321\201\321\202\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\242\320\265\321\201\321\202\320\260/Module.bsl" index 16487d70d..e11cbf705 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\242\320\265\321\201\321\202\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202\320\242\320\265\321\201\321\202\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -27,17 +27,17 @@ // Произвольный - Сохраненное в контексте значение Функция Значение(ИмяЗначения) Экспорт - Уровень = ЮТКонтекст.КонтекстИсполнения().Уровень; + Уровень = ЮТКонтекстСлужебный.КонтекстИсполнения().Уровень; Уровни = ЮТФабрика.УровниИсполнения(); - КонтекстТеста = ЮТКонтекст.КонтекстТеста(); + КонтекстТеста = ЮТКонтекстСлужебный.КонтекстТеста(); Если Уровень = Уровни.Тест И КонтекстТеста <> Неопределено И КонтекстТеста.Свойство(ИмяЗначения) Тогда Возврат КонтекстТеста[ИмяЗначения]; КонецЕсли; - КонтекстНабора = ЮТКонтекст.КонтекстНабора(); + КонтекстНабора = ЮТКонтекстСлужебный.КонтекстНабора(); Если (Уровень = Уровни.НаборТестов ИЛИ Уровень = Уровни.Тест) И КонтекстНабора <> Неопределено И КонтекстНабора.Свойство(ИмяЗначения) Тогда @@ -45,7 +45,7 @@ КонецЕсли; - КонтекстМодуля = ЮТКонтекст.КонтекстМодуля(); + КонтекстМодуля = ЮТКонтекстСлужебный.КонтекстМодуля(); Если (Уровень = Уровни.Модуль ИЛИ Уровень = Уровни.Тест ИЛИ Уровень = Уровни.НаборТестов) И КонтекстМодуля <> Неопределено И КонтекстМодуля.Свойство(ИмяЗначения) Тогда @@ -67,7 +67,7 @@ // Значение - Произвольный Процедура УстановитьЗначение(ИмяЗначения, Значение) Экспорт - Уровень = ЮТКонтекст.КонтекстИсполнения().Уровень; + Уровень = ЮТКонтекстСлужебный.КонтекстИсполнения().Уровень; Уровни = ЮТФабрика.УровниИсполнения(); Контекст = ТекущийКонтекст(); @@ -75,11 +75,11 @@ Если Контекст = Неопределено Тогда Если Уровень = Уровни.Тест Тогда - ЮТКонтекст.УстановитьКонтекстТеста(); + ЮТКонтекстСлужебный.УстановитьКонтекстТеста(); ИначеЕсли Уровень = Уровни.НаборТестов Тогда - ЮТКонтекст.УстановитьКонтекстНабораТестов(); + ЮТКонтекстСлужебный.УстановитьКонтекстНабораТестов(); ИначеЕсли Уровень = Уровни.Модуль Тогда - ЮТКонтекст.УстановитьКонтекстМодуля(); + ЮТКонтекстСлужебный.УстановитьКонтекстМодуля(); Иначе ВызватьИсключение СтрШаблон("Неизвестный уровень исполнения `%1`", Уровень); КонецЕсли; @@ -98,20 +98,20 @@ // Неопределено, Структура, Произвольный - Текущий контекст Функция ТекущийКонтекст() Экспорт - Уровень = ЮТКонтекст.КонтекстИсполнения().Уровень; + Уровень = ЮТКонтекстСлужебный.КонтекстИсполнения().Уровень; Уровни = ЮТФабрика.УровниИсполнения(); Если Уровень = Уровни.Тест Тогда - Контекст = ЮТКонтекст.КонтекстТеста(); + Контекст = ЮТКонтекстСлужебный.КонтекстТеста(); ИначеЕсли Уровень = Уровни.НаборТестов Тогда - Контекст = ЮТКонтекст.КонтекстНабора(); + Контекст = ЮТКонтекстСлужебный.КонтекстНабора(); ИначеЕсли Уровень = Уровни.Модуль Тогда - Контекст = ЮТКонтекст.КонтекстМодуля(); + Контекст = ЮТКонтекстСлужебный.КонтекстМодуля(); Иначе diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 000000000..84ee7fb97 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,84 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ДобавитьСообщение(Текст) Экспорт + + ДобавитьЗапись("[INF] " + Текст); + +КонецПроцедуры + +Процедура ДобавитьОшибку(Текст) Экспорт + + ДобавитьЗапись("[ERR] " + Текст); + +КонецПроцедуры + +Процедура ДобавитьПредупреждение(Текст) Экспорт + + ДобавитьЗапись("[WRN] " + Текст); + +КонецПроцедуры + +Функция Записи() Экспорт + + Если ЮТест.КонтекстТеста() = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Лог = ЮТКоллекции.ЗначениеСтруктуры(ЮТест.КонтекстТеста(), "Лог"); +#Если Сервер Тогда + Возврат Лог; +#Иначе + СерверныйКонтекст = ЮТКонтекстСлужебный.КонтекстТеста(Истина); + СерверныйЛог = ЮТКоллекции.ЗначениеСтруктуры(СерверныйКонтекст, "Лог"); + + Если Лог = Неопределено Тогда + Лог = СерверныйЛог; + ИначеЕсли СерверныйЛог <> Неопределено Тогда + ЮТКоллекции.ДополнитьМассив(Лог, СерверныйЛог); + КонецЕсли; +#КонецЕсли + + Возврат Лог; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ДобавитьЗапись(Текст) + + Если ЮТест.КонтекстТеста() = Неопределено Тогда + Возврат; + КонецЕсли; + + Ошибки = Неопределено; + + Если НЕ ЮТест.КонтекстТеста().Свойство("Лог", Ошибки) Тогда + Ошибки = Новый Массив(); + ЮТест.КонтекстТеста().Вставить("Лог", Ошибки); + КонецЕсли; + + Ошибки.Добавить(Текст); + +КонецПроцедуры + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 000000000..bc94391e8 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\233\320\276\320\263\320\230\321\201\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ЮТЛогИсполненияТестаСлужебный + + ru + Лог исполнения теста служебный + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Module.bsl" index e69106b23..1faca3303 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,418 +19,53 @@ #Область ПрограммныйИнтерфейс // Выводит отладочное сообщение -// +// // Параметры: // Сообщение - Строка - Сообщение Процедура Отладка(Сообщение) Экспорт - Записать("DBG", Сообщение, 0); + ЮТЛогированиеСлужебный.Записать("DBG", Сообщение, 0); КонецПроцедуры // Выводит информационное сообщение -// +// // Параметры: // Сообщение - Строка - Сообщение Процедура Информация(Сообщение) Экспорт - Записать("INF", Сообщение, 1); + ЮТЛогированиеСлужебный.Записать("INF", Сообщение, 10); КонецПроцедуры -// Выводит сообщение об ошибке -// +// Выводит предупреждение +// // Параметры: // Сообщение - Строка - Сообщение -Процедура Ошибка(Сообщение) Экспорт - - Записать("ERR", Сообщение, 2); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -Функция УровниЛога() Экспорт - - Возврат Новый ФиксированнаяСтруктура("Отладка, Информация, Ошибка", "debug", "info", "error"); - -КонецФункции - -Процедура ВывестиСерверныеСообщения() Экспорт - -#Если Клиент Тогда - Контекст = Контекст(); - Если Контекст = Неопределено ИЛИ НЕ Контекст.Включено ИЛИ Контекст.ФайлЛогаДоступенНаСервере Тогда - Возврат; - КонецЕсли; - - Сообщения = ЮТЛогированиеВызовСервера.НакопленныеСообщенияЛогирования(Истина); - ЗаписатьСообщения(Контекст, Сообщения); -#Иначе - ВызватьИсключение "Метод вывода серверных сообщений в лог должен вызываться с клиента"; -#КонецЕсли - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область ОбработчикиСобытий - -// Инициализация. -// -// Параметры: -// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска -Процедура Инициализация(ПараметрыЗапуска) Экспорт - - УровниЛога = УровниЛога(); - - ДанныеКонтекста = НовыйДанныеКонтекста(); - ДанныеКонтекста.ФайлЛога = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "file"); - ДанныеКонтекста.ВыводВКонсоль = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "console", Ложь); - ДанныеКонтекста.Включено = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "enable", Неопределено); - УровеньЛога = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "level", УровниЛога.Отладка); - - Если ДанныеКонтекста.Включено = Неопределено Тогда - ДанныеКонтекста.Включено = ДанныеКонтекста.ВыводВКонсоль ИЛИ ЗначениеЗаполнено(ДанныеКонтекста.ФайлЛога); - КонецЕсли; - - Если НЕ ДанныеКонтекста.Включено Тогда - ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования(), ДанныеКонтекста, Истина); - Возврат; - КонецЕсли; - - Если СтрСравнить(УровеньЛога, УровниЛога.Ошибка) = 0 Тогда - ДанныеКонтекста.УровеньЛога = 2; - ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Информация) = 0 Тогда - ДанныеКонтекста.УровеньЛога = 1; - Иначе - ДанныеКонтекста.УровеньЛога = 0; - КонецЕсли; - - ЗначениеПроверки = Строка(Новый УникальныйИдентификатор()); - ЗаписатьСообщения(ДанныеКонтекста, ЮТОбщий.ЗначениеВМассиве(ЗначениеПроверки), Ложь); - - ДанныеКонтекста.ФайлЛогаДоступенНаСервере = ЮТЛогированиеВызовСервера.ФайлЛогаДоступенНаСервере(ДанныеКонтекста.ФайлЛога, ЗначениеПроверки); - - ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования(), ДанныеКонтекста, Истина); - - Разделитель = "------------------------------------------------------"; - ЗаписатьСообщения(ДанныеКонтекста, ЮТОбщий.ЗначениеВМассиве(Разделитель), Ложь); - - Информация("Старт"); - -КонецПроцедуры - -// Обработка события "ПередЧтениеСценариев" -Процедура ПередЧтениеСценариев() Экспорт - - Информация("Загрузка сценариев"); - -КонецПроцедуры - -// Перед чтением сценариев модуля. -// -// Параметры: -// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля -// ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля -Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт - - Информация(СтрШаблон("Загрузка сценариев модуля `%1`", МетаданныеМодуля.Имя)); - -КонецПроцедуры - -// Перед чтением сценариев модуля. -// -// Параметры: -// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля -// ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля -Процедура ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт - - Информация(СтрШаблон("Загрузка сценариев модуля завершена `%1`", МетаданныеМодуля.Имя)); - -КонецПроцедуры - -// Обработка события "ПослеЧтенияСценариев" -// Параметры: -// Сценарии - Массив из см. ЮТФабрика.ОписаниеТестовогоМодуля - Набор описаний тестовых модулей, которые содержат информацию о запускаемых тестах -Процедура ПослеЧтенияСценариев(Сценарии) Экспорт - - Информация("Загрузка сценариев завершена."); - -КонецПроцедуры - -// Обработка события "ПослеФормированияИсполняемыхНаборовТестов" -// Параметры: -// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов -Процедура ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) Экспорт - - Количество = 0; - - Для Каждого ТестовыйМодуль Из ИсполняемыеТестовыеМодули Цикл - - Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл - - Если Набор.Выполнять Тогда - ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество()); - КонецЕсли; - - КонецЦикла; - - КонецЦикла; - - ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".ОбщееКоличествоТестов", Количество, Истина); - -КонецПроцедуры - -// Перед всеми тестами. -// -// Параметры: -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -Процедура ПередВсемиТестами(ОписаниеСобытия) Экспорт - -#Если Клиент Тогда - ПрогрессКлиент = Контекст().КоличествоВыполненныхТестов; - ПрогрессСервер = ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Истина); - - Если ПрогрессКлиент < ПрогрессСервер Тогда - Контекст().КоличествоВыполненныхТестов = ПрогрессСервер; - КонецЕсли; -#КонецЕсли - Информация(СтрШаблон("Запуск тестов модуля `%1`", ОписаниеСобытия.Модуль.МетаданныеМодуля.ПолноеИмя)); - -КонецПроцедуры - -// Перед тестовым набором. -// -// Параметры: -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -Процедура ПередТестовымНабором(ОписаниеСобытия) Экспорт - - Информация(СтрШаблон("Запуск тестов набора `%1`", ОписаниеСобытия.Набор.Имя)); - -КонецПроцедуры - -// Перед каждым тестом. -// -// Параметры: -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт - - Информация(СтрШаблон("Запуск теста `%1`", ОписаниеСобытия.Тест.Имя)); - -КонецПроцедуры - -// Перед каждым тестом. -// -// Параметры: -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт +Процедура Предостережение(Сообщение) Экспорт - Контекст = Контекст(); - Если НЕ ЛогированиеВключено(Контекст) Тогда - Возврат; - КонецЕсли; - - ЮТОбщий.Инкремент(Контекст.КоличествоВыполненныхТестов); - Информация(СтрШаблон("%1 Завершен тест `%2`", Прогресс(), ОписаниеСобытия.Тест.Имя)); + ЮТЛогированиеСлужебный.Записать("WRN", Сообщение, 20); КонецПроцедуры -// Перед каждым тестом. -// -// Параметры: -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -Процедура ПослеТестовогоНабора(ОписаниеСобытия) Экспорт - - Информация(СтрШаблон("Завершен тестовый набор `%1`", ОписаниеСобытия.Набор.Имя)); - -КонецПроцедуры - -// Перед каждым тестом. -// +// Выводит сообщение об ошибке +// // Параметры: -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -Процедура ПослеВсехТестов(ОписаниеСобытия) Экспорт - - Контекст = Контекст(); - Если НЕ ЛогированиеВключено(Контекст) Тогда - Возврат; - КонецЕсли; -#Если Клиент Тогда - ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Контекст.КоличествоВыполненныхТестов, Истина); -#КонецЕсли +// Сообщение - Строка - Сообщение +Процедура Ошибка(Сообщение) Экспорт - Информация(СтрШаблон("Завершен модуль `%1`", ОписаниеСобытия.Модуль.МетаданныеМодуля.ПолноеИмя)); + ЮТЛогированиеСлужебный.Записать("ERR", Сообщение, 99); КонецПроцедуры #КонецОбласти -#Область Контекст - -// Контекст. -// -// Возвращаемое значение: -// см. НовыйДанныеКонтекста -Функция Контекст() - - Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекстаЛогирования()); - -КонецФункции - -Функция ИмяКонтекстаЛогирования() - - Возврат "КонтекстЛогирования"; - -КонецФункции - -// Новый данные контекста. -// -// Возвращаемое значение: -// Структура - Новый данные контекста: -// * Включено - Булево - Логирование включено -// * ФайлЛога - Неопределено - Файл вывода лога -// * ВыводВКонсоль- Булево - Вывод лога в консоль -// * ФайлЛогаДоступенНаСервере - Булево - Файл лога доступен на сервере -// * НакопленныеЗаписи - Массив из Строка - Буфер для серверных сообщений -// * ОбщееКоличествоТестов - Число -// * КоличествоВыполненныхТестов - Число -// * УровеньЛога - Число - Уровень логирования -Функция НовыйДанныеКонтекста() - - ДанныеКонтекста = Новый Структура(); - ДанныеКонтекста.Вставить("Включено", Ложь); - ДанныеКонтекста.Вставить("ФайлЛога", Неопределено); - ДанныеКонтекста.Вставить("ВыводВКонсоль", Ложь); - ДанныеКонтекста.Вставить("ФайлЛогаДоступенНаСервере", Ложь); - ДанныеКонтекста.Вставить("НакопленныеЗаписи", Новый Массив()); - ДанныеКонтекста.Вставить("ОбщееКоличествоТестов", 0); - ДанныеКонтекста.Вставить("КоличествоВыполненныхТестов", 0); - ДанныеКонтекста.Вставить("УровеньЛога", 0); - - Возврат ДанныеКонтекста; - -КонецФункции - -#КонецОбласти - -#Область Запись - -Функция ЛогированиеВключено(Знач Контекст = Неопределено, Приоритет = Неопределено) - - Если Контекст = Неопределено Тогда - Контекст = Контекст(); - КонецЕсли; - - Возврат Контекст <> Неопределено И Контекст.Включено И (Приоритет = Неопределено ИЛИ Контекст.УровеньЛога <= Приоритет); - -КонецФункции - -Функция НакопленныеСообщенияЛогирования(Очистить = Ложь) Экспорт - - Контекст = Контекст(); - - Сообщения = Контекст.НакопленныеЗаписи; - - Если Очистить Тогда - Контекст.НакопленныеЗаписи = Новый Массив(); - КонецЕсли; - - Возврат Сообщения; - -КонецФункции - -Процедура Записать(УровеньЛога, Сообщение, Приоритет) - - Контекст = Контекст(); - Если НЕ ЛогированиеВключено(Контекст, Приоритет) Тогда - Возврат; - КонецЕсли; - -#Если Клиент Тогда - КонтекстИсполнения = "Клиент"; -#Иначе - КонтекстИсполнения = "Сервер"; -#КонецЕсли - Текст = СтрШаблон("%1 [%2][%3]: %4", ЮТОбщий.ПредставлениеУниверсальнойДата(), КонтекстИсполнения, УровеньЛога, Сообщение); -#Если Клиент Тогда - ЗаписатьСообщения(Контекст, ЮТОбщий.ЗначениеВМассиве(Текст)); -#Иначе - Если Контекст.ФайлЛогаДоступенНаСервере Тогда - ЗаписатьСообщения(Контекст, ЮТОбщий.ЗначениеВМассиве(Текст)); - Иначе - Контекст.НакопленныеЗаписи.Добавить(Текст); - КонецЕсли; -#КонецЕсли - -КонецПроцедуры - -Процедура ЗаписатьСообщения(Контекст, Сообщения, Дописывать = Истина) - -#Если ВебКлиент Тогда - ВызватьИсключение "Метод записи лога не доступен в web-клиенте"; -#Иначе - - Если Контекст.ВыводВКонсоль Тогда - ЗаписатьЛогВКонсоль(Сообщения); - КонецЕсли; - - Если ЗначениеЗаполнено(Контекст.ФайлЛога) Тогда - ЗаписатьЛогВФайл(Контекст.ФайлЛога, Сообщения, Дописывать); - КонецЕсли; - -#КонецЕсли - -КонецПроцедуры - -Процедура ЗаписатьЛогВФайл(ФайлЛога, Сообщения, Дописывать = Истина) - -#Если ВебКлиент Тогда - ВызватьИсключение "Метод записи лога не доступен в web-клиенте"; -#Иначе - - Запись = Новый ЗаписьТекста(ФайлЛога, КодировкаТекста.UTF8, , Дописывать); - - Для Каждого Сообщение Из Сообщения Цикл - Запись.ЗаписатьСтроку(Сообщение); - КонецЦикла; - - Запись.Закрыть(); -#КонецЕсли - -КонецПроцедуры - -Процедура ЗаписатьЛогВКонсоль(Сообщения) - -#Если ВебКлиент Тогда - ВызватьИсключение "Метод записи лога не доступен в web-клиенте"; -#Иначе - - //@skip-check empty-except-statement - Попытка - Для Каждого Сообщение Из Сообщения Цикл - ЮТОбщий.ВывестиВКонсоль(Сообщение); - КонецЦикла; - Исключение - // Игнорируем ошибку - КонецПопытки; -#КонецЕсли - -КонецПроцедуры +#Область СлужебныйПрограммныйИнтерфейс -Функция Прогресс() - - Контекст = Контекст(); - Прогресс = Окр(100 * Контекст.КоличествоВыполненныхТестов / Контекст.ОбщееКоличествоТестов, 0); +Функция УровниЛога() Экспорт - Возврат СтрШаблон("%1%% (%2/%3)", Прогресс, Контекст.КоличествоВыполненныхТестов, Контекст.ОбщееКоличествоТестов); + Возврат Новый ФиксированнаяСтруктура("Отладка, Информация, Предупреждение, Ошибка", "debug", "info", "warning", "error"); КонецФункции #КонецОбласти - -#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 000000000..51d5db8ff --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,395 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура Записать(УровеньЛога, Сообщение, Приоритет) Экспорт + + Контекст = Контекст(); + Если НЕ ЛогированиеВключено(Контекст, Приоритет) Тогда + Возврат; + КонецЕсли; + +#Если Клиент Тогда + КонтекстИсполнения = "Клиент"; +#Иначе + КонтекстИсполнения = "Сервер"; +#КонецЕсли + Текст = СтрШаблон("%1 [%2][%3]: %4", ЮТОбщий.ПредставлениеУниверсальнойДата(), КонтекстИсполнения, УровеньЛога, Сообщение); +#Если Клиент Тогда + ЗаписатьСообщения(Контекст, ЮТКоллекции.ЗначениеВМассиве(Текст)); +#Иначе + Если Контекст.ФайлЛогаДоступенНаСервере Тогда + ЗаписатьСообщения(Контекст, ЮТКоллекции.ЗначениеВМассиве(Текст)); + Иначе + Контекст.НакопленныеЗаписи.Добавить(Текст); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +Процедура ВывестиСерверныеСообщения() Экспорт + +#Если Клиент Тогда + Контекст = Контекст(); + Если Контекст = Неопределено ИЛИ НЕ Контекст.Включено ИЛИ Контекст.ФайлЛогаДоступенНаСервере Тогда + Возврат; + КонецЕсли; + + Сообщения = ЮТЛогированиеСлужебныйВызовСервера.НакопленныеСообщенияЛогирования(Истина); + ЗаписатьСообщения(Контекст, Сообщения); +#Иначе + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ВывестиСерверныеСообщения"); +#КонецЕсли + +КонецПроцедуры + +Функция НакопленныеСообщенияЛогирования(Очистить = Ложь) Экспорт + + Контекст = Контекст(); + + Сообщения = Контекст.НакопленныеЗаписи; + + Если Очистить Тогда + Контекст.НакопленныеЗаписи = Новый Массив(); + КонецЕсли; + + Возврат Сообщения; + +КонецФункции + +#Область ОбработчикиСобытий + +// Инициализация. +// +// Параметры: +// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска +Процедура Инициализация(ПараметрыЗапуска) Экспорт + + УровниЛога = ЮТЛогирование.УровниЛога(); + + ДанныеКонтекста = НовыйДанныеКонтекста(); + ДанныеКонтекста.ФайлЛога = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "file"); + ДанныеКонтекста.ВыводВКонсоль = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "console", Ложь); + ДанныеКонтекста.Включено = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "enable", Неопределено); + УровеньЛога = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "level", УровниЛога.Отладка); + + Если ДанныеКонтекста.Включено = Неопределено Тогда + ДанныеКонтекста.Включено = ДанныеКонтекста.ВыводВКонсоль ИЛИ ЗначениеЗаполнено(ДанныеКонтекста.ФайлЛога); + КонецЕсли; + + Если НЕ ДанныеКонтекста.Включено Тогда + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования(), ДанныеКонтекста, Истина); + Возврат; + КонецЕсли; + + Если СтрСравнить(УровеньЛога, УровниЛога.Ошибка) = 0 Тогда + ДанныеКонтекста.УровеньЛога = 99; + ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Информация) = 0 Тогда + ДанныеКонтекста.УровеньЛога = 10; + ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Предупреждение) = 0 Тогда + ДанныеКонтекста.УровеньЛога = 20; + Иначе + ДанныеКонтекста.УровеньЛога = 0; + КонецЕсли; + + ЗначениеПроверки = Строка(Новый УникальныйИдентификатор()); + ЗаписатьСообщения(ДанныеКонтекста, ЮТКоллекции.ЗначениеВМассиве(ЗначениеПроверки), Ложь); + + ДанныеКонтекста.ФайлЛогаДоступенНаСервере = ЮТЛогированиеСлужебныйВызовСервера.ФайлЛогаДоступенНаСервере(ДанныеКонтекста.ФайлЛога, ЗначениеПроверки); + + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования(), ДанныеКонтекста, Истина); + + Разделитель = "------------------------------------------------------"; + ЗаписатьСообщения(ДанныеКонтекста, ЮТКоллекции.ЗначениеВМассиве(Разделитель), Ложь); + + ЮТЛогирование.Информация("Старт"); + +КонецПроцедуры + +// Обработка события "ПередЧтениеСценариев" +Процедура ПередЧтениеСценариев() Экспорт + + ЮТЛогирование.Информация("Загрузка сценариев"); + +КонецПроцедуры + +// Перед чтением сценариев модуля. +// +// Параметры: +// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля +Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт + + ЮТЛогирование.Информация(СтрШаблон("Загрузка сценариев модуля `%1`", МетаданныеМодуля.Имя)); + +КонецПроцедуры + +// Перед чтением сценариев модуля. +// +// Параметры: +// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля +Процедура ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт + + ЮТЛогирование.Информация(СтрШаблон("Загрузка сценариев модуля завершена `%1`", МетаданныеМодуля.Имя)); + +КонецПроцедуры + +// Обработка события "ПослеЧтенияСценариев" +// Параметры: +// Сценарии - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля - Набор описаний тестовых модулей, которые содержат информацию о запускаемых тестах +Процедура ПослеЧтенияСценариев(Сценарии) Экспорт + + ЮТЛогирование.Информация("Загрузка сценариев завершена."); + +КонецПроцедуры + +// Обработка события "ПослеФормированияИсполняемыхНаборовТестов" +// Параметры: +// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов +Процедура ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) Экспорт + + Количество = 0; + + Для Каждого ТестовыйМодуль Из ИсполняемыеТестовыеМодули Цикл + + Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл + + Если Набор.Выполнять Тогда + ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество()); + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".ОбщееКоличествоТестов", Количество, Истина); + +КонецПроцедуры + +// Перед всеми тестами. +// +// Параметры: +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +Процедура ПередВсемиТестами(ОписаниеСобытия) Экспорт + +#Если Клиент Тогда + Контекст = Контекст(); + ПрогрессКлиент = Контекст.КоличествоВыполненныхТестов; + ПрогрессСервер = ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Истина); + + Если ПрогрессКлиент < ПрогрессСервер Тогда + Контекст.КоличествоВыполненныхТестов = ПрогрессСервер; + КонецЕсли; +#КонецЕсли + ЮТЛогирование.Информация(СтрШаблон("Запуск тестов модуля `%1`", ОписаниеСобытия.Модуль.МетаданныеМодуля.ПолноеИмя)); + +КонецПроцедуры + +// Перед тестовым набором. +// +// Параметры: +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +Процедура ПередТестовымНабором(ОписаниеСобытия) Экспорт + + ЮТЛогирование.Информация(СтрШаблон("Запуск тестов набора `%1`", ОписаниеСобытия.Набор.Имя)); + +КонецПроцедуры + +// Перед каждым тестом. +// +// Параметры: +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт + + ЮТЛогирование.Информация(СтрШаблон("Запуск теста `%1`", ОписаниеСобытия.Тест.Имя)); + +КонецПроцедуры + +// Перед каждым тестом. +// +// Параметры: +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт + + Контекст = Контекст(); + Если НЕ ЛогированиеВключено(Контекст) Тогда + Возврат; + КонецЕсли; + + ЮТОбщий.Инкремент(Контекст.КоличествоВыполненныхТестов); + ЮТЛогирование.Информация(СтрШаблон("%1 Завершен тест `%2`", Прогресс(), ОписаниеСобытия.Тест.Имя)); + +КонецПроцедуры + +// Перед каждым тестом. +// +// Параметры: +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +Процедура ПослеТестовогоНабора(ОписаниеСобытия) Экспорт + + ЮТЛогирование.Информация(СтрШаблон("Завершен тестовый набор `%1`", ОписаниеСобытия.Набор.Имя)); + +КонецПроцедуры + +// Перед каждым тестом. +// +// Параметры: +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +Процедура ПослеВсехТестов(ОписаниеСобытия) Экспорт + + Контекст = Контекст(); + Если НЕ ЛогированиеВключено(Контекст) Тогда + Возврат; + КонецЕсли; +#Если Клиент Тогда + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Контекст.КоличествоВыполненныхТестов, Истина); +#КонецЕсли + + ЮТЛогирование.Информация(СтрШаблон("Завершен модуль `%1`", ОписаниеСобытия.Модуль.МетаданныеМодуля.ПолноеИмя)); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Запись + +Функция ЛогированиеВключено(Знач Контекст = Неопределено, Приоритет = Неопределено) + + Если Контекст = Неопределено Тогда + Контекст = Контекст(); + КонецЕсли; + + Возврат Контекст <> Неопределено И Контекст.Включено И (Приоритет = Неопределено ИЛИ Контекст.УровеньЛога <= Приоритет); + +КонецФункции + +Процедура ЗаписатьСообщения(Контекст, Сообщения, Дописывать = Истина) + +#Если ВебКлиент Тогда + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЗаписатьСообщения"); +#Иначе + Если Контекст.ВыводВКонсоль Тогда + ЗаписатьЛогВКонсоль(Сообщения); + КонецЕсли; + + Если ЗначениеЗаполнено(Контекст.ФайлЛога) Тогда + ЗаписатьЛогВФайл(Контекст.ФайлЛога, Сообщения, Дописывать); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +Процедура ЗаписатьЛогВФайл(ФайлЛога, Сообщения, Дописывать = Истина) + +#Если ВебКлиент Тогда + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЗаписатьЛогВФайл"); +#Иначе + Запись = Новый ЗаписьТекста(ФайлЛога, КодировкаТекста.UTF8, , Дописывать); + + Для Каждого Сообщение Из Сообщения Цикл + Запись.ЗаписатьСтроку(Сообщение); + КонецЦикла; + + Запись.Закрыть(); +#КонецЕсли + +КонецПроцедуры + +Процедура ЗаписатьЛогВКонсоль(Сообщения) + +#Если ВебКлиент Тогда + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЗаписатьЛогВКонсоль"); +#Иначе + //@skip-check empty-except-statement + Попытка + Для Каждого Сообщение Из Сообщения Цикл + ЮТОбщий.ВывестиВКонсоль(Сообщение); + КонецЦикла; + Исключение + // Игнорируем ошибку + КонецПопытки; +#КонецЕсли + +КонецПроцедуры + +Функция Прогресс() + + Контекст = Контекст(); + Прогресс = Окр(100 * Контекст.КоличествоВыполненныхТестов / Контекст.ОбщееКоличествоТестов, 0); + + Возврат СтрШаблон("%1%% (%2/%3)", Прогресс, Контекст.КоличествоВыполненныхТестов, Контекст.ОбщееКоличествоТестов); + +КонецФункции + +#КонецОбласти + +#Область Контекст + +// Контекст. +// +// Возвращаемое значение: +// см. НовыйДанныеКонтекста +Функция Контекст() + + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяКонтекстаЛогирования()); + +КонецФункции + +Функция ИмяКонтекстаЛогирования() + + Возврат "КонтекстЛогирования"; + +КонецФункции + +// Новый данные контекста. +// +// Возвращаемое значение: +// Структура - Новый данные контекста: +// * Включено - Булево - Логирование включено +// * ФайлЛога - Неопределено - Файл вывода лога +// * ВыводВКонсоль- Булево - Вывод лога в консоль +// * ФайлЛогаДоступенНаСервере - Булево - Файл лога доступен на сервере +// * НакопленныеЗаписи - Массив из Строка - Буфер для серверных сообщений +// * ОбщееКоличествоТестов - Число +// * КоличествоВыполненныхТестов - Число +// * УровеньЛога - Число - Уровень логирования +Функция НовыйДанныеКонтекста() + + ДанныеКонтекста = Новый Структура(); + ДанныеКонтекста.Вставить("Включено", Ложь); + ДанныеКонтекста.Вставить("ФайлЛога", Неопределено); + ДанныеКонтекста.Вставить("ВыводВКонсоль", Ложь); + ДанныеКонтекста.Вставить("ФайлЛогаДоступенНаСервере", Ложь); + ДанныеКонтекста.Вставить("НакопленныеЗаписи", Новый Массив()); + ДанныеКонтекста.Вставить("ОбщееКоличествоТестов", 0); + ДанныеКонтекста.Вставить("КоличествоВыполненныхТестов", 0); + ДанныеКонтекста.Вставить("УровеньЛога", 0); + + Возврат ДанныеКонтекста; + +КонецФункции + +#КонецОбласти + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 000000000..0aed12e26 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ЮТЛогированиеСлужебный + + ru + Логирование служебный + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 88% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index fb73b8d57..e22c87873 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Функция НакопленныеСообщенияЛогирования(Знач Очистить = Ложь) Экспорт - Возврат ЮТЛогирование.НакопленныеСообщенияЛогирования(Очистить); + Возврат ЮТЛогированиеСлужебный.НакопленныеСообщенияЛогирования(Очистить); КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 80% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 3d1561cd2..de21ef596 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТЛогированиеВызовСервера + ЮТЛогированиеСлужебныйВызовСервера ru Логирование (вызов сервера) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" index b4e9ea168..714a1022a 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" @@ -16,7 +16,7 @@ // //©///////////////////////////////////////////////////////////////////////////©// -#Область СлужебныйПрограммныйИнтерфейс +#Область ПрограммныйИнтерфейс // Модули подсистемы. // Возвращает список модулей подсистемы @@ -29,7 +29,7 @@ // Массив из Строка - Имена модулей входящих в подсистему Функция МодулиПодсистемы(ИмяПодсистемы, Серверные = Истина, Клиентские = Истина) Экспорт - Возврат ЮТМетаданныеПовтИсп.МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские); + Возврат ЮТМетаданныеСлужебныйПовтИсп.МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские); КонецФункции @@ -39,23 +39,20 @@ // Значение - ОбъектМетаданных // - Тип - Тип объекта информационной базы // - Строка - Полное имя объекта метаданных -// - см. ОписаниеОбъектаМетаданных +// - см. СтруктураОписанияОбъектаМетаданных // - Произвольный - Объект информационной базы // // Возвращаемое значение: -// Структура - Описание менеджера: -// * ОписаниеТипа - см. ЮТМетаданныеСервер.ОписаниеТипаМетаданных -// * Реквизиты - Структура из см. ЮТФабрика.ОписаниеРеквизита -// * ТабличныеЧасти - Структура из Структура - +// см. СтруктураОписанияОбъектаМетаданных Функция ОписаниеОбъектаМетаданных(Знач Значение) Экспорт - ТипЗначения = ТипЗнч(Значение); - - Если ТипЗначения = Тип("Структура") И ЭтоОписаниеОбъектаМетаданных(Значение) Тогда + Если ЮТМетаданныеСлужебный.ЭтоОписаниеОбъектаМетаданных(Значение) Тогда //@skip-check constructor-function-return-section Возврат Значение; КонецЕсли; + ТипЗначения = ТипЗнч(Значение); + ТипТип = Тип("Тип"); #Если Сервер Тогда Если ТипЗначения = Тип("ОбъектМетаданных") Тогда @@ -72,14 +69,25 @@ Если ТипЗначения = ТипТип Тогда ИдентификаторТипа = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Значение); // Для работы кэширования //@skip-check constructor-function-return-section - Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа); + Возврат ЮТМетаданныеСлужебныйПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа); Иначе //@skip-check constructor-function-return-section - Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданных(Значение); + Возврат ЮТМетаданныеСлужебныйПовтИсп.ОписаниеОбъектаМетаданных(Значение); КонецЕсли; КонецФункции +// Возвращает нормализованное имя таблицы, то которое можно использовать в запросах +// +// Параметры: +// Значение - ОбъектМетаданных +// - Тип - Тип объекта информационной базы +// - Строка - Полное имя объекта метаданных +// - см. СтруктураОписанияОбъектаМетаданных +// - Произвольный - Объект информационной базы +// +// Возвращаемое значение: +// Строка - Нормализованное имя таблицы Функция НормализованноеИмяТаблицы(Значение) Экспорт Описание = ОписаниеОбъектаМетаданных(Значение); @@ -88,29 +96,49 @@ КонецФункции -Функция ЭтоОписаниеОбъектаМетаданных(Параметры) Экспорт - - Возврат ЮТОбщий.ЭтаСтруктураИмеетТип(Параметры, "ОписаниеОбъектаМетаданных"); - -КонецФункции - -Функция ТипыМетаданных() Экспорт +// Проверка, что переданное значение относится к перечислениям. +// +// Параметры: +// Значение - ОбъектМетаданных +// - Тип - Тип объекта информационной базы +// - Строка - Полное имя объекта метаданных +// - см. СтруктураОписанияОбъектаМетаданных +// - Произвольный - Объект информационной базы +// +// Возвращаемое значение: +// Булево - Это перечисление +Функция ЭтоПеречисление(Значение) Экспорт - Возврат ЮТМетаданныеПовтИсп.ТипыМетаданных(); + Описание = ОписаниеОбъектаМетаданных(Значение); + Возврат Описание <> Неопределено И Описание.ОписаниеТипа.Имя = "Перечисление"; КонецФункции -Функция ЭтоПеречисление(Значение) Экспорт +// Проверка, что переданное значение относится к регистрам. +// +// Параметры: +// Значение - ОбъектМетаданных +// - Тип - Тип объекта информационной базы +// - Строка - Полное имя объекта метаданных +// - см. СтруктураОписанияОбъектаМетаданных +// - Произвольный - Объект информационной базы +// +// Возвращаемое значение: +// Булево - Это перечисление +Функция ЭтоРегистр(Значение) Экспорт Описание = ОписаниеОбъектаМетаданных(Значение); - - Возврат Описание <> Неопределено И Описание.ОписаниеТипа.Имя = "Перечисление"; + Возврат Описание <> Неопределено И СтрНачинаетсяС(Описание.ОписаниеТипа.Имя, "Регистр"); КонецФункции +// Разрешены ли синхронные вызовы в параметрах конфигурации. +// +// Возвращаемое значение: +// Булево - Разрешены синхронные вызовы Функция РазрешеныСинхронныеВызовы() Экспорт - Возврат ЮТМетаданныеПовтИсп.РазрешеныСинхронныеВызовы(); + Возврат ЮТМетаданныеСлужебныйПовтИсп.РазрешеныСинхронныеВызовы(); КонецФункции @@ -120,7 +148,7 @@ // Документ - ОбъектМетаданных // - Тип - Тип объекта информационной базы // - Строка - Полное имя объекта метаданных -// - см. ОписаниеОбъектаМетаданных +// - см. СтруктураОписанияОбъектаМетаданных // - ДокументСсылка, ДокументОбъект - Объект информационной базы // - ДокументМенеджер - Менеджер вида документа // @@ -132,7 +160,96 @@ ПолноеИмя = СтрШаблон("%1.%2", ОписаниеОбъектаМетаданных.ОписаниеТипа.ИмяКоллекции, ОписаниеОбъектаМетаданных.Имя); - Возврат ЮТМетаданныеПовтИсп.РегистрыДвиженийДокумента(ПолноеИмя); + Возврат ЮТМетаданныеСлужебныйПовтИсп.РегистрыДвиженийДокумента(ПолноеИмя); + +КонецФункции + +// Возвращает текущую версию тестового движка (YAxUnit) +// +// Возвращаемое значение: +// Строка - Версия движка +Функция ВерсияДвижка() Экспорт + + Возврат ЮТМетаданныеСлужебныйПовтИсп.ВерсияДвижка(); + +КонецФункции + +// Описание типа объекта метаданных. +// +// Возвращаемое значение: +// Структура - Описание типа метаданных: +// * Имя - Строка +// * ИмяКоллекции - Строка +// * Конструктор - Строка +// * Группы - Булево +// * Ссылочный - Булево +// * Регистр - Булево +// * ОбработкаОтчет - Булево +// * СтандартныеРеквизиты - Булево +// * Реквизиты - Булево +// * Измерения - Булево +// * Ресурсы - Булево +// * РеквизитыАдресации - Булево +// * ТабличныеЧасти - Булево +Функция ОписаниеТипаМетаданных() Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Имя", ""); + Описание.Вставить("ИмяКоллекции", ""); + Описание.Вставить("Конструктор", ""); + Описание.Вставить("Группы", Ложь); + Описание.Вставить("Ссылочный", Ложь); + Описание.Вставить("Регистр", Ложь); + Описание.Вставить("ОбработкаОтчет", Ложь); + Описание.Вставить("СтандартныеРеквизиты", Ложь); + Описание.Вставить("Реквизиты", Ложь); + Описание.Вставить("Измерения", Ложь); + Описание.Вставить("Ресурсы", Ложь); + Описание.Вставить("РеквизитыАдресации", Ложь); + Описание.Вставить("ТабличныеЧасти", Ложь); + + Возврат Описание; + +КонецФункции + +// Описание объекта метаданных. +// +// Возвращаемое значение: +// Структура - Описание объекта метаданных: +// * Имя - Строка +// * ОписаниеТипа - см. ОписаниеТипаМетаданных +// * Реквизиты - Структура +// * ТабличныеЧасти - Структура +Функция СтруктураОписанияОбъектаМетаданных() Экспорт + + Описание = Новый Структура; + Описание.Вставить("Имя", ""); + Описание.Вставить("ОписаниеТипа", Неопределено); + Описание.Вставить("Реквизиты", Новый Структура()); + Описание.Вставить("ТабличныеЧасти", Новый Структура()); + + //@skip-check constructor-function-return-section + Возврат Описание; + +КонецФункции + +// Описание реквизита объекта метаданных +// +// Возвращаемое значение: +// Структура - Описание реквизита: +// * Имя - Строка +// * Тип - ОписаниеТипов +// * Обязательный - Булево +// * ЭтоКлюч - Булево +Функция ОписаниеРеквизита() Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Имя", ""); + Описание.Вставить("Тип", Новый ОписаниеТипов("Неопределено")); + Описание.Вставить("Обязательный", Ложь); + Описание.Вставить("ЭтоКлюч", Ложь); + + Возврат Описание; КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 000000000..ec9ee5300 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,31 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ЭтоОписаниеОбъектаМетаданных(Значение) Экспорт + + Возврат ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗнч(Значение)) И ЮТОбщий.ЭтаСтруктураИмеетТип(Значение, "ОписаниеОбъектаМетаданных"); + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 000000000..1580425b2 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ЮТМетаданныеСлужебный + + ru + Метаданные служебный + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 77% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index fd3127b96..b9b2b4e7e 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ // Выполняет чтение метаданных общих модулей, которые предположительно могут являться тестами // // Возвращаемое значение: -// Массив из см. ЮТФабрика.ОписаниеМодуля - Коллекция описаний моделей, структуру элемента см. ЮТФабрика.ОписаниеМодуля +// Массив из см. ЮТФабрикаСлужебный.ОписаниеМодуля - Коллекция описаний моделей, структуру элемента см. ЮТФабрикаСлужебный.ОписаниеМодуля Функция МодулиРасширений() Экспорт УстановитьПривилегированныйРежим(Истина); @@ -98,7 +98,7 @@ КонецЕсли; КонецЕсли; - Описание = ЮТФабрика.ОписаниеМодуля(); + Описание = ЮТФабрикаСлужебный.ОписаниеМодуля(); Описание.Имя = Модуль.Имя; Описание.КлиентУправляемоеПриложение = Модуль.КлиентУправляемоеПриложение; Описание.КлиентОбычноеПриложение = Модуль.КлиентОбычноеПриложение; @@ -117,11 +117,9 @@ МетаданныеОбъекта = ОбъектМетаданных(Значение); ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта); - ОписаниеОбъект = Новый Структура; - ОписаниеОбъект.Вставить("Имя", МетаданныеОбъекта.Имя); - ОписаниеОбъект.Вставить("ОписаниеТипа", ОписаниеТипа); - ОписаниеОбъект.Вставить("Реквизиты", Новый Структура()); - ОписаниеОбъект.Вставить("ТабличныеЧасти", Новый Структура()); + ОписаниеОбъект = ЮТМетаданные.СтруктураОписанияОбъектаМетаданных(); + ОписаниеОбъект.Имя = МетаданныеОбъекта.Имя; + ОписаниеОбъект.ОписаниеТипа = ОписаниеТипа; ЮТОбщий.УказатьТипСтруктуры(ОписаниеОбъект, "ОписаниеОбъектаМетаданных"); Если НЕ ЗаполнятьРеквизиты Тогда @@ -148,6 +146,8 @@ ДобавитьОписанияРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, ОписаниеОбъект.Реквизиты, Ложь); КонецЕсли; + ДобавитьОбщиеРеквизиты(МетаданныеОбъекта, ОписаниеОбъект.Реквизиты); + Если ОписаниеТипа.ТабличныеЧасти Тогда Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл @@ -159,7 +159,7 @@ КонецЕсли; - Возврат ОписаниеОбъект; + Возврат Новый ФиксированнаяСтруктура(ОписаниеОбъект); КонецФункции @@ -169,20 +169,7 @@ // МетаданныеОбъекта - Тип, ОбъектМетаданных - Тип // // Возвращаемое значение: -// Структура - Описание типа метаданных: -// * Имя - Строка -// * ИмяКоллекции - Строка -// * Конструктор - Строка -// * Группы - Булево -// * Ссылочный - Булево -// * Регистр - Булево -// * ОбработкаОтчет - Булево -// * СтандартныеРеквизиты - Булево -// * Реквизиты - Булево -// * Измерения - Булево -// * Ресурсы - Булево -// * РеквизитыАдресации - Булево -// * ТабличныеЧасти - Булево +// см. ЮТМетаданные.ОписаниеТипаМетаданных Функция ОписаниеТипаМетаданных(Знач МетаданныеОбъекта) Экспорт Если ТипЗнч(МетаданныеОбъекта) = Тип("Тип") Тогда @@ -191,15 +178,18 @@ ПолноеИмя = МетаданныеОбъекта.ПолноеИмя(); ЧастиИмени = СтрРазделить(ПолноеИмя, "."); - Типы = ЮТМетаданные.ТипыМетаданных(); + Типы = ЮТМетаданныеСлужебныйПовтИсп.ТипыМетаданных(); - Если Типы.Свойство(ЧастиИмени[0]) Тогда - Возврат Типы[ЧастиИмени[0]]; - Иначе + Если НЕ Типы.Свойство(ЧастиИмени[0]) Тогда Сообщение = СтрШаблон("Получение описания для '%1' не поддерживается, либо не реализовано", ЧастиИмени[0]); ВызватьИсключение Сообщение; КонецЕсли; + Описание = ЮТМетаданные.ОписаниеТипаМетаданных(); + ЗаполнитьЗначенияСвойств(Описание, Типы[ЧастиИмени[0]]); + //@skip-check constructor-function-return-section + Возврат Новый ФиксированнаяСтруктура(Описание); + КонецФункции Функция ТипыМетаданных() Экспорт @@ -288,7 +278,7 @@ ОбъектМетаданных = ОбъектМетаданныхИзСтроки(Значение); - ИначеЕсли ТипЗначение = Тип("Структура") И Значение.Свойство("ОписаниеТипа") И Значение.Свойство("Имя") Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗначение) И Значение.Свойство("ОписаниеТипа") И Значение.Свойство("Имя") Тогда ОбъектМетаданных = Метаданные[Значение.ОписаниеТипа.ИмяКоллекции][Значение.Имя]; @@ -299,7 +289,7 @@ КонецЕсли; Если ОбъектМетаданных = Неопределено Тогда - Сообщение = ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТМетаданныеСервер.ОбъектМетаданных", Значение); + Сообщение = ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТМетаданныеСлужебныйВызовСервера.ОбъектМетаданных", Значение); ВызватьИсключение Сообщение; КонецЕсли; @@ -313,7 +303,7 @@ Если ЧастиСтроки.Количество() = 2 Тогда - ТипыМетаданных = ЮТМетаданные.ТипыМетаданных(); + ТипыМетаданных = ЮТМетаданныеСлужебныйПовтИсп.ТипыМетаданных(); ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]]; Если ОписаниеТипа <> Неопределено Тогда ОбъектМетаданных = Метаданные[ОписаниеТипа.ИмяКоллекции].Найти(ЧастиСтроки[1]); @@ -342,10 +332,48 @@ ЭтоКлюч = ИменаКлючевыхПолей.Найти(Реквизит.Имя) <> Неопределено; КонецЕсли; - КоллекцияОписаний.Вставить(Реквизит.Имя, ЮТФабрика.ОписаниеРеквизита(Реквизит, ЭтоКлюч)); + КоллекцияОписаний.Вставить(Реквизит.Имя, НовоеОписаниеРеквизита(Реквизит, ЭтоКлюч)); КонецЦикла; КонецПроцедуры +Процедура ДобавитьОбщиеРеквизиты(МетаданныеОбъекта, КоллекцияОписаний) + + Использовать = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать; + Авто = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Авто; + АвтоИспользование = Метаданные.СвойстваОбъектов.АвтоИспользованиеОбщегоРеквизита.Использовать; + + Для Каждого Реквизит Из Метаданные.ОбщиеРеквизиты Цикл + + ЭлементСостава = Реквизит.Состав.Найти(МетаданныеОбъекта); + + Если ЭлементСостава = Неопределено Тогда + Продолжить; + ИначеЕсли ЭлементСостава.Использование = Использовать Или Реквизит.АвтоИспользование = АвтоИспользование И ЭлементСостава.Использование = Авто Тогда + КоллекцияОписаний.Вставить(Реквизит.Имя, НовоеОписаниеРеквизита(Реквизит, Ложь)); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Функция НовоеОписаниеРеквизита(Реквизит, ЭтоКлюч) + + Описание = ЮТМетаданные.ОписаниеРеквизита(); + Описание.Имя = Реквизит.Имя; + Описание.Тип = Реквизит.Тип; + Описание.Обязательный = Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку; + Описание.ЭтоКлюч = ЭтоКлюч; + + Возврат Описание; + +КонецФункции + +Функция ВерсияДвижка() Экспорт + + Возврат Метаданные.ОбщиеМодули.ЮТМетаданныеСлужебныйВызовСервера.РасширениеКонфигурации().Версия; + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 83% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 773aa838a..698e53c86 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТМетаданныеСервер + ЮТМетаданныеСлужебныйВызовСервера ru Метаданные (сервер) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" similarity index 59% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" index f0c3b700d..baf334e70 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,45 +20,51 @@ Функция МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские) Экспорт - Возврат ЮТМетаданныеСервер.МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские); + Возврат ЮТМетаданныеСлужебныйВызовСервера.МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские); КонецФункции Функция ОписаниеОбъектаМетаданных(Знач Менеджер) Экспорт - Возврат ЮТМетаданныеСервер.ОписаниеОбъектаМетаданных(Менеджер); + Возврат ЮТМетаданныеСлужебныйВызовСервера.ОписаниеОбъектаМетаданных(Менеджер); КонецФункции Функция ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(Знач ИдентификаторТипа) Экспорт Тип = ЮТТипыДанныхСлужебный.ТипПоИдентификатору(ИдентификаторТипа); - Возврат ЮТМетаданныеСервер.ОписаниеОбъектаМетаданных(Тип); + Возврат ЮТМетаданныеСлужебныйВызовСервера.ОписаниеОбъектаМетаданных(Тип); КонецФункции Функция ТипыМетаданных() Экспорт - Возврат ЮТМетаданныеСервер.ТипыМетаданных(); + Возврат ЮТМетаданныеСлужебныйВызовСервера.ТипыМетаданных(); КонецФункции Функция РазрешеныСинхронныеВызовы() Экспорт - Возврат ЮТМетаданныеСервер.РазрешеныСинхронныеВызовы(); + Возврат ЮТМетаданныеСлужебныйВызовСервера.РазрешеныСинхронныеВызовы(); КонецФункции Функция РегистрыДвиженийДокумента(ПолноеИмя) Экспорт - Возврат ЮТМетаданныеСервер.РегистрыДвиженийДокумента(ПолноеИмя); + Возврат ЮТМетаданныеСлужебныйВызовСервера.РегистрыДвиженийДокумента(ПолноеИмя); КонецФункции Функция ВариантВстроенногоЯзыка() Экспорт - Возврат ЮТМетаданныеСервер.ВариантВстроенногоЯзыка(); + Возврат ЮТМетаданныеСлужебныйВызовСервера.ВариантВстроенногоЯзыка(); КонецФункции +Функция ВерсияДвижка() Экспорт + + Возврат ЮТМетаданныеСлужебныйВызовСервера.ВерсияДвижка(); + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" similarity index 87% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" index 6de5020f0..652cc9131 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" @@ -1,6 +1,6 @@ - ЮТМетаданныеПовтИсп + ЮТМетаданныеСлужебныйПовтИсп ru Метаданные (повторного использования) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 000000000..4283e2b32 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,185 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ВызовУстаревшегоМетода(УстаревшийМетод, РекомендуемыйМетод, Версия) Экспорт + + Сообщение = СтрШаблон("Используется устаревший метод '%1'. В следующих релизах он будет удален", УстаревшийМетод); + + Если ЗначениеЗаполнено(РекомендуемыйМетод) Тогда + Сообщение = СтрШаблон("%1. Рекомендуется использовать '%2'", Сообщение, РекомендуемыйМетод); + КонецЕсли; + + ЮТЛогирование.Предостережение(Сообщение); + + Если ЮТСтроки.СравнитьВерсии(Версия, ВерсияЗапретаИспользованияУстаревших()) <= 0 Тогда + ВызватьИсключение Сообщение; + Иначе + ЮТОбщий.СообщитьПользователю(Сообщение); + КонецЕсли; + +КонецПроцедуры + +#Область ПроверкаМетодов + +// МетодМодуляСуществует +// Проверяет существование публичного (экспортного) метода у модуля +// +// Параметры: +// ИмяМодуля - Строка - Имя модуля, метод которого нужно поискать +// ИмяМетода - Строка - Имя метода, который ищем +// Кешировать - Булево - Признак кеширования результата проверки +// +// Возвращаемое значение: +// Булево - Метод найден +Функция МетодМодуляСуществует(ИмяМодуля, ИмяМетода, Кешировать = Истина) Экспорт + + ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМодуля, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМодуля"); + ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода"); + + Если Кешировать Тогда + Возврат ЮТСлужебныйПовторногоИспользования.МетодМодуляСуществует(ИмяМодуля, ИмяМетода); + КонецЕсли; + + ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяМетода); + Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)"; + + Ошибка = ВыполнитьМетод(Алгоритм); + + ТипОшибки = ЮТРегистрацияОшибокСлужебный.ТипОшибки(Ошибка, ПолноеИмяМетода); + Возврат ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().МногоПараметров; + +КонецФункции + +// Проверяет существование публичного (экспортного) метода у объекта +// +// Параметры: +// Объект - Произвольный - Объект, метод которого нужно поискать +// ИмяМетода - Строка - Имя метода, который ищем +// +// Возвращаемое значение: +// Булево - Метод найден +Функция МетодОбъектаСуществует(Объект, ИмяМетода) Экспорт + +#Если ВебКлиент Тогда + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТОбщий.МетодОбъектаСуществует"); +#Иначе + ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода"); + + ПолноеИмяМетода = СтрШаблон("Объект.%1", ИмяМетода); + Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)"; + + Ошибка = ВыполнитьМетод(Алгоритм, , Объект); + + ТипОшибки = ЮТРегистрацияОшибокСлужебный.ТипОшибки(Ошибка, ПолноеИмяМетода); + Возврат ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().МногоПараметров; +#КонецЕсли + +КонецФункции + +#КонецОбласти + +#Область ВызовМетодов + +Функция ВыполнитьМетод(ПолноеИмяМетода, Параметры = Неопределено, Объект = Неопределено) Экспорт + +#Если ВебКлиент Тогда + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТОбщий.ВыполнитьМетод"); +#Иначе + Если СтрЗаканчиваетсяНа(ПолноеИмяМетода, ")") Тогда + + Алгоритм = ПолноеИмяМетода; + + ИначеЕсли НЕ ЗначениеЗаполнено(Параметры) Тогда + + Алгоритм = ПолноеИмяМетода + "()"; + + ИначеЕсли ТипЗнч(Параметры) = Тип("Массив") Тогда + + Алгоритм = СтрШаблон("%1(%2)", ПолноеИмяМетода, СтрокаПараметровМетода(Параметры, "Параметры")); + + Иначе + + ВызватьИсключение СтрШаблон("Не верный тип параметров `%1` для вызова метода, должен быть массив", ТипЗнч(Параметры)); + + КонецЕсли; + + Попытка + //@skip-check server-execution-safe-mode + Выполнить(Алгоритм); + Исключение + Возврат ИнформацияОбОшибке(); + КонецПопытки; + + Возврат Неопределено; +#КонецЕсли + +КонецФункции + +Функция ВычислитьБезопасно(Выражение) Экспорт + +#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда + УстановитьБезопасныйРежим(Истина); + Попытка + Значение = Вычислить(Выражение); + Исключение + УстановитьБезопасныйРежим(Ложь); + ВызватьИсключение; + КонецПопытки; + + УстановитьБезопасныйРежим(Ложь); +#Иначе + Значение = Вычислить(Выражение); +#КонецЕсли + + Возврат Значение; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ВерсияЗапретаИспользованияУстаревших() + + Возврат "23.01"; + +КонецФункции + +Функция СтрокаПараметровМетода(Параметры, ИмяПеременнойСПараметрами) + + СписокПараметров = Новый Массив(); + + Для Инд = 0 По Параметры.ВГраница() Цикл + + Если Параметры[Инд] = Мокито.ПараметрПоУмолчанию() Тогда + СписокПараметров.Добавить(""); + Иначе + СписокПараметров.Добавить(СтрШаблон("%1[%2]", ИмяПеременнойСПараметрами, Инд)); + КонецЕсли; + + КонецЦикла; + + Возврат СтрСоединить(СписокПараметров, ", "); + +КонецФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 000000000..dd5e80158 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ЮТМетодыСлужебный + + ru + Общий служебный + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217/Module.bsl" index 5a4087e9b..fe14db317 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,8 +16,12 @@ // //©///////////////////////////////////////////////////////////////////////////©// -#Область СлужебныйПрограммныйИнтерфейс +#Область ПрограммныйИнтерфейс +// Возвращает значение настройки "ВТранзакции" для текущего исполняемого объекта (тест, набор, модуль) +// +// Возвращаемое значение: +// Булево Функция ВТранзакции() Экспорт ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции; @@ -26,6 +30,10 @@ КонецФункции +// Возвращает значение настройки "УдалениеТестовыхДанных" для текущего исполняемого объекта (тест, набор, модуль) +// +// Возвращаемое значение: +// Булево Функция УдалениеТестовыхДанных() Экспорт ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().УдалениеТестовыхДанных; @@ -34,6 +42,11 @@ КонецФункции +// Возвращает значение настройки "Перед" для текущего исполняемого объекта (тест, набор, модуль) +// Возвращает имя назначенного обработчика события (имя метода) "Перед". +// +// Возвращаемое значение: +// Строка Функция Перед() Экспорт ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().Перед; @@ -42,6 +55,11 @@ КонецФункции +// Возвращает значение настройки "После" для текущего исполняемого объекта (тест, набор, модуль) +// Возвращает имя назначенного обработчика события (имя метода) "После". +// +// Возвращаемое значение: +// Строка Функция После() Экспорт ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().После; @@ -50,17 +68,28 @@ КонецФункции +// Возвращает значение произвольной настройки для текущего исполняемого объекта (тест, набор, модуль) +// +// Параметры: +// ИмяНастройки - Строка - Имя настройки, см. ЮТФабрика.ПараметрыИсполненияТеста +// ЗначениеПоУмолчанию - Произвольный - Значение по умолчанию +// СтрогийУровеньИсполнения - Булево - Признак, стоит ли проверять наличие настройки у родительских элементов. +// Ложь - По умолчанию, будет выполнен поиск и получение значения для родетелей (набор, модуль), если значения для текущего элемента не установлено. +// Истина - Получение настройки только для текущего элемента. +// +// Возвращаемое значение: +// Произвольный, Неопределено, Булево, Строка - Значение настройки теста Функция ЗначениеНастройкиТеста(ИмяНастройки, ЗначениеПоУмолчанию, СтрогийУровеньИсполнения = Ложь) Экспорт Значение = ЗначениеПоУмолчанию; - КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения(); + КонтекстИсполнения = ЮТКонтекстСлужебный.КонтекстИсполнения(); Если СтрогийУровеньИсполнения Тогда - ТекущийКонтекстИсполнения = ЮТКонтекст.КонтекстИсполненияТекущегоУровня(); + ТекущийКонтекстИсполнения = ЮТКонтекстСлужебный.КонтекстИсполненияТекущегоУровня(); Если ТекущийКонтекстИсполнения <> Неопределено Тогда - Значение = ЮТОбщий.ЗначениеСтруктуры(ТекущийКонтекстИсполнения.НастройкиВыполнения, ИмяНастройки, ЗначениеПоУмолчанию); + Значение = ЮТКоллекции.ЗначениеСтруктуры(ТекущийКонтекстИсполнения.НастройкиВыполнения, ИмяНастройки, ЗначениеПоУмолчанию); КонецЕсли; ИначеЕсли КонтекстИсполнения.Тест <> Неопределено И КонтекстИсполнения.Тест.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда @@ -77,7 +106,7 @@ Иначе - ГлобальныеНастройки = ЮТКонтекст.ГлобальныеНастройкиВыполнения(); + ГлобальныеНастройки = ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения(); Если ГлобальныеНастройки.Свойство(ИмяНастройки) Тогда Значение = ГлобальныеНастройки[ИмяНастройки]; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" index 9232c484c..35b6160b9 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" @@ -20,12 +20,12 @@ // Возвращает значение свойства объекта. // Возможно получение "глубоко" вложенных свойство и элементов коллекции по индексу -// +// // Параметры: // Объект - Произвольный // ИмяСвойства - Строка - Путь к свойству. Примеры: "ИмяСвойства.ИмяВложенногоСвойства", "[2].ИмяСвойства", "ИмяСвойства[2].ИмяВложенногоСвойства" -// - Число - Индекс элемента. Возможен выбор элемента с конца, для этого нужно указывать отрицательный номер элемента с конца, -// например: '-1' - последний элемент, '-2' - предпоследний +// - Число - Индекс элемента. Возможен выбор элемента с конца, для этого нужно указывать отрицательный номер элемента с конца, +// например: '-1' - последний элемент, '-2' - предпоследний // Возвращаемое значение: // Произвольный Функция ЗначениеСвойства(Объект, ИмяСвойства) Экспорт @@ -37,7 +37,7 @@ Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда #Если ВебКлиент Или ТонкийКлиент Тогда - Значение = ЮТОбщийВызовСервера.ИзХранилищаЗначений(Значение); + Значение = ЮТОбщийСлужебныйВызовСервера.ИзХранилищаЗначений(Значение); #Иначе Значение = Значение.Получить(); #КонецЕсли @@ -55,98 +55,51 @@ КонецФункции -Функция ХешMD5(Данные) Экспорт - - Возврат ЮТОбщийВызовСервера.ХешMD5(Данные); - -КонецФункции - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -#Область Строки - -// ДобавитьСтроку -// Конкатенирует строки, разделяя их разделителем +// Вычисляет хеш по алгоритму md5. // // Параметры: -// ИсходнаяСтрока - Строка - Исходная строка -// ДополнительнаяСтрока - Строка - Добавляемая строка -// Разделитель - Строка - Строка разделитель, любой набор символов - разделитель между подстроками -// -// Возвращаемое значение: -// Строка - Результат конкатенации строк +// Данные - Строка, ДвоичныеДанные - Данные, для которых необходимо вычислить хеш // -Функция ДобавитьСтроку(Знач ИсходнаяСтрока, Знач ДополнительнаяСтрока, Знач Разделитель = ";") Экспорт - - Если Не ПустаяСтрока(ДополнительнаяСтрока) Тогда - - Если Не ПустаяСтрока(ИсходнаяСтрока) Тогда - - Возврат Строка(ИсходнаяСтрока) + Разделитель + Строка(ДополнительнаяСтрока); - - Иначе - - Возврат Строка(ДополнительнаяСтрока); - - КонецЕсли; - - КонецЕсли; +// Возвращаемое значение: +// Строка +Функция ХешMD5(Данные) Экспорт - Возврат Строка(ИсходнаяСтрока); + Возврат ЮТОбщийСлужебныйВызовСервера.ХешMD5(Данные); КонецФункции -// РазложитьСтрокуВМассивПодстрок -// Возвращает массив на основании строки +#Область ДатаВремя + +// Добавляет к дате указанное значение временных интервалов // // Параметры: -// Значение - Строка - преобразуемая строка -// Разделитель - Строка - строка-разделитель -// -// Возвращаемое значение: -// Массив Из Строка - массив строк +// Дата - Дата +// Интервал - Число - Добавляемое +// ТипИнтервала - Строка - Тип интервала // -Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Разделитель = ";") Экспорт +// Возвращаемое значение: +// Дата +Функция ДобавитьКДате(Дата, Интервал, ТипИнтервала) Экспорт - КодУниверсальногоРазделителя = 5855; - УниверсальныйРазделитель = Символ(КодУниверсальногоРазделителя); - МодифицированнаяСтрока = СтрЗаменить(Значение, Разделитель, УниверсальныйРазделитель); + Если ЭтоМесяц(ТипИнтервала) Тогда + Возврат ДобавитьМесяц(Дата, Интервал); + КонецЕсли; - МассивСтрок = ?(МодифицированнаяСтрока = "", Новый Массив, СтрРазделить(МодифицированнаяСтрока, - УниверсальныйРазделитель)); - - Для Индекс = 0 По МассивСтрок.ВГраница() Цикл - - МассивСтрок[Индекс] = СокрЛП(МассивСтрок[Индекс]); - - КонецЦикла; - - Возврат МассивСтрок; + Множитель = МножительПериода(ТипИнтервала); + Возврат Дата + Множитель * Интервал; КонецФункции -// Сформировать строку символов. -// Формирует строку из заданного количества повторяемых символов -// Параметры: -// Символ - Строка - Повторяемый символ -// Количество - Число - Количество повторений -// -// Возвращаемое значение: -// Строка - Строка повторяемых символов -Функция СформироватьСтрокуСимволов(Символ, Количество) Экспорт - - Возврат СтрСоединить(Новый Массив(Количество + 1), Символ); - -КонецФункции +#КонецОбласти #КонецОбласти +#Область СлужебныйПрограммныйИнтерфейс + #Область Числа // Инкрементирует значение -// +// // Параметры: // Значение - Число // Шаг - Число @@ -170,16 +123,16 @@ #Область ДатаВремя // Человекочитаемое представление продолжительности -// +// // Параметры: // Продолжительность - Число - Продолжительность в миллисекундах -// +// // Возвращаемое значение: // Строка - Представление продолжительности Функция ПредставлениеПродолжительности(Знач Продолжительность) Экспорт Представление = ЧислоВСтроку(Цел(Продолжительность / 1000)); - Представление = ДобавитьСтроку(Представление, Формат(Продолжительность % 1000, "ЧЦ=3; ЧВН=;"), "."); + Представление = ЮТСтроки.ДобавитьСтроку(Представление, Формат(Продолжительность % 1000, "ЧЦ=3; ЧВН=;"), "."); Инкремент(Представление, " сек"); @@ -202,797 +155,595 @@ #КонецОбласти -#Область Коллекции +#Область ЧтениеДанных -// ЗначениеСтруктуры -// Возвращает требуемое поле структуры. В случае отсутствия поля возвращает значение по умолчанию -// -// Параметры: -// ИсходнаяСтруктура - Структура - Исходная структура -// ИмяПоля - Строка - Имя поля структуры -// ЗначениеПоУмолчанию - Произвольный - Значение, которое будет возвращено, если поля в структуре нет -// ПроверятьЗаполненность - Булево - Необходимость проверять значение на заполненность. Если не заполнено, -// то возвращается значение по умолчанию -// -// Возвращаемое значение: -// Произвольный - Значение искомого поля структуры -Функция ЗначениеСтруктуры(Знач ИсходнаяСтруктура, ИмяПоля, Знач ЗначениеПоУмолчанию = Неопределено, ПроверятьЗаполненность = Ложь) Экспорт +Функция ДанныеТекстовогоФайла(ИмяФайла) Экспорт - Если ПустаяСтрока(ИмяПоля) Тогда - Возврат ЗначениеПоУмолчанию; - КонецЕсли; +#Если НЕ ВебКлиент Тогда + Чтение = Новый ЧтениеТекста; + Чтение.Открыть(ИмяФайла, "UTF-8"); + Текст = Чтение.Прочитать(); + Чтение.Закрыть(); - ЗначениеПоля = Неопределено; + Возврат Текст; +#Иначе + ВызватьИсключение "Чтение данных текстовых файлов в веб-клиенте не поддерживается"; +#КонецЕсли - Если ИсходнаяСтруктура.Свойство(ИмяПоля, ЗначениеПоля) Тогда - Если ПроверятьЗаполненность И ЗначениеЗаполнено(ЗначениеПоля) Или Не ПроверятьЗаполненность Тогда - Возврат ЗначениеПоля; - КонецЕсли; - - КонецЕсли; +КонецФункции + +Функция ЗначениеИзJSON(СтрокаJSON) Экспорт - Возврат ЗначениеПоУмолчанию; +#Если НЕ ВебКлиент Тогда + Чтение = Новый ЧтениеJSON; + Чтение.УстановитьСтроку(СтрокаJSON); + Значение = ПрочитатьJSON(Чтение); + Чтение.Закрыть(); + Возврат Значение; +#Иначе + ВызватьИсключение "Разбор JSON строки в веб-клиенте не поддерживается"; +#КонецЕсли КонецФункции -// ОбъединитьВСтруктуру -// Функция, объединяющая две коллекции( с типами Структура или Соответствие) в одну структуру, если это возможно +#КонецОбласти + +// ПеременнаяСодержитСвойство +// функция проверяет наличие свойства у значения любого типа данных. Если передано НЕОПРЕДЕЛЕНО, то ф-ия всегда вернет Ложь // // Параметры: -// Коллекция1 - Соответствие из Произвольный -// - Структура -// Коллекция2 - Соответствие из Произвольный -// - Структура -// +// Переменная - Произвольный - переменная любого типа, для которой необходимо проверить наличие свойства +// ИмяСвойства - Строка - переменная типа "Строка", содержащая искомое свойства +// // Возвращаемое значение: -// Структура - Результат объединения двух коллекций +// Булево - признак наличия свойства у значения // -Функция ОбъединитьВСтруктуру(Знач Коллекция1, Коллекция2) Экспорт +Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) Экспорт - Если ТипЗнч(Коллекция1) <> Тип("Структура") Тогда - Коллекция1 = СкопироватьСтруктуру(Коллекция1); + Если Переменная = Неопределено Тогда + Возврат Ложь; КонецЕсли; - //@skip-check constructor-function-return-section - Возврат ДобавитьКлючИЗначениеВКоллекцию(Коллекция1, Коллекция2); + // Инициализируем структуру для теста с ключом (значение переменной "ИмяСвойства") и значением произвольного GUID'а + GUIDПроверка = Новый УникальныйИдентификатор; + СтруктураПроверка = Новый Структура; + СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); + // Заполняем созданную структуру из переданного значения переменной + ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); + // Если значение для свойства структуры осталось GUIDПроверка, то искомое свойство не найдено, и наоборот. + Возврат СтруктураПроверка[ИмяСвойства] <> GUIDПроверка; КонецФункции -// СкопироватьРекурсивно -// Создает копию экземпляра указанного объекта. -// Примечание: -// Функцию нельзя использовать для объектных типов (СправочникОбъект, ДокументОбъект и т.п.). +// СообщитьПользователю +// Формирует и выводит сообщение // // Параметры: -// Источник - Произвольный - объект, который необходимо скопировать. -// -// Возвращаемое значение: -// Произвольный - копия объекта, переданного в параметре Источник. -// -Функция СкопироватьРекурсивно(Знач Источник) Экспорт +// ТекстСообщенияПользователю - Строка - текст сообщения. +Процедура СообщитьПользователю(ТекстСообщенияПользователю) Экспорт - Перем Приемник; + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = СокрЛП(ТекстСообщенияПользователю); + Сообщение.Сообщить(); - СкопироватьПрисвоением = Ложь; +КонецПроцедуры + +Функция СтрокаJSON(Значение, ИспользоватьСериализатор = Истина) Экспорт - ТипИсточника = ТипЗнч(Источник); - Если ТипИсточника = Тип("Структура") Или ТипИсточника = Тип("ФиксированнаяСтруктура") Тогда - - Приемник = СкопироватьСтруктуру(Источник); - - ИначеЕсли ТипИсточника = Тип("Соответствие") Или ТипИсточника = Тип("ФиксированноеСоответствие") Тогда - - Приемник = СкопироватьСоответствие(Источник); - - ИначеЕсли ТипИсточника = Тип("Массив") Или ТипИсточника = Тип("ФиксированныйМассив") Тогда - - Приемник = СкопироватьМассив(Источник); - - ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда - - Приемник = СкопироватьСписокЗначений(Источник); - +#Если ВебКлиент Тогда + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТОбщий.СтрокаJSON"); +#Иначе + ЗаписьJSON = Новый ЗаписьJSON(); + ЗаписьJSON.УстановитьСтроку(); + Если ИспользоватьСериализатор Тогда + //@skip-check undefined-variable + СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Значение); Иначе - - СкопироватьПрисвоением = Истина; -#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда - Если ТипИсточника = Тип("ТаблицаЗначений") Или ТипИсточника = Тип("ДеревоЗначений") Тогда - - СкопироватьПрисвоением = Ложь; - Приемник = Источник.Скопировать(); - - КонецЕсли; -#КонецЕсли - + ЗаписатьJSON(ЗаписьJSON, Значение); КонецЕсли; - Если СкопироватьПрисвоением Тогда - - Приемник = Источник; + Возврат ЗаписьJSON.Закрыть(); +#КонецЕсли - КонецЕсли; +КонецФункции // СтрокаJSON + +Функция ПредставлениеЗначения(Значение) Экспорт - Возврат Приемник; + Попытка + Возврат СтрокаJSON(Значение); + Исключение + Возврат Строка(Значение); + КонецПопытки; КонецФункции -// СкопироватьСтруктуру -// Создает копию значения типа Структура +// Параметры записи объекта // -// Параметры: -// СтруктураИсточник - Структура - копируемая структура -// // Возвращаемое значение: -// Структура - копия исходной структуры. -// -Функция СкопироватьСтруктуру(СтруктураИсточник) Экспорт - - СтруктураРезультат = Новый Структура; +// Структура - Параметры записи: +// * ОбменДаннымиЗагрузка - Булево +// * ДополнительныеСвойства - Структура +// * РежимЗаписи - РежимЗаписиДокумента +// - Неопределено +Функция ПараметрыЗаписи() Экспорт - Для Каждого КлючИЗначение Из СтруктураИсточник Цикл - СтруктураРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение)); - КонецЦикла; + ПараметрыЗаписи = Новый Структура(); + ПараметрыЗаписи.Вставить("ОбменДаннымиЗагрузка", Ложь); + ПараметрыЗаписи.Вставить("ДополнительныеСвойства", Новый Структура); + ПараметрыЗаписи.Вставить("РежимЗаписи", Неопределено); - Возврат СтруктураРезультат; + Возврат ПараметрыЗаписи; КонецФункции -// СкопироватьСоответствие -// Создает копию значения типа Соответствие. -// -// Параметры: -// СоответствиеИсточник - Соответствие из Произвольный - соответствие, копию которого необходимо получить. -// -// Возвращаемое значение: -// Соответствие Из Произвольный - копия исходного соответствия. -// -Функция СкопироватьСоответствие(СоответствиеИсточник) Экспорт - - СоответствиеРезультат = Новый Соответствие; - - Для Каждого КлючИЗначение Из СоответствиеИсточник Цикл - - СоответствиеРезультат.Вставить(СкопироватьРекурсивно(КлючИЗначение.Ключ), - СкопироватьРекурсивно(КлючИЗначение.Значение)); - - КонецЦикла; +Функция УстановленБезопасныйРежим() Экспорт - Возврат СоответствиеРезультат; + Возврат ЮТОбщийСлужебныйВызовСервера.УстановленБезопасныйРежим(); КонецФункции -// СкопироватьМассив -// Создает копию значения типа Массив. -// -// Параметры: -// МассивИсточник - Массив Из Произвольный - массив, копию которого необходимо получить -// -// Возвращаемое значение: -// Массив Из Произвольный - копия исходного массива. -// -Функция СкопироватьМассив(МассивИсточник) Экспорт +Функция МестноеВремяПоВременнойМетке(Метка) Экспорт - Если НЕ ЗначениеЗаполнено(МассивИсточник) Тогда - Возврат Новый Массив; + Если ЗначениеЗаполнено(Метка) Тогда + Возврат МестноеВремя('00010101' + Метка / 1000); + Иначе + Возврат Неопределено; КонецЕсли; - Размер = МассивИсточник.Количество(); - МассивРезультат = Новый Массив(Размер); - - Для Инд = 0 По Размер - 1 Цикл - МассивРезультат[Инд] = СкопироватьРекурсивно(МассивИсточник[Инд]); - КонецЦикла; - - Возврат МассивРезультат; - КонецФункции -// СкопироватьСписокЗначений -// Создает копию значения типа СписокЗначений. -// -// Параметры: -// СписокИсточник - СписокЗначений Из Произвольный - список значений, копию которого необходимо получить -// -// Возвращаемое значение: -// СписокЗначений Из Произвольный - копия исходного списка значений -// -Функция СкопироватьСписокЗначений(СписокИсточник) Экспорт - - СписокРезультат = Новый СписокЗначений; - - Для Каждого ЭлементСписка Из СписокИсточник Цикл - - СписокРезультат.Добавить(СкопироватьРекурсивно(ЭлементСписка.Значение), - ЭлементСписка.Представление, - ЭлементСписка.Пометка, - ЭлементСписка.Картинка); - - КонецЦикла; +Функция ПродолжительностьВСекундах(Продолжительность) Экспорт - Возврат СписокРезультат; + Возврат Продолжительность / 1000; КонецФункции -Функция ВыгрузитьЗначения(Знач Коллекция, Знач ИмяРеквизита) Экспорт - - Результат = Новый Массив(); - - Для Каждого ЭлементКоллекции Из Коллекция Цикл - - Результат.Добавить(ЭлементКоллекции[ИмяРеквизита]); - - КонецЦикла; +Функция Модуль(ИмяМодуля) Экспорт - Возврат Результат; + Возврат ЮТМетодыСлужебный.ВычислитьБезопасно(ИмяМодуля); КонецФункции -Функция ПересечениеМассивов(Коллекция1, Коллекция2) Экспорт - - Результат = Новый Массив; - - Для Каждого Элемент Из Коллекция1 Цикл - - Если Коллекция2.Найти(Элемент) <> Неопределено Тогда - Результат.Добавить(Элемент); - КонецЕсли; - - КонецЦикла; +Функция Менеджер(Знач Менеджер) Экспорт - Возврат Результат; +#Если Сервер Тогда + Возврат ЮТОбщийСлужебныйВызовСервера.Менеджер(Менеджер); +#Иначе + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТОбщий.Менеджер", "клиенте"); +#КонецЕсли КонецФункции -// Создает массив с переданными значениями -// -// Параметры: -// Значение - Произвольный -// Значение2 - Произвольный -// Значение3 - Произвольный -// Значение4 - Произвольный -// Значение5 - Произвольный -// Значение6 - Произвольный -// Значение7 - Произвольный -// Значение8 - Произвольный -// Значение9 - Произвольный -// Значение10 - Произвольный -// -// Возвращаемое значение: -// Массив из Произвольный -//@skip-check method-too-many-params -Функция ЗначениеВМассиве(Значение, - Значение2 = "_!%*", - Значение3 = "_!%*", - Значение4 = "_!%*", - Значение5 = "_!%*", - Значение6 = "_!%*", - Значение7 = "_!%*", - Значение8 = "_!%*", - Значение9 = "_!%*", - Значение10 = "_!%*") Экспорт - - Значения = Новый Массив; - - Если Не ДобавитьНеПоследнее(Значения, Значение) Тогда - Возврат Значения; - КонецЕсли; - - Если Не ДобавитьНеПоследнее(Значения, Значение2) Тогда - Возврат Значения; - КонецЕсли; - - Если Не ДобавитьНеПоследнее(Значения, Значение3) Тогда - Возврат Значения; - КонецЕсли; - - Если Не ДобавитьНеПоследнее(Значения, Значение4) Тогда - Возврат Значения; - КонецЕсли; +Функция ТипСтруктуры(Структура) Экспорт - Если Не ДобавитьНеПоследнее(Значения, Значение5) Тогда - Возврат Значения; - КонецЕсли; + Возврат ЮТКоллекции.ЗначениеСтруктуры(Структура, "__type__"); - Если Не ДобавитьНеПоследнее(Значения, Значение6) Тогда - Возврат Значения; - КонецЕсли; - - Если Не ДобавитьНеПоследнее(Значения, Значение7) Тогда - Возврат Значения; - КонецЕсли; - - Если Не ДобавитьНеПоследнее(Значения, Значение8) Тогда - Возврат Значения; - КонецЕсли; - - Если Не ДобавитьНеПоследнее(Значения, Значение9) Тогда - Возврат Значения; - КонецЕсли; +КонецФункции - Если Не ДобавитьНеПоследнее(Значения, Значение10) Тогда - Возврат Значения; - КонецЕсли; +Функция ЭтаСтруктураИмеетТип(Структура, ИмяТипа) Экспорт - Возврат Значения; + Возврат ТипСтруктуры(Структура) = ИмяТипа; КонецФункции -Процедура ДополнитьМассив(Приемник, Источник) Экспорт +Процедура УказатьТипСтруктуры(Структура, ИмяТипа) Экспорт - Для Каждого Элемент Из Источник Цикл - - Приемник.Добавить(Элемент); - - КонецЦикла; + Структура.Вставить("__type__", ИмяТипа); КонецПроцедуры -// Возвращает соответствие элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции. -// -// Параметры: -// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки. -// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия. -// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции. -// Возвращаемое значение: -// Соответствие Из Произвольный - полученное соответствие. -Функция ВСоответствие(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт - - Результат = Новый Соответствие(); - - Для Каждого ЭлементКоллекции Из Коллекция Цикл - - Значение = ?(ИмяПоляЗначения = Неопределено, ЭлементКоллекции, ЭлементКоллекции[ИмяПоляЗначения]); - - Результат.Вставить(ЭлементКоллекции[ИмяПоляКлюча], Значение); - - КонецЦикла; - - Возврат Результат; - -КонецФункции - -// Возвращает структуру элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции. -// +// Преостанавливает поток выполнения на указанное количество секунд +// // Параметры: -// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки. -// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия. -// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции. -// Возвращаемое значение: -// Структура Из Произвольный - полученная структура. -Функция ВСтруктуру(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт - - Результат = Новый Структура(); - - Для Каждого ЭлементКоллекции Из Коллекция Цикл - - Значение = ?(ИмяПоляЗначения = Неопределено, ЭлементКоллекции, ЭлементКоллекции[ИмяПоляЗначения]); - - Результат.Вставить(ЭлементКоллекции[ИмяПоляКлюча], Значение); - - КонецЦикла; - - Возврат Результат; - -КонецФункции - -// см. ЮТСравнениеКлиентСервер.ЗначенияРавны -// Устарела. -//@skip-check doc-comment-export-function-return-section -//@skip-check doc-comment-parameter-section -Функция ДанныеСовпадают(Данные1, Данные2) Экспорт - - ВызовУстаревшегоМетода("ЮТОбщий.ДанныеСовпадают", "ЮТСравнениеКлиентСервер.ЗначенияРавны"); - Возврат ЮТСравнениеКлиентСервер.ЗначенияРавны(Данные1, Данные2); - -КонецФункции - -#КонецОбласти - -#Область ЧтениеДанных - -Функция ДанныеТекстовогоФайла(ИмяФайла) Экспорт - -#Если НЕ ВебКлиент Тогда - Чтение = Новый ЧтениеТекста; - Чтение.Открыть(ИмяФайла, "UTF-8"); - Текст = Чтение.Прочитать(); - Чтение.Закрыть(); +// Время - Число - Продолжительность паузы в секундах, возможно указывать дробное значение +Процедура Пауза(Время) Экспорт - Возврат Текст; + Задержка = Цел(1000 * Время); + Компонента = ЮТКомпоненты.Пауза(); +#Если Сервер Тогда + Компонента.Ожидать(Задержка); #Иначе - ВызватьИсключение "Чтение данных текстовых файлов в веб-клиенте не поддерживается"; + Если ЮТМетаданные.РазрешеныСинхронныеВызовы() Тогда + Компонента.Ожидать(Задержка); + Иначе + ВызватьИсключение "Пауза не работает на клиенте при отключенных синхронных вызовах"; + КонецЕсли; #КонецЕсли -КонецФункции +КонецПроцедуры -Функция ЗначениеИзJSON(СтрокаJSON) Экспорт +// Выводит сообщение в консоль (stdout) приложения +// +// Параметры: +// Сообщение - Строка - Выводимое сообщение +Процедура ВывестиВКонсоль(Сообщение) Экспорт -#Если НЕ ВебКлиент Тогда - Чтение = Новый ЧтениеJSON; - Чтение.УстановитьСтроку(СтрокаJSON); - Значение = ПрочитатьJSON(Чтение); - Чтение.Закрыть(); - Возврат Значение; + Компонента = ЮТКомпоненты.Консоль(); +#Если Сервер Тогда + Компонента.Напечатать(Сообщение); #Иначе - ВызватьИсключение "Разбор JSON строки в веб-клиенте не поддерживается"; + Если ЮТМетаданные.РазрешеныСинхронныеВызовы() Тогда + Компонента.Напечатать(Сообщение); + Иначе + Компонента.НачатьВызовНапечатать(ЮТАсинхроннаяОбработкаСлужебныйКлиент.НовыйПустойОбработчик(3), Сообщение); + КонецЕсли; #КонецЕсли -КонецФункции - -#КонецОбласти - -#Область ПроверкаМетодов +КонецПроцедуры -// МетодМодуляСуществует -// Проверяет существование публичного (экспортного) метода у модуля -// +// Возвращяет макет +// // Параметры: -// ИмяМодуля - Строка - Имя модуля, метод которого нужно поискать -// ИмяМетода - Строка - Имя метода, который ищем -// КоличествоПараметров - Число - Количество параметров метода, увы это никак не влияет на проверку -// Кешировать - Булево - Признак кеширования результата проверки -// +// ИмяМакета - Строка - Возможные значения +// * Общий макет, например, ОбщийМакет.ЮТМетаданные +// * Макет объекта метаданных, например, Справочник.Товары.ПечатнаяФорма +// * Область макета, например, Справочник.Товары.ПечатнаяФорма.Шапка, ОбщийМакет.ЮТМетаданные.Заголовок +// // Возвращаемое значение: -// Булево - Метод найден -Функция МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров = 0, Кешировать = Истина) Экспорт - - ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМодуля, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМодуля"); - ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода"); - - Если Кешировать Тогда - Возврат ЮТПовторногоИспользования.МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров); - КонецЕсли; - - ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяМетода); - Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)"; - - Ошибка = ВыполнитьМетод(Алгоритм); +// ТабличныйДокумент, ТекстовыйДокумент, ДвоичныеДанные - Макет или его область +Функция Макет(ИмяМакета) Экспорт - ТипОшибки = ЮТРегистрацияОшибок.ТипОшибки(Ошибка, ПолноеИмяМетода); - Возврат ТипОшибки = ЮТФабрика.ТипыОшибок().МногоПараметров; + Возврат ЮТОбщийСлужебныйВызовСервера.Макет(ИмяМакета); КонецФункции -// Проверяет существование публичного (экспортного) метода у объекта -// +#Область УстаревшиеПроцедурыИФункции + +// Устарела. Метод перенесен в см. ЮТСтроки.ДобавитьСтроку +// Конкатенирует строки, разделяя их разделителем +// // Параметры: -// Объект - Произвольный - Объект, метод которого нужно поискать -// ИмяМетода - Строка - Имя метода, который ищем -// +// ИсходнаяСтрока - Строка - Исходная строка +// ДополнительнаяСтрока - Строка - Добавляемая строка +// Разделитель - Строка - Строка разделитель, любой набор символов - разделитель между подстроками +// // Возвращаемое значение: -// Булево - Метод найден -Функция МетодОбъектаСуществует(Объект, ИмяМетода) Экспорт - -#Если ВебКлиент Тогда - ВызватьИсключение МетодНеДоступен("ЮТОбщий.МетодОбъектаСуществует"); -#Иначе - ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяМетода, Тип("Строка"), "ЮТОбщий.МетодМодуляСуществует", "ИмяМетода"); - - ПолноеИмяМетода = СтрШаблон("Объект.%1", ИмяМетода); - Алгоритм = ПолноеИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)"; - - Ошибка = ВыполнитьМетод(Алгоритм, , Объект); +// Строка - Результат конкатенации строк +Функция ДобавитьСтроку(ИсходнаяСтрока, ДополнительнаяСтрока, Разделитель = ";") Экспорт - ТипОшибки = ЮТРегистрацияОшибок.ТипОшибки(Ошибка, ПолноеИмяМетода); - Возврат ТипОшибки = ЮТФабрика.ТипыОшибок().МногоПараметров; -#КонецЕсли + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ДобавитьСтроку", "ЮТСтроки.ДобавитьСтроку", "24.03"); + Возврат ЮТСтроки.ДобавитьСтроку(ИсходнаяСтрока, ДополнительнаяСтрока, Разделитель); КонецФункции -#КонецОбласти - -#Область ВызовМетодов - -Функция ВыполнитьМетод(ПолноеИмяМетода, Параметры = Неопределено, Объект = Неопределено) Экспорт - -#Если ВебКлиент Тогда - ВызватьИсключение МетодНеДоступен("ЮТОбщий.ВыполнитьМетод"); -#Иначе - Если СтрЗаканчиваетсяНа(ПолноеИмяМетода, ")") Тогда - - Алгоритм = ПолноеИмяМетода; - - ИначеЕсли НЕ ЗначениеЗаполнено(Параметры) Тогда - - Алгоритм = ПолноеИмяМетода + "()"; - - ИначеЕсли ТипЗнч(Параметры) = Тип("Массив") Тогда - - Алгоритм = СтрШаблон("%1(%2)", ПолноеИмяМетода, СтрокаПараметровМетода(Параметры, "Параметры")); - - Иначе - - ВызватьИсключение СтрШаблон("Не верный тип параметров `%1` для вызова метода, должен быть массив", ТипЗнч(Параметры)); - - КонецЕсли; - - Попытка - //@skip-check server-execution-safe-mode - Выполнить(Алгоритм); - Исключение - Возврат ИнформацияОбОшибке(); - КонецПопытки; +// Устарела. Метод перенесен в см. ЮТСтроки.РазделитьСтроку +// Возвращает массив на основании строки +// +// Параметры: +// Значение - Строка - преобразуемая строка +// Разделитель - Строка - строка-разделитель +// +// Возвращаемое значение: +// Массив Из Строка - массив строк +// +Функция РазложитьСтрокуВМассивПодстрок(Значение, Разделитель = ";") Экспорт - Возврат Неопределено; -#КонецЕсли + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.РазложитьСтрокуВМассивПодстрок", "ЮТСтроки.РазбитьСтроку", "24.03"); + Возврат ЮТСтроки.РазделитьСтроку(Значение, Разделитель); КонецФункции -Функция ВычислитьБезопасно(Выражение) Экспорт - -#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда - УстановитьБезопасныйРежим(Истина); - Попытка - Значение = Вычислить(Выражение); - Исключение - УстановитьБезопасныйРежим(Ложь); - ВызватьИсключение; - КонецПопытки; - - УстановитьБезопасныйРежим(Ложь); -#Иначе - Значение = Вычислить(Выражение); -#КонецЕсли +// Устарела. Метод перенесен в см. ЮТСтроки.СтрокаСимволов +// Формирует строку из заданного количества повторяемых символов +// Параметры: +// Символ - Строка - Повторяемый символ +// Количество - Число - Количество повторений +// +// Возвращаемое значение: +// Строка - Строка повторяемых символов +Функция СформироватьСтрокуСимволов(Символ, Количество) Экспорт - Возврат Значение; + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.СформироватьСтрокуСимволов", "ЮТСтроки.СтрокаСимволов", "24.03"); + Возврат ЮТСтроки.СтрокаСимволов(Символ, Количество); КонецФункции -#КонецОбласти - -// ПеременнаяСодержитСвойство -// функция проверяет наличие свойства у значения любого типа данных. Если передано НЕОПРЕДЕЛЕНО, то ф-ия всегда вернет Ложь +// Устарела. Метод перенесен в см. ЮТКоллекции.ЗначениеСтруктуры +// Возвращает требуемое поле структуры. В случае отсутствия поля возвращает значение по умолчанию // // Параметры: -// Переменная - Произвольный - переменная любого типа, для которой необходимо проверить наличие свойства -// ИмяСвойства - Строка - переменная типа "Строка", содержащая искомое свойства -// -// Возвращаемое значение: -// Булево - признак наличия свойства у значения +// ИсходнаяСтруктура - Структура - Исходная структура +// ИмяПоля - Строка - Имя поля структуры +// ЗначениеПоУмолчанию - Произвольный - Значение, которое будет возвращено, если поля в структуре нет // -Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) Экспорт - - Если Переменная = Неопределено Тогда - Возврат Ложь; - КонецЕсли; - - // Инициализируем структуру для теста с ключом (значение переменной "ИмяСвойства") и значением произвольного GUID'а - GUIDПроверка = Новый УникальныйИдентификатор; - СтруктураПроверка = Новый Структура; - СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); - // Заполняем созданную структуру из переданного значения переменной - ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); - // Если значение для свойства структуры осталось GUIDПроверка, то искомое свойство не найдено, и наоборот. - Возврат СтруктураПроверка[ИмяСвойства] <> GUIDПроверка; +// Возвращаемое значение: +// Произвольный - Значение искомого поля структуры +Функция ЗначениеСтруктуры(ИсходнаяСтруктура, ИмяПоля, ЗначениеПоУмолчанию = Неопределено) Экспорт + + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ЗначениеСтруктуры", "ЮТКоллекции.ЗначениеСтруктуры", "24.03"); + Возврат ЮТКоллекции.ЗначениеСтруктуры(ИсходнаяСтруктура, ИмяПоля, ЗначениеПоУмолчанию); КонецФункции -// СообщитьПользователю -// Формирует и выводит сообщение +// Устарела. Метод перенесен в см. ЮТКоллекции.ДополнитьСтруктуру +// Функция, объединяющая две коллекции( с типами Структура или Соответствие) в одну структуру, если это возможно // // Параметры: -// ТекстСообщенияПользователю - Строка - текст сообщения. -Процедура СообщитьПользователю(ТекстСообщенияПользователю) Экспорт - - Сообщение = Новый СообщениеПользователю; - Сообщение.Текст = СокрЛП(ТекстСообщенияПользователю); - Сообщение.Сообщить(); - -КонецПроцедуры - -Функция СтрокаJSON(Значение, ИспользоватьСериализатор = Истина) Экспорт +// Коллекция1 - Соответствие из Произвольный +// - Структура +// Коллекция2 - Соответствие из Произвольный +// - Структура +// +// Возвращаемое значение: +// Структура - Результат объединения двух коллекций +// +Функция ОбъединитьВСтруктуру(Знач Коллекция1, Коллекция2) Экспорт -#Если ВебКлиент Тогда - ВызватьИсключение МетодНеДоступен("ЮТОбщий.СтрокаJSON"); -#Иначе - ЗаписьJSON = Новый ЗаписьJSON(); - ЗаписьJSON.УстановитьСтроку(); - Если ИспользоватьСериализатор Тогда - СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Значение); - Иначе - ЗаписатьJSON(ЗаписьJSON, Значение); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ОбъединитьВСтруктуру", "ЮТКоллекции.ДополнитьСтруктуру", "24.03"); + Если ТипЗнч(Коллекция1) <> Тип("Структура") Тогда + Коллекция1 = ЮТКоллекции.СкопироватьСтруктуру(Коллекция1); КонецЕсли; - Возврат ЗаписьJSON.Закрыть(); -#КонецЕсли - -КонецФункции // СтрокаJSON - -Функция ПредставлениеЗначения(Значение) Экспорт + ЮТКоллекции.ДополнитьСтруктуру(Коллекция1, Коллекция2); - Попытка - Возврат СтрокаJSON(Значение); - Исключение - Возврат Строка(Значение); - КонецПопытки; + //@skip-check constructor-function-return-section + Возврат Коллекция1; КонецФункции -Функция ПредставлениеТипа(Тип) Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.СкопироватьРекурсивно +// Создает копию экземпляра указанного объекта. +// Примечание: +// Функцию нельзя использовать для объектных типов (СправочникОбъект, ДокументОбъект и т.п.). +// +// Параметры: +// Источник - Произвольный - объект, который необходимо скопировать. +// +// Возвращаемое значение: +// Произвольный - копия объекта, переданного в параметре Источник. +// +Функция СкопироватьРекурсивно(Источник) Экспорт - Возврат ЮТТипыДанныхСлужебный.ПредставлениеТипа(Тип); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.СкопироватьРекурсивно", "ЮТКоллекции.СкопироватьРекурсивно", "24.03"); + Возврат ЮТКоллекции.СкопироватьРекурсивно(Источник); КонецФункции -Функция МетодНеДоступен(ИмяМетода, ИмяКонтекста = "веб-клиенте") Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.СкопироватьСтруктуру +// Создает копию значения типа Структура +// +// Параметры: +// Источник - Структура - копируемая структура +// +// Возвращаемое значение: +// Структура - копия исходной структуры. +// +Функция СкопироватьСтруктуру(Источник) Экспорт - Возврат СтрШаблон("Метод `%1` не доступен в/на %2", ИмяМетода, ИмяКонтекста); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.СкопироватьСтруктуру", "ЮТКоллекции.СкопироватьСтруктуру", "24.03"); + Возврат ЮТКоллекции.СкопироватьСтруктуру(Источник); КонецФункции -// Параметры записи объекта -// +// Устарела. Метод перенесен в см. ЮТКоллекции.СкопироватьСоответствие +// Создает копию значения типа Соответствие. +// +// Параметры: +// Источник - Соответствие из Произвольный - соответствие, копию которого необходимо получить. +// // Возвращаемое значение: -// Структура - Параметры записи: -// * ОбменДаннымиЗагрузка - Булево -// * ДополнительныеСвойства - Структура -// * РежимЗаписи - РежимЗаписиДокумента -// - Неопределено -Функция ПараметрыЗаписи() Экспорт - - ПараметрыЗаписи = Новый Структура(); - ПараметрыЗаписи.Вставить("ОбменДаннымиЗагрузка", Ложь); - ПараметрыЗаписи.Вставить("ДополнительныеСвойства", Новый Структура); - ПараметрыЗаписи.Вставить("РежимЗаписи", Неопределено); +// Соответствие Из Произвольный - копия исходного соответствия. +// +Функция СкопироватьСоответствие(Источник) Экспорт - Возврат ПараметрыЗаписи; + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.СкопироватьСоответствие", "ЮТКоллекции.СкопироватьСоответствие", "24.03"); + Возврат ЮТКоллекции.СкопироватьСоответствие(Источник); КонецФункции -// Описание типов любая ссылка. -// +// Устарела. Метод перенесен в см. ЮТКоллекции.СкопироватьМассив +// Создает копию значения типа Массив. +// +// Параметры: +// Источник - Массив Из Произвольный - массив, копию которого необходимо получить +// // Возвращаемое значение: -// ОписаниеТипов - Описание типов любая ссылка -Функция ОписаниеТиповЛюбаяСсылка() Экспорт +// Массив Из Произвольный - копия исходного массива. +// +Функция СкопироватьМассив(Источник) Экспорт - Возврат ЮТПовторногоИспользования.ОписаниеТиповЛюбаяСсылка(); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.СкопироватьМассив", "ЮТКоллекции.СкопироватьМассив", "24.03"); + Возврат ЮТКоллекции.СкопироватьМассив(Источник); КонецФункции -Процедура ВызовУстаревшегоМетода(УстаревшийМетод, РекомендуемыйМетод = Неопределено) Экспорт - - Сообщение = СтрШаблон("Используется устаревший метод '%1'. В следующий релизах метод будет удален", УстаревшийМетод); - - Если ЗначениеЗаполнено(РекомендуемыйМетод) Тогда - Сообщение = СтрШаблон("%1. Рекомендуется использовать '%2'", Сообщение, РекомендуемыйМетод); - КонецЕсли; +// Устарела. Метод перенесен в см. ЮТКоллекции.СкопироватьСписокЗначений +// Создает копию значения типа СписокЗначений. +// +// Параметры: +// Источник - СписокЗначений Из Произвольный - список значений, копию которого необходимо получить +// +// Возвращаемое значение: +// СписокЗначений Из Произвольный - копия исходного списка значений +// +Функция СкопироватьСписокЗначений(Источник) Экспорт - СообщитьПользователю(Сообщение); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.СкопироватьСписокЗначений", "ЮТКоллекции.СкопироватьСписокЗначений", "24.03"); + Возврат ЮТКоллекции.СкопироватьСписокЗначений(Источник); -КонецПроцедуры +КонецФункции -Функция НеподдерживаемыйПараметрМетода(ИмяМетода, ЗначениеПараметра) Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.ВыгрузитьЗначения +// +// Параметры: +// Коллекция - Произвольный +// ИмяРеквизита - Строка +// +// Возвращаемое значение: +// Массив из Произвольный - Выгрузить значения +Функция ВыгрузитьЗначения(Коллекция, ИмяРеквизита) Экспорт - Возврат СтрШаблон("Неподдерживаемый параметр метода `%1` `%2`(%3)", ИмяМетода, ЗначениеПараметра, ТипЗнч(ЗначениеПараметра)); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ВыгрузитьЗначения", "ЮТКоллекции.ВыгрузитьЗначения", "24.03"); + Возврат ЮТКоллекции.ВыгрузитьЗначения(Коллекция, ИмяРеквизита); КонецФункции -Функция УстановленБезопасныйРежим() Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.ВыгрузитьЗначения +// +// Параметры: +// Коллекция1 - Массив из Произвольный +// Коллекция2 - Массив из Произвольный +// +// Возвращаемое значение: +// Массив из Произвольный - Пересечение массивов +Функция ПересечениеМассивов(Коллекция1, Коллекция2) Экспорт - Возврат ЮТОбщийВызовСервера.УстановленБезопасныйРежим(); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ПересечениеМассивов", "ЮТКоллекции.ПересечениеМассивов", "24.03"); + Возврат ЮТКоллекции.ПересечениеМассивов(Коллекция1, Коллекция2); КонецФункции -Функция МестноеВремяПоВременнойМетке(Метка) Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.ЗначениеВМассиве +// Создает массив с переданными значениями +// +// Параметры: +// Значение - Произвольный +// Значение2 - Произвольный +// Значение3 - Произвольный +// Значение4 - Произвольный +// Значение5 - Произвольный +// Значение6 - Произвольный +// Значение7 - Произвольный +// Значение8 - Произвольный +// Значение9 - Произвольный +// Значение10 - Произвольный +// +// Возвращаемое значение: +// Массив из Произвольный +//@skip-check method-too-many-params +Функция ЗначениеВМассиве(Значение, + Значение2 = "_!%*", + Значение3 = "_!%*", + Значение4 = "_!%*", + Значение5 = "_!%*", + Значение6 = "_!%*", + Значение7 = "_!%*", + Значение8 = "_!%*", + Значение9 = "_!%*", + Значение10 = "_!%*") Экспорт - Если ЗначениеЗаполнено(Метка) Тогда - Возврат МестноеВремя('00010101' + Метка / 1000); - Иначе - Возврат Неопределено; - КонецЕсли; + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ЗначениеВМассиве", "ЮТКоллекции.ЗначениеВМассиве", "24.03"); + Возврат ЮТКоллекции.ЗначениеВМассиве(Значение, Значение2, Значение3, Значение4, Значение5, Значение6, Значение7, Значение8, Значение9, Значение10); КонецФункции -Функция ПродолжительностьВСекундах(Продолжительность) Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.ДополнитьМассив +// +// Параметры: +// Приемник - Массив из Произвольный +// Источник - Массив из Произвольный +Процедура ДополнитьМассив(Приемник, Источник) Экспорт - Возврат Продолжительность / 1000; + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ДополнитьМассив", "ЮТКоллекции.ДополнитьМассив", "24.03"); + ЮТКоллекции.ДополнитьМассив(Приемник, Источник); -КонецФункции +КонецПроцедуры -Функция Модуль(ИмяМодуля) Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.ВСоответствие +// Возвращает соответствие элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции. +// +// Параметры: +// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки. +// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия. +// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции. +// Возвращаемое значение: +// Соответствие Из Произвольный - полученное соответствие. +Функция ВСоответствие(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт - Возврат ВычислитьБезопасно(ИмяМодуля); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ВСоответствие", "ЮТКоллекции.ВСоответствие", "24.03"); + Возврат ЮТКоллекции.ВСоответствие(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения); КонецФункции -Функция Менеджер(Знач Менеджер) Экспорт +// Устарела. Метод перенесен в см. ЮТКоллекции.ВСтруктуру +// Возвращает структуру элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции. +// +// Параметры: +// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки. +// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия. +// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции. +// Возвращаемое значение: +// Структура Из Произвольный - полученная структура. +Функция ВСтруктуру(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт -#Если Сервер Тогда - Возврат ЮТОбщийВызовСервера.Менеджер(Менеджер); -#Иначе - ВызватьИсключение МетодНеДоступен("ЮТОбщий.Менеджер", "клиенте"); -#КонецЕсли + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ВСтруктуру", "ЮТКоллекции.ВСтруктуру", "24.03"); + Возврат ЮТКоллекции.ВСтруктуру(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения); КонецФункции -Функция ТипСтруктуры(Структура) Экспорт +// Устарела. МетодМодуляСуществует +// Проверяет существование публичного (экспортного) метода у модуля +// +// Параметры: +// ИмяМодуля - Строка - Имя модуля, метод которого нужно поискать +// ИмяМетода - Строка - Имя метода, который ищем +// КоличествоПараметров - Число - Количество параметров метода, увы это никак не влияет на проверку +// Кешировать - Булево - Признак кеширования результата проверки +// +// Возвращаемое значение: +// Булево - Метод найден +Функция МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров = 0, Кешировать = Истина) Экспорт - Возврат ЗначениеСтруктуры(Структура, "__type__"); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.МетодМодуляСуществует", Неопределено, "24.03"); + Возврат ЮТМетодыСлужебный.МетодМодуляСуществует(ИмяМодуля, ИмяМетода, Кешировать); КонецФункции -Функция ЭтаСтруктураИмеетТип(Структура, ИмяТипа) Экспорт +// Устарела. Проверяет существование публичного (экспортного) метода у объекта +// +// Параметры: +// Объект - Произвольный - Объект, метод которого нужно поискать +// ИмяМетода - Строка - Имя метода, который ищем +// +// Возвращаемое значение: +// Булево - Метод найден +Функция МетодОбъектаСуществует(Объект, ИмяМетода) Экспорт - Возврат ТипСтруктуры(Структура) = ИмяТипа; + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.МетодОбъектаСуществует", Неопределено, "24.03"); + Возврат ЮТМетодыСлужебный.МетодОбъектаСуществует(Объект, ИмяМетода); КонецФункции -Процедура УказатьТипСтруктуры(Структура, ИмяТипа) Экспорт +// Устарела. +Функция ВыполнитьМетод(ПолноеИмяМетода, Параметры = Неопределено, Объект = Неопределено) Экспорт - Структура.Вставить("__type__", ИмяТипа); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ВыполнитьМетод", Неопределено, "24.03"); + Возврат ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода, Параметры, Объект); -КонецПроцедуры +КонецФункции -// Преостанавливает поток выполнения на указанное количество секунд -// -// Параметры: -// Время - Число - Продолжительность паузы в секундах, возможно указывать дробное значение -Процедура Пауза(Время) Экспорт +// Устарела. +Функция ВычислитьБезопасно(Выражение) Экспорт - Задержка = Цел(1000 * Время); - Компонента = ЮТКомпоненты.Пауза(); -#Если Сервер Тогда - Компонента.Ожидать(Задержка); -#Иначе - Если ЮТМетаданные.РазрешеныСинхронныеВызовы() Тогда - Компонента.Ожидать(Задержка); - Иначе - ВызватьИсключение "Пауза не работает на клиенте при отключенных синхронных вызовах"; - КонецЕсли; -#КонецЕсли - -КонецПроцедуры + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ВычислитьБезопасно", Неопределено, "24.03"); + Возврат ЮТМетодыСлужебный.ВычислитьБезопасно(Выражение); + +КонецФункции -// Выводит сообщение в консоль (stdout) приложения -// -// Параметры: -// Сообщение - Строка - Выводимое сообщение -Процедура ВывестиВКонсоль(Сообщение) Экспорт +// Устарела. +Функция ПредставлениеТипа(Тип) Экспорт - Компонента = ЮТКомпоненты.Консоль(); -#Если Сервер Тогда - Компонента.Напечатать(Сообщение); -#Иначе - Если ЮТМетаданные.РазрешеныСинхронныеВызовы() Тогда - Компонента.Напечатать(Сообщение); - Иначе - Компонента.НачатьВызовНапечатать(ЮТАсинхроннаяОбработкаСлужебныйКлиент.НовыйПустойОбработчик(3), Сообщение); - КонецЕсли; -#КонецЕсли + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ПредставлениеТипа", Неопределено, "24.03"); + Возврат ЮТТипыДанныхСлужебный.ПредставлениеТипа(Тип); -КонецПроцедуры +КонецФункции -// Возвращяет макет -// -// Параметры: -// ИмяМакета - Строка - Возможные значения -// * Общий макет, например, ОбщийМакет.ЮТМетаданные -// * Макет объекта метаданных, например, Справочник.Товары.ПечатнаяФорма -// * Область макета, например, Справочник.Товары.ПечатнаяФорма.Шапка, ОбщийМакет.ЮТМетаданные.Заголовок -// +// Устарела. Описание типов любая ссылка. +// // Возвращаемое значение: -// ТабличныйДокумент, ТекстовыйДокумент, ДвоичныеДанные - Макет или его область -Функция Макет(ИмяМакета) Экспорт +// ОписаниеТипов - Описание типов любая ссылка +Функция ОписаниеТиповЛюбаяСсылка() Экспорт - Возврат ЮТОбщийВызовСервера.Макет(ИмяМакета); + ЮТМетодыСлужебный.ВызовУстаревшегоМетода("ЮТОбщий.ОписаниеТиповЛюбаяСсылка", Неопределено, "24.03"); + Возврат ЮТТипыДанныхСлужебный.ОписаниеТиповЛюбаяСсылка(); КонецФункции #КонецОбласти -#Область СлужебныеПроцедурыИФункции +#КонецОбласти -Функция ДобавитьКлючИЗначениеВКоллекцию(КоллекцияРезультат, Коллекция) - - Для Каждого Элемент Из Коллекция Цикл - - КоллекцияРезультат.Вставить(Элемент.Ключ, Элемент.Значение); - - КонецЦикла; - - Возврат КоллекцияРезультат; - -КонецФункции +#Область СлужебныеПроцедурыИФункции Функция ПредставлениеОбъекта(Объект, Знач Уровень = 1, ПредставлениеОбъекта = Неопределено) @@ -1003,10 +754,10 @@ ПредставлениеТипа = ТипОбъекта; Если ТипОбъекта = Тип("Структура") ИЛИ ТипОбъекта = Тип("Соответствие") Тогда - СформироватьСтрокуСимволов(" ", Уровень * 4); + ЮТСтроки.СтрокаСимволов(" ", Уровень * 4); Шаблон = "%2: - |%1"; - Представление = СформироватьСтрокуСимволов(" ", Уровень * 4) + ПредставлениеСтруктуры(Объект, Уровень); + |%1"; + Представление = ЮТСтроки.СтрокаСимволов(" ", Уровень * 4) + ПредставлениеСтруктуры(Объект, Уровень); ИначеЕсли ТипОбъекта = Тип("Массив") Тогда @@ -1056,7 +807,7 @@ КонецЦикла; - Возврат СтрСоединить(Строки, Символы.ПС + СформироватьСтрокуСимволов(" ", Уровень * 4)); + Возврат СтрСоединить(Строки, Символы.ПС + ЮТСтроки.СтрокаСимволов(" ", Уровень * 4)); КонецФункции @@ -1096,7 +847,7 @@ Функция СодержитИндекс(ИмяСвойства) - Возврат СтрНайти(ИмяСвойства, "[") > 0 И СтрЗаканчиваетсяНа(ИмяСвойства, "]") ; + Возврат СтрНайти(ИмяСвойства, "[") > 0 И СтрЗаканчиваетсяНа(ИмяСвойства, "]"); КонецФункции @@ -1121,30 +872,19 @@ КонецПроцедуры -Функция СтрокаПараметровМетода(Параметры, ИмяПеременнойСПараметрами) - - СписокПараметров = Новый Массив(); +Функция МножительПериода(ТипИнтервала) - Для Инд = 0 По Параметры.ВГраница() Цикл - - Если Параметры[Инд] = Мокито.ПараметрПоУмолчанию() Тогда - СписокПараметров.Добавить(""); - Иначе - СписокПараметров.Добавить(СтрШаблон("%1[%2]", ИмяПеременнойСПараметрами, Инд)); - КонецЕсли; - - КонецЦикла; - - Возврат СтрСоединить(СписокПараметров, ", "); + Множители = ЮТСлужебныйПовторногоИспользования.МножителиИнтервалов(); + Возврат Множители[ТипИнтервала]; КонецФункции -Функция ДобавитьНеПоследнее(Значения, Значение, ФлагОкончания = "_!%*") - Если Значение <> ФлагОкончания Тогда - Значения.Добавить(Значение); - Возврат Истина; - КонецЕсли; - Возврат Ложь; +Функция ЭтоМесяц(ТипИнтервала) + + Возврат СтрСравнить(ТипИнтервала, "месяц") = 0 + ИЛИ СтрСравнить(ТипИнтервала, "месяца") = 0 + ИЛИ СтрСравнить(ТипИнтервала, "месяцев") = 0; + КонецФункции #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 93% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index d3cd52c9d..93863b778 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -41,7 +41,8 @@ Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер); Если Описание = Неопределено Тогда - ВызватьИсключение "Несуществующий объект метаданных, либо " + ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТОбщийВызовСервера.Менеджер", Менеджер); + ВызватьИсключение "Несуществующий объект метаданных, либо " + + ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТОбщийВызовСервера.Менеджер", Менеджер); КонецЕсли; ИмяТипа = ""; @@ -105,13 +106,13 @@ Функция ЭтоАнглийскийВстроенныйЯзык() Экспорт - Возврат ЮТМетаданныеПовтИсп.ВариантВстроенногоЯзыка() = "English"; + Возврат ЮТМетаданныеСлужебныйПовтИсп.ВариантВстроенногоЯзыка() = "English"; КонецФункции Функция ЭтоРусскийВстроенныйЯзык() Экспорт - Возврат ЮТМетаданныеПовтИсп.ВариантВстроенногоЯзыка() = "Русский"; + Возврат ЮТМетаданныеСлужебныйПовтИсп.ВариантВстроенногоЯзыка() = "Русский"; КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 84% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 8d98953f6..ffb866b9b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТОбщийВызовСервера + ЮТОбщийСлужебныйВызовСервера ru Общий (вызов сервера) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\256\320\242\320\236\321\202\321\207\320\265\321\202.suppress" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\256\320\242\320\236\321\202\321\207\320\265\321\202.suppress" deleted file mode 100644 index 59c6e1d27..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\256\320\242\320\236\321\202\321\207\320\265\321\202.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 95% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 04801a02b..faad6baad 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -20,9 +20,9 @@ Функция ПараметрыГенерацииОтчета() Экспорт - Параметры = ЮТФабрика.ПараметрыГенератораОтчета(); + Параметры = ЮТФабрикаСлужебный.ПараметрыГенератораОтчета(); - ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("allure", "Allure 2 (json)"); + ОписаниеФормата = ЮТФабрикаСлужебный.ОписаниеФорматаОтчета("allure", "Allure 2 (json)"); ОписаниеФормата.ЗаписьВКаталог = Истина; ОписаниеФормата.СамостоятельнаяЗаписьОтчета = Истина; Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата); @@ -130,8 +130,8 @@ Для Каждого ОписаниеОшибки Из РезультатТеста.Ошибки Цикл - Описание.statusDetails.message = ЮТОбщий.ДобавитьСтроку(Описание.statusDetails.message, ОписаниеОшибки.Сообщение, Символы.ПС); - Описание.statusDetails.trace = ЮТОбщий.ДобавитьСтроку(Описание.statusDetails.trace, ОписаниеОшибки.Стек, Символы.ПС); + Описание.statusDetails.message = ЮТСтроки.ДобавитьСтроку(Описание.statusDetails.message, ОписаниеОшибки.Сообщение, Символы.ПС); + Описание.statusDetails.trace = ЮТСтроки.ДобавитьСтроку(Описание.statusDetails.trace, ОписаниеОшибки.Стек, Символы.ПС); КонецЦикла; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 87% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 5873099b4..39707d092 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТОтчетAllure + ЮТОтчетAllureСлужебный ru Отчет allure diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON.suppress" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON.suppress" deleted file mode 100644 index 9346e2632..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 82% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 007fe6834..d2d5d568b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -20,9 +20,9 @@ Функция ПараметрыГенерацииОтчета() Экспорт - Параметры = ЮТФабрика.ПараметрыГенератораОтчета(); + Параметры = ЮТФабрикаСлужебный.ПараметрыГенератораОтчета(); - ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("dumpjson", "Дамп результата тестирования в json"); + ОписаниеФормата = ЮТФабрикаСлужебный.ОписаниеФорматаОтчета("dumpjson", "Дамп результата тестирования в json"); ОписаниеФормата.ИмяФайлаПоУмолчанию = "report.json"; ОписаниеФормата.ФильтрВыбораФайла = "Дамп результата тестирования (*.json)|*.json"; Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата); @@ -34,8 +34,8 @@ // Формирует отчет в формате JSON // // Параметры: -// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля -// Формат - см. ЮТФабрика.ОписаниеФорматаОтчета +// РезультатВыполнения - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля +// Формат - см. ЮТФабрикаСлужебный.ОписаниеФорматаОтчета // Возвращаемое значение: // ДвоичныеДанные - Данные отчета Функция ДанныеОтчета(РезультатВыполнения, Формат) Экспорт diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 88% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index c2f49de1b..db11fb798 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JSON\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТОтчетJSON + ЮТОтчетJSONСлужебный ru Отчет JSON diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 95% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 85866670e..9c9c40a99 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -20,9 +20,9 @@ Функция ПараметрыГенерацииОтчета() Экспорт - Параметры = ЮТФабрика.ПараметрыГенератораОтчета(); + Параметры = ЮТФабрикаСлужебный.ПараметрыГенератораОтчета(); - ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("jUnit", "JUnit"); + ОписаниеФормата = ЮТФабрикаСлужебный.ОписаниеФорматаОтчета("jUnit", "JUnit"); ОписаниеФормата.ИмяФайлаПоУмолчанию = "junit.xml"; ОписаниеФормата.ФильтрВыбораФайла = "jUnit(*.xml)|*.xml"; Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата); @@ -34,8 +34,8 @@ // Формирует отчет в формате jUnit // // Параметры: -// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля -// Формат - см. ЮТФабрика.ОписаниеФорматаОтчета +// РезультатВыполнения - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля +// Формат - см. ЮТФабрикаСлужебный.ОписаниеФорматаОтчета // // Возвращаемое значение: // ДвоичныеДанные - Данные отчета @@ -53,7 +53,7 @@ // Формирует отчет (xml-файл) и возвращает его в виде двоичных данных // // Параметры: -// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// РезультатТестирования - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля // Возвращаемое значение: // ДвоичныеДанные - полученный отчет Функция СформироватьОтчетОТестировании(РезультатТестирования) @@ -104,7 +104,7 @@ Для Каждого ОписаниеОшибки Из РезультатТеста.Ошибки Цикл - Статус = ЮТРегистрацияОшибок.СтатусОшибки(ОписаниеОшибки.ТипОшибки); + Статус = ЮТРегистрацияОшибокСлужебный.СтатусОшибки(ОписаниеОшибки.ТипОшибки); ИмяУзла = Неопределено; ЗаписатьЗначения = Ложь; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 87% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 3605a0dfa..967ce71fc 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТОтчетJUnit + ЮТОтчетJUnitСлужебный ru Отчет jUnit diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 94% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index e58cf3529..c35479552 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -21,7 +21,7 @@ // СформироватьОтчет // Формирует отчет о результатах тестирования по заданным параметрам // Параметры: -// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// РезультатВыполнения - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля // ПараметрыЗапуска - Структура - Параметры запуска, см. ЮТФабрика.ПараметрыЗапуска // Обработчик - ОписаниеОповещения Процедура СформироватьОтчет(РезультатВыполнения, ПараметрыЗапуска, Обработчик) Экспорт @@ -56,16 +56,16 @@ // Возвращаемое значение: // Структура - Поддерживаемые форматы отчетов // + Ключ - Идентификатор формата -// + Значение - см. ЮТФабрика.ОписаниеФорматаОтчета +// + Значение - см. ЮТФабрикаСлужебный.ОписаниеФорматаОтчета Функция ПоддерживаемыеФорматыОтчетов() Экспорт - Модули = ЮТРасширения.ГенераторыОтчетов(); + Модули = ЮТРасширенияСлужебный.ГенераторыОтчетов(); Форматы = Новый Структура; Для Каждого Модуль Из Модули Цикл Параметры = Модуль.ПараметрыГенерацииОтчета(); - ЮТОбщий.ОбъединитьВСтруктуру(Форматы, Параметры.Форматы); + ЮТКоллекции.ДополнитьСтруктуру(Форматы, Параметры.Форматы); КонецЦикла; @@ -106,7 +106,7 @@ Функция МодульФормирования(Формат) - Модули = ЮТРасширения.ГенераторыОтчетов(); + Модули = ЮТРасширенияСлужебный.ГенераторыОтчетов(); Для Каждого Модуль Из Модули Цикл diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\256\320\242\320\236\321\202\321\207\320\265\321\202.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 88% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\256\320\242\320\236\321\202\321\207\320\265\321\202.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 45a1b3073..8df729cc0 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\256\320\242\320\236\321\202\321\207\320\265\321\202.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТОтчет + ЮТОтчетСлужебный ru Отчет diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260.suppress" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260.suppress" deleted file mode 100644 index 8a6cb292f..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 91% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index e4746bd37..b0b7c7e82 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -34,7 +34,7 @@ Исключение - ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуИнициализацииДвижка(ИнформацияОбОшибке(), "Ошибка чтения параметров запуска"); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуИнициализацииДвижка(ИнформацияОбОшибке(), "Ошибка чтения параметров запуска"); Параметры = ЮТФабрика.ПараметрыЗапуска(); КонецПопытки; @@ -73,7 +73,7 @@ Возврат Параметры; КонецЕсли; - ПарыКлючЗначение = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ПараметрыЗапускаСтрокой, ";"); + ПарыКлючЗначение = ЮТСтроки.РазделитьСтроку(ПараметрыЗапускаСтрокой, ";"); ПараметрыЗапуска = Новый Структура; @@ -83,7 +83,7 @@ Продолжить; КонецЕсли; - КлючЗначение = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Пара, "="); + КлючЗначение = ЮТСтроки.РазделитьСтроку(Пара, "="); Если КлючЗначение.Количество() = 1 Тогда ПараметрыЗапуска.Вставить(КлючЗначение[0], Истина); @@ -93,7 +93,7 @@ КонецЦикла; - ЗначениеКлючаЗапуска = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска, КлючЗапуска(), Ложь); + ЗначениеКлючаЗапуска = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска, КлючЗапуска(), Ложь); Если ТипЗнч(ЗначениеКлючаЗапуска) = Тип("Булево") Тогда diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 88% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 8f24fd55c..abb79f6ca 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТПараметрыЗапуска + ЮТПараметрыЗапускаСлужебный ru Параметры diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/Module.bsl" index 94f81be79..63270c715 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -31,15 +31,15 @@ Функция НомерСчета(БИК, КодВалюты = "810", ЮрЛицо = Истина) Экспорт Если СтрДлина(КодВалюты) <> 3 Тогда - ВызватьИсключение "Длина кода валюты должна быть равна 3"; + ВызватьИсключение ЮТИсключения.НекорректныеПараметрыМетода("НомерСчета", "Длина кода валюты должна быть равна 3"); КонецЕсли; - + БалансовыйСчет = ?(ЮрЛицо, "40702", "40802"); НомерСчетаВБанке = ЮТТестовыеДанные.СлучайнаяСтрока(11, , "0123456789"); - + ЧислоДляРасчетаКонтрольнойСуммы = Прав(БИК, 3) + БалансовыйСчет + КодВалюты + "0" + НомерСчетаВБанке; Весы = ВесовыеКоэффициентаДляРасчетаКонтрольнойСуммыСчета(); - + КонтрольнаяСумма = 0; Для Индекс = 0 По 22 Цикл КонтрольнаяСумма = @@ -47,9 +47,9 @@ + Число(Сред(ЧислоДляРасчетаКонтрольнойСуммы, Индекс + 1, 1)) * Число(Весы.Получить(Индекс)) ; КонецЦикла; - + КонтрольноеЧисло = ((КонтрольнаяСумма % 10) * 3) % 10; - + Возврат СтрШаблон( "%1%2%3%4", БалансовыйСчет, @@ -57,7 +57,7 @@ КонтрольноеЧисло, НомерСчетаВБанке ); - + КонецФункции // Формирует случайный валидный БИК банка diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" index 0db6cf961..95dafc0f4 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" @@ -196,7 +196,7 @@ Возврат Пол; КонецЕсли; - Варианты = ЮТОбщий.ВыгрузитьЗначения(ПолЧеловека(), "Значение"); + Варианты = ЮТКоллекции.ВыгрузитьЗначения(ПолЧеловека(), "Значение"); Возврат ЮТТестовыеДанные.СлучайноеЗначениеИзСписка(Варианты); КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 233a83712..c4fac2939 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ // ФиксированныйМассив из Строка Функция Словарь(ИмяРеализации, ИмяСловаря, Знач КодЛокализации = Неопределено) Экспорт КодЛокализации = ?(КодЛокализации = Неопределено, ЮТПодражатель.Локализация(), КодЛокализации); - Возврат ЮТПодражательПовтИсп.Словарь(ИмяРеализации, ИмяСловаря, КодЛокализации); + Возврат ЮТПодражательСлужебныйПовтИсп.Словарь(ИмяРеализации, ИмяСловаря, КодЛокализации); КонецФункции // Случайное значение из словаря. @@ -49,7 +49,7 @@ // см. НовыйКонтекст Функция Контекст() Экспорт //@skip-check constructor-function-return-section - Возврат ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста()); + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(КлючКонтекста()); КонецФункции // Инициализирует подражатель @@ -58,7 +58,7 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Инициализировать() Экспорт Если Контекст() = Неопределено Тогда - ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст()); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст()); КонецЕсли; Возврат ЮТПодражатель; КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 96% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index 4f451296b..fae40b312 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 80% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 69798e1ec..530b3b432 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТПодражательВызовСервера + ЮТПодражательСлужебныйВызовСервера ru Подражатель вызов сервера diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" similarity index 91% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" index ffdcc80c8..ff5c18a18 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ // ФиксированныйМассив из Строка Функция Словарь(ИмяРеализации, ИмяСловаря, КодЛокализации) Экспорт Кодификатор = КодификаторСловаря(ИмяРеализации, ИмяСловаря, КодЛокализации); - Возврат Новый ФиксированныйМассив(ЮТПодражательВызовСервера.ДанныеСловаря(Кодификатор)); + Возврат Новый ФиксированныйМассив(ЮТПодражательСлужебныйВызовСервера.ДанныеСловаря(Кодификатор)); КонецФункции #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" similarity index 87% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" index 58d6d844b..47a95dc1a 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" @@ -1,6 +1,6 @@ - ЮТПодражательПовтИсп + ЮТПодражательСлужебныйПовтИсп ru Подражатель повт исп diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213/Module.bsl" index 025636fb7..d6721454f 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213/Module.bsl" @@ -41,6 +41,22 @@ КонецФункции +// Устанавливает имя свойства, все последующие проверки будут относится к нему. +// Это алиас для см. Реквизит +// +// Параметры: +// ИмяСвойства - Строка - Имя реквизита +// - Число - Индекс коллекции +// - Произвольный - Ключ соответствия +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция Свойство(ИмяСвойства) Экспорт + + Возврат Реквизит(ИмяСвойства); + +КонецФункции + // Добавляет предикат, проверяющий равенство объекта (свойства) указанному значению // // Параметры: @@ -295,6 +311,21 @@ КонецФункции +// Добавляет условие, что проверяемое значение (или значение его свойства) входит в список значений +// +// Параметры: +// Значения - Массив из Произвольный - Значения для проверки +// - СписокЗначений из Произвольный - Значения для проверки +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция ВСписке(Значения) Экспорт + + ДобавитьПредикат(Выражения().ВСписке, Значения); + Возврат ЮТПредикаты; + +КонецФункции + // Возвращает набор сформированных утверждений. // // Рекомендуется использовать этот метод, если планируется отложенная проверка предикатов. Например, вы хотите сформировать два набору предикатов @@ -306,7 +337,7 @@ // Массив из см. ЮТФабрика.ВыражениеПредиката - Набор предикатов Функция Получить() Экспорт - Возврат ЮТОбщий.СкопироватьМассив(Контекст().Предикаты); + Возврат ЮТКоллекции.СкопироватьМассив(Контекст().Предикаты); КонецФункции @@ -325,7 +356,7 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Инициализировать(Условия = Неопределено) Экспорт - ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст()); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст()); Если ЗначениеЗаполнено(Условия) Тогда Для Каждого Элемент Из Условия Цикл @@ -358,6 +389,7 @@ Выражения.Вставить("НеСодержит", "НеСодержит"); Выражения.Вставить("СодержитСтрокуПоШаблону", "СодержитСтрокуПоШаблону"); Выражения.Вставить("НеСодержитСтрокуПоШаблону", "НеСодержитСтрокуПоШаблону"); + Выражения.Вставить("ВСписке", "ВСписке"); Возврат Новый ФиксированнаяСтруктура(Выражения); @@ -370,7 +402,7 @@ Функция Контекст() //@skip-check constructor-function-return-section - Возврат ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста()); + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(КлючКонтекста()); КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 90% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 5674c384f..53034b530 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,19 +19,19 @@ #Область СлужебныйПрограммныйИнтерфейс // Проверить предикат. -// +// // Параметры: // Значение - Произвольный // Предикаты - Массив Из см. ЮТФабрика.ВыражениеПредиката // ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке // ПараметрыСравнения - Неопределено // - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры -// +// // Возвращаемое значение: -// см. ЮТФабрика.ОписаниеРезультатаПроверки +// см. ЮТФабрикаСлужебный.ОписаниеРезультатаПроверки Функция ПроверитьПредикаты(Знач Значение, Знач Предикаты, Знач ПараметрыСообщенийОбОшибке = Неопределено, ПараметрыСравнения = Неопределено) Экспорт - Результат = ЮТФабрика.ОписаниеРезультатаПроверки(); + Результат = ЮТФабрикаСлужебный.ОписаниеРезультатаПроверки(); Если ПараметрыСообщенийОбОшибке = Неопределено Тогда ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(); @@ -40,7 +40,7 @@ Предикаты = НаборПредикатов(Предикаты); Для Каждого Выражение Из Предикаты Цикл - ЮТСравнениеКлиентСервер.ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); + ЮТСравнениеСлужебныйКлиентСервер.ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); Если НЕ Результат.Успешно Тогда Прервать; КонецЕсли; @@ -52,12 +52,12 @@ КонецФункции // Набор предикатов. -// +// // Параметры: // Предикаты - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор утверждений. см. ЮТест.Предикат // - см. ЮТФабрика.ВыражениеПредиката // - CommonModule.ЮТПредикаты - Модуль настройки предикатов, см. ЮТест.Предикат -// +// // Возвращаемое значение: // Массив из см. ЮТФабрика.ВыражениеПредиката - Набор предикатов Функция НаборПредикатов(Знач Предикаты) Экспорт @@ -69,9 +69,9 @@ ИначеЕсли ЭтоПредикатМассив(ТипПараметра, Предикаты) Тогда Результат = Предикаты; ИначеЕсли ЭтоПредикатСтруктура(ТипПараметра, Предикаты) Тогда - Результат = ЮТОбщий.ЗначениеВМассиве(Предикаты); + Результат = ЮТКоллекции.ЗначениеВМассиве(Предикаты); Иначе - ВызватьИсключение "Некорректный параметр метода `ЮТПредикатыКлиентСервер.НаборПредикатов`"; + ВызватьИсключение ЮТИсключения.НекорректныеПараметрыМетода("ЮТПредикатыКлиентСервер.НаборПредикатов"); КонецЕсли; Возврат Результат; @@ -79,10 +79,10 @@ КонецФункции // Это предикат -// +// // Параметры: // Предикаты - Произвольный - значение, для которого будет определено является ли оно предикатом или нет -// +// // Возвращаемое значение: // Булево Функция ЭтоПредикат(Предикаты) Экспорт @@ -90,8 +90,8 @@ ТипПараметра = ТипЗнч(Предикаты); Возврат ЭтоПредикатОбщийМодуль(ТипПараметра, Предикаты) - Или ЭтоПредикатМассив(ТипПараметра, Предикаты) - Или ЭтоПредикатСтруктура(ТипПараметра, Предикаты); + ИЛИ ЭтоПредикатМассив(ТипПараметра, Предикаты) + ИЛИ ЭтоПредикатСтруктура(ТипПараметра, Предикаты); КонецФункции @@ -142,6 +142,8 @@ Шаблон = "содержит %1"; ИначеЕсли Выражение = Выражения.СодержитСтрокуПоШаблону Тогда Шаблон = "содержит подстроку соответствующую шаблону %1"; + ИначеЕсли Выражение = Выражения.ВСписке Тогда + Шаблон = "в списке %1"; Иначе ВызватьИсключение "Не описан шаблон сообщения для выражения предиката " + Выражение; КонецЕсли; @@ -167,12 +169,12 @@ КонецФункции // Параметры сообщений об ошибке. -// +// // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки // ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения // ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения -// +// // Возвращаемое значение: // Структура - Параметры сообщений об ошибке: // * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки @@ -203,8 +205,8 @@ ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " "; КонецЕсли; - Выражение = ЮТСообщенияСлужебный.ПодставитьПредставлениеЗначенияВШаблон( - ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение); + Выражение = ЮТСообщенияСлужебный.ПодставитьПредставлениеЗначенияВШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), + ВыражениеПредиката.Значение); Возврат СтрШаблон("%1%2", ПроверяемоеЗначение, Выражение); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 84% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index a7e62ecdf..621b78a11 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,6 +1,6 @@ - ЮТПредикатыКлиентСервер + ЮТПредикатыСлужебныйКлиентСервер ru Предикаты клиент сервер diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 95% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 7de12ce53..ad9d96dc0 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -203,9 +203,7 @@ ЭтоНулеваяЗона = ДлинаСтроки = ДлинаДатыВНулевойЗоне И СтрЗаканчиваетсяНа(ДатаСтрока, "Z"); Если ДлинаСтроки < ДлинаБезВремени Или ДлинаСтроки > ДлинаСВременем Или ЭтоНулеваяЗона Тогда - - ВызватьИсключение "Дата в строке не подходит ни под одну маску."; - + ВызватьИсключение ЮТИсключения.НекорректныеПараметрыМетода("ПривестиЗначениеКДате", "Дата в строке не подходит ни под одну маску."); КонецЕсли; КонецПроцедуры @@ -224,9 +222,7 @@ МесяцевВГоду = 12; Если Число(МесяцСтрокой) > МесяцевВГоду Или Число(МесяцСтрокой) = 0 Тогда - - ВызватьИсключение "Месяц выходит за границы диапазона."; - + ВызватьИсключение ЮТИсключения.НекорректныеПараметрыМетода("ПривестиЗначениеКДате", "Месяц выходит за границы диапазона."); КонецЕсли; КонецПроцедуры diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 81% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 543964086..a759b0a53 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\237\321\200\320\265\320\276\320\261\321\200\320\260\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТПреобразования + ЮТПреобразованияСлужебный ru Преобразования diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 97% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 4ef579240..823f2eb9c 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 88% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 937ba8c33..6d590a83d 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТРасширения + ЮТРасширенияСлужебный ru Расширения функциональности diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" index dcdfb3e1b..c2ad89f6b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,370 +16,16 @@ // //©///////////////////////////////////////////////////////////////////////////©// -#Область СлужебныйПрограммныйИнтерфейс +#Область ПрограммныйИнтерфейс -#Область ФиксацияОшибокВРезультате - -// Регистрирует ошибку обработки события исполнения тестов -// -// Параметры: -// ИмяСобытия - Строка -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -// Ошибка - ИнформацияОбОшибке -// - Строка -Процедура ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка) Экспорт - - ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия; - Пояснение = ЮТСообщенияСлужебный.СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка); - ДанныеОшибки = ДанныеОшибки(Ошибка, Пояснение, ТипОшибки); - - Если ОписаниеСобытия.Тест <> Неопределено Тогда - Объект = ОписаниеСобытия.Тест; - ИначеЕсли ОписаниеСобытия.Набор <> Неопределено Тогда - Объект = ОписаниеСобытия.Набор; - Иначе - Объект = ОписаниеСобытия.Модуль; - КонецЕсли; - - Объект.Ошибки.Добавить(ДанныеОшибки); - -КонецПроцедуры - -// Регистрирует ошибку загрузки тестов -// -// Параметры: -// Объект - Структура - см. ЮТФабрика.ОписаниеТестовогоМодуля или см. ЮТФабрика.ОписаниеТестовогоНабора или см. ЮТФабрика.ОписаниеТеста -// Описание - Строка - Описания ошибки, места возникновения -// Ошибка - ИнформацияОбОшибке -Процедура ЗарегистрироватьОшибкуЧтенияТестов(Объект, Описание, Ошибка) Экспорт - - ДанныеОшибки = ДанныеОшибки(Ошибка, Описание, ЮТФабрика.ТипыОшибок().ЧтенияТестов); - Объект.Ошибки.Добавить(ДанныеОшибки); - -КонецПроцедуры - -// Регистрирует ошибку выполнения теста -// Параметры: -// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста -// Ошибка - ИнформацияОбОшибке -Процедура ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка) Экспорт - - ТипОшибки = ТипОшибки(Ошибка, Тест.ПолноеИмяМетода); - - Если ТипОшибки = ЮТФабрика.ТипыОшибок().Утверждений Тогда - ДанныеОшибки = ДанныеОшибкиУтверждений(Ошибка); - ИначеЕсли ТипОшибки = ЮТФабрика.ТипыОшибок().Пропущен Тогда - ДанныеОшибки = ДанныеОшибкиПропуска(Ошибка); - Иначе - ДанныеОшибки = ДанныеОшибки(Ошибка, ЮТСообщенияСлужебный.КраткоеСообщениеОшибки(Ошибка), ТипОшибки); - КонецЕсли; - - Тест.Ошибки.Добавить(ДанныеОшибки); - -КонецПроцедуры - -// Регистрирует ошибку выполнения теста -// Параметры: -// Объект - см. ЮТФабрика.ОписаниеИсполняемогоТеста -// Сообщение - Строка -Процедура ЗарегистрироватьПростуюОшибкуВыполнения(Объект, Сообщение) Экспорт - - ДанныеОшибки = ДанныеОшибки(Неопределено, Сообщение, ЮТФабрика.ТипыОшибок().Исполнения); - Объект.Ошибки.Добавить(ДанныеОшибки); - -КонецПроцедуры - -// Регистрирует ошибку режима выполнения теста -// Параметры: -// Объект - см. ЮТФабрика.ОписаниеИсполняемогоТеста -// Ошибка - Строка -Процедура ЗарегистрироватьОшибкуРежимаВыполнения(Объект, Ошибка) Экспорт - - ДанныеОшибки = ДанныеОшибки(Неопределено, Ошибка, ЮТФабрика.ТипыОшибок().НекорректныйКонтекстИсполнения); - Объект.Ошибки.Добавить(ДанныеОшибки); - -КонецПроцедуры - -#КонецОбласти - -// Вызывает ошибку выполнения теста, на основании перехваченной ошибки -// -// Параметры: -// ИнформацияОбОшибке - ИнформацияОбОшибке -// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки -Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке, ОписаниеПроверки = Неопределено) Экспорт - - СтруктураОшибки = ЮТКонтекст.КонтекстОшибки(); - СтруктураОшибки.ОшибкаУтверждения = Ложь; - - ВызватьОшибкуИсполнения(ИнформацияОбОшибке, ОписаниеПроверки); - -КонецПроцедуры - -// Вызывает ошибку сравнения значений -// При этом сохраняет в контекст состояние, для дальнейшей обработки -// -// Параметры: -// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки -// Сообщение - Строка -// ПроверяемоеЗначение - Произвольный -// ОжидаемоеЗначение - Произвольный -// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения -Процедура СгенерироватьОшибкуСравнения(ОписаниеПроверки, - Сообщение, - ПроверяемоеЗначение, - ОжидаемоеЗначение, - ОбъектПроверки = "проверяемое значение") Экспорт - - УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение); - ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки); - ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки); - -КонецПроцедуры - -// Вызывает ошибку проверки утверждений -// При этом сохраняет в контекст состояние, для дальнейшей обработки -// -// Параметры: -// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки -// Сообщение - Строка -// ПроверяемоеЗначение - Произвольный -// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения -Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт - - УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение); - ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки); - ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки); - -КонецПроцедуры - -Процедура Пропустить(Сообщение) Экспорт - - СтруктураОшибки = ЮТКонтекст.КонтекстОшибки(); - СтруктураОшибки.ОшибкаУтверждения = Ложь; - - СообщениеОбОшибке = СообщениеОбОшибке(Сообщение, ПрефиксОшибкиПропуска()); - ВызватьИсключение СообщениеОбОшибке; - -КонецПроцедуры - -Функция ПредставлениеОшибки(Знач Описание, Знач Ошибка) Экспорт - - Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда - Ошибка = Символы.ПС + ПодробноеПредставлениеОшибки(Ошибка); - КонецЕсли; - - Возврат СтрШаблон("%1: %2", Описание, Ошибка); - -КонецФункции - -// Вызывает ошибку выполнения теста -// Служебный метод, предварительно нужно самостоятельно настроить контекст (см. ЮТКонтекст.КонтекстОшибки) -// Параметры: -// ТекстСообщения - Строка -// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки -Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения, ОписаниеПроверки = Неопределено) Экспорт - - СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений(), ОписаниеПроверки); - ВызватьИсключение СообщениеОбОшибке; - -КонецПроцедуры - -Процедура ЗарегистрироватьОшибкуИнициализацииДвижка(Ошибка, Описание) Экспорт - - СообщитьОбОшибке(Ошибка, Описание); - -КонецПроцедуры - -// Возвращает тип ошибки +// Добавляет пяснение возникшей ошибки, которое будет довлено в отчет. +// Используется перед выбросом исключения, чтобы добавить полезной информации об ошибке, но при этом не ломать стек. // // Параметры: -// Ошибка - ИнформацияОбОшибке -// ИмяВызываемогоМетода - Строка - Имя вызываемого метода -// -// Возвращаемое значение: -// Строка - см. ЮТФабрика.ТипыОшибок -Функция ТипОшибки(Ошибка, ИмяВызываемогоМетода) Экспорт - - ТипыОшибок = ЮТФабрика.ТипыОшибок(); - - Описание = Ошибка.Описание; - - ИмяМетода = Сред(ИмяВызываемогоМетода, СтрНайти(ИмяВызываемогоМетода, ".") + 1); - - Тексты = ТекстыОшибокВызоваМетода(ИмяМетода); - - Если Описание = Тексты.МетодНеОбнаружен - И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда - - ТипОшибки = ТипыОшибок.ТестНеРеализован; - - ИначеЕсли Описание = Тексты.МалоПараметров И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда - - ТипОшибки = ТипыОшибок.МалоПараметров; - - ИначеЕсли Описание = Тексты.МногоПараметров И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда - - ТипОшибки = ТипыОшибок.МногоПараметров; - - ИначеЕсли СтрНачинаетсяС(Описание, ПрефиксОшибкиУтверждений()) Тогда - - ТипОшибки = ТипыОшибок.Утверждений; - - ИначеЕсли СтрНачинаетсяС(Описание, ПрефиксОшибкиПропуска()) Тогда - - ТипОшибки = ТипыОшибок.Пропущен; - - Иначе - - ТипОшибки = ТипыОшибок.Исполнения; - - КонецЕсли; - - Возврат ТипОшибки; - -КонецФункции - -Функция ПрефиксОшибкиУтверждений() Экспорт - - Возврат "[Failed]"; - -КонецФункции - -Функция ПрефиксОшибкиВыполнения() Экспорт - - Возврат "[Broken]"; - -КонецФункции - -Функция ПрефиксОшибкиПропуска() Экспорт - - Возврат "[Skip]"; - -КонецФункции - -Функция СтатусВыполненияТеста(Тест) Экспорт - - СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); - - Если Тест.Ошибки.КОличество() = 0 Тогда - Возврат СтатусыИсполненияТеста.Успешно; - КонецЕсли; - - ПорядокСтатусов = Новый Массив(); - ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Успешно); - ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Исполнение); - ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.НеРеализован); - ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Ожидание); - ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Пропущен); - ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Ошибка); - ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Сломан); - - Статус = Тест.Статус; - - Для Каждого Ошибка Из Тест.Ошибки Цикл - - СтатусОшибки = СтатусОшибки(Ошибка.ТипОшибки); - - Если ПорядокСтатусов.Найти(СтатусОшибки) > ПорядокСтатусов.Найти(Статус) Тогда - Статус = СтатусОшибки; - КонецЕсли; - - Если Статус = СтатусыИсполненияТеста.Сломан Тогда - Прервать; - КонецЕсли; - - КонецЦикла; - - Возврат Статус; - -КонецФункции - -Функция СтатусОшибки(ТипОшибки) Экспорт - - СтатусОшибки = ЮТФабрика.ПараметрыТиповОшибок()[ТипОшибки].Статус; - - Если СтатусОшибки = Неопределено Тогда - СтатусОшибки = ЮТФабрика.СтатусыИсполненияТеста().Сломан; - КонецЕсли; - - Возврат СтатусОшибки; - -КонецФункции - -Процедура УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение) Экспорт - - СтруктураОшибки = ЮТКонтекст.КонтекстОшибки(); - - СтруктураОшибки.ОшибкаУтверждения = Истина; - СтруктураОшибки.ПроверяемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ПроверяемоеЗначение); - СтруктураОшибки.ОжидаемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ОжидаемоеЗначение); - -КонецПроцедуры - -Процедура УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение) Экспорт - - СтруктураОшибки = ЮТКонтекст.КонтекстОшибки(); - - СтруктураОшибки.ОшибкаУтверждения = Истина; - СтруктураОшибки.ПроверяемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ПроверяемоеЗначение); - СтруктураОшибки.ОжидаемоеЗначение = Неопределено; - -КонецПроцедуры - -Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт - - Если ОписаниеПроверки <> Неопределено Тогда - ПрефиксОшибки = ЮТОбщий.ДобавитьСтроку(ОписаниеПроверки.ПрефиксОшибки, ОписаниеПроверки.ОписаниеПроверки, " "); - СообщениеОбОшибке = ЮТОбщий.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": "); - Иначе - СообщениеОбОшибке = ТекстОшибки; - КонецЕсли; - - СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2); - Возврат СообщениеОбОшибке; - -КонецФункции - -Процедура ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, Знач Ошибка, ОписаниеПроверки = Неопределено) Экспорт - - Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда - Ошибка = ПодробноеПредставлениеОшибки(Ошибка); - КонецЕсли; - - ТекстОшибки = ДобавитьОписания(Ошибка, ОписаниеПроверки); - РезультатПроверки.Успешно = Ложь; - РезультатПроверки.Сообщения.Добавить(ТекстОшибки); - -КонецПроцедуры - -Процедура ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение) Экспорт - - ОписаниеКонтекстаОшибки = ЮТФабрика.ОписаниеКонтекстаОшибки(); - ОписаниеКонтекстаОшибки.ПроверяемоеЗначение = ПроверяемоеЗначение; - ОписаниеКонтекстаОшибки.ОжидаемоеЗначение = ОжидаемоеЗначение; - ОписаниеКонтекстаОшибки.ОшибкаУтверждения = Истина; - ОписаниеКонтекстаОшибки.Сообщение = Сообщение; - - РезультатПроверки.Успешно = Ложь; - РезультатПроверки.Сообщения.Добавить(ОписаниеКонтекстаОшибки); - -КонецПроцедуры - +// Пояснение - Строка - Пояснение Процедура ДобавитьПояснениеОшибки(Пояснение) Экспорт - Детали = ЮТКонтекст.КонтекстДеталиОшибки(); - Установить = Детали = Неопределено; - - Если Установить Тогда - Детали = Новый Массив(); - КонецЕсли; - - Детали.Добавить(Пояснение); - - Если Установить Тогда - ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Детали); - КонецЕсли; + ЮТРегистрацияОшибокСлужебный.ДобавитьПояснениеОшибки(Пояснение); КонецПроцедуры @@ -387,229 +33,4 @@ #Область СлужебныеПроцедурыИФункции -#Область КонструкторыОписанийОшибки - -Функция ДанныеОшибки(Ошибка, Знач Сообщение, ТипОшибки) - -#Если Сервер Тогда - Детали = ЮТКонтекст.КонтекстДеталиОшибки(Истина); -#Иначе - ДеталиСервер = ЮТКонтекст.КонтекстДеталиОшибки(Истина); - ДеталиКлиент = ЮТКонтекст.КонтекстДеталиОшибки(); - - Если ЗначениеЗаполнено(ДеталиКлиент) И ЗначениеЗаполнено(ДеталиСервер) Тогда - ЮТОбщий.ДополнитьМассив(ДеталиСервер, ДеталиКлиент); - Детали = ДеталиСервер; - ИначеЕсли ЗначениеЗаполнено(ДеталиКлиент) Тогда - Детали = ДеталиКлиент; - ИначеЕсли ЗначениеЗаполнено(ДеталиСервер) Тогда - Детали = ДеталиСервер; - Иначе - Детали = Неопределено; - КонецЕсли; -#КонецЕсли - - Если ЗначениеЗаполнено(Детали) Тогда - ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Новый Массив()); - - Детали.Добавить(Сообщение); - Сообщение = СтрСоединить(Детали, Символы.ПС); - КонецЕсли; - - ДанныеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки(ТипОшибки + ": " + Сообщение); - - Если Ошибка <> Неопределено Тогда - ДанныеОшибки.Стек = СтекОшибки(Ошибка); - КонецЕсли; - ДанныеОшибки.ТипОшибки = ТипОшибки; - ДобавитьСообщенияПользователю(ДанныеОшибки); - - Возврат ДанныеОшибки; - -КонецФункции - -Функция СтекОшибки(Ошибка) - - Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда - Возврат ПодробноеПредставлениеОшибки(Ошибка); - Иначе - Возврат Неопределено; - КонецЕсли; - -КонецФункции - -Функция ДанныеОшибкиУтверждений(Ошибка) - - Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиУтверждений()); - - ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиСравнения(Описание); - - ДанныеОшибки.Стек = СтекОшибки(Ошибка); - ДобавитьСообщенияПользователю(ДанныеОшибки); - - СтруктураОшибки = ЮТКонтекст.КонтекстОшибки(); - - Если СтруктураОшибки <> Неопределено И СтруктураОшибки.ОшибкаУтверждения Тогда - ДанныеОшибки.ПроверяемоеЗначение = СтруктураОшибки.ПроверяемоеЗначение; - ДанныеОшибки.ОжидаемоеЗначение = СтруктураОшибки.ОжидаемоеЗначение; - КонецЕсли; - - Возврат ДанныеОшибки; - -КонецФункции - -Функция ДанныеОшибкиПропуска(Ошибка) - - Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиПропуска()); - - ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиПропуска(Описание); - - Возврат ДанныеОшибки; - -КонецФункции - -Функция ИзвлечьТекстОшибки(Ошибка, Префикс) - - ДлинаПрефикса = СтрДлина(Префикс); - - Описание = Сред(Ошибка.Описание, ДлинаПрефикса + 1); - Описание = СокрЛП(Описание); - - Если СтрНачинаетсяС(Описание, "<") И СтрЗаканчиваетсяНа(Описание, ">") Тогда - Описание = Сред(Описание, 2, СтрДлина(Описание) - 2); - КонецЕсли; - - Возврат Описание; - -КонецФункции - -#КонецОбласти - -Функция МодулиУтверждений() - - Возврат ЮТОбщий.ЗначениеВМассиве("ЮТУтверждения"); - -КонецФункции - -Процедура СообщитьОбОшибке(Ошибка, Описание) - - ЮТОбщий.СообщитьПользователю(ПредставлениеОшибки(Описание, Ошибка)); - -КонецПроцедуры - -Функция ИнформациюОбОшибкеВСтроку(Ошибка, НомерПричины = 0) - - ТекстОшибки = ""; - - Если Ошибка = Неопределено Тогда - - ТекстОшибки = "Неизвестная ошибка."; - - ИначеЕсли ТипЗнч(Ошибка) = Тип("Строка") Тогда - - ТекстОшибки = Ошибка; - - ИначеЕсли ЭтоОшибкаСлужебногоМодуля(Ошибка) Тогда - - Если Ошибка.Причина = Неопределено Тогда - - ТекстОшибки = Ошибка.Описание; - - Иначе - - ТекстОшибки = ИнформациюОбОшибкеВСтроку(Ошибка.Причина, НомерПричины); - - КонецЕсли; - - Иначе - - Если Не ПустаяСтрока(Ошибка.ИмяМодуля) Тогда - - ТекстОшибки = ТекстОшибки + "{" - + Ошибка.ИмяМодуля + "(" - + Ошибка.НомерСтроки + ")}: "; - - КонецЕсли; - - ТекстОшибки = ТекстОшибки + Ошибка.Описание + ?(ПустаяСтрока(Ошибка.ИсходнаяСтрока), "", " - |" + Ошибка.ИсходнаяСтрока); - - Если Ошибка.Причина <> Неопределено Тогда - - ТекстОшибки = ТекстОшибки + " - | - |ПРИЧИНА №" + Формат(НомерПричины + 1, "ЧГ=0") + " - |" + ИнформациюОбОшибкеВСтроку(Ошибка.Причина, НомерПричины + 1); - - КонецЕсли; - - КонецЕсли; - - Возврат ТекстОшибки; - -КонецФункции - -Функция ЭтоОшибкаСлужебногоМодуля(Ошибка) - - Если НЕ ЗначениеЗаполнено(Ошибка.ИмяМодуля) Тогда - Возврат Ложь; - КонецЕсли; - - Для Каждого ИмяМодуля Из МодулиУтверждений() Цикл - Если СтрНайти(Ошибка.ИмяМодуля, ИмяМодуля) > 0 Тогда - Возврат Истина; - КонецЕсли; - КонецЦикла; - - Возврат Ложь; - -КонецФункции - -Процедура ДобавитьСообщенияПользователю(ДанныеОшибки) - -#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда - Сообщения = ЮТОбщий.ВыгрузитьЗначения(ПолучитьСообщенияПользователю(Истина), "Текст"); - Если Сообщения.Количество() Тогда - ДанныеОшибки.Стек = СтрШаблон("%1 - |Сообщения пользователю: - | %2", ДанныеОшибки.Стек, СтрСоединить(Сообщения, Символы.ПС)); - КонецЕсли; -#КонецЕсли - -КонецПроцедуры - -Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке, ОписаниеПроверки) - - ТекстОшибки = ИнформациюОбОшибкеВСтроку(ИнформацияОбОшибке); - СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения(), ОписаниеПроверки); - ВызватьИсключение СообщениеОбОшибке; - -КонецПроцедуры - -Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки, ОписаниеПроверки = Неопределено) Экспорт - - СообщениеОбОшибке = ДобавитьОписания(ТекстОшибки, ОписаниеПроверки); - - Возврат СтрШаблон("%1 <%2>", ПрефиксТипаОшибки, СообщениеОбОшибке); - -КонецФункции - -Функция ТекстыОшибокВызоваМетода(ИмяМетода) - - Тексты = Новый Структура("МетодНеОбнаружен, МногоПараметров, МалоПараметров"); - - Если ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы() Тогда - Тексты.МетодНеОбнаружен = СтрШаблон("Object method not found (%1)", ИмяМетода); - Тексты.МногоПараметров = "Too many actual parameters"; - Тексты.МалоПараметров = "Not enough actual parameters"; - Иначе - Тексты.МетодНеОбнаружен = СтрШаблон("Метод объекта не обнаружен (%1)", ИмяМетода); - Тексты.МногоПараметров = "Слишком много фактических параметров"; - Тексты.МалоПараметров = "Недостаточно фактических параметров"; - КонецЕсли; - - Возврат Тексты; - -КонецФункции - #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272.mdo" index dc27eee7f..38a107d6d 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272.mdo" @@ -1,5 +1,5 @@ - + ЮТРегистрацияОшибок ru diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 000000000..33f3de2cc --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,698 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ФиксацияОшибокВРезультате + +// Регистрирует ошибку обработки события исполнения тестов +// +// Параметры: +// ИмяСобытия - Строка +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +// Ошибка - ИнформацияОбОшибке +// - Строка +Процедура ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка) Экспорт + + ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().ОшибкаОбработкиСобытия; + Пояснение = ЮТСообщенияСлужебный.СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка); + ДанныеОшибки = ДанныеОшибки(Ошибка, Пояснение, ТипОшибки); + + Если ОписаниеСобытия.Тест <> Неопределено Тогда + Объект = ОписаниеСобытия.Тест; + ИначеЕсли ОписаниеСобытия.Набор <> Неопределено Тогда + Объект = ОписаниеСобытия.Набор; + Иначе + Объект = ОписаниеСобытия.Модуль; + КонецЕсли; + + Объект.Ошибки.Добавить(ДанныеОшибки); + +КонецПроцедуры + +// Регистрирует ошибку загрузки тестов +// +// Параметры: +// Объект - Структура - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля или см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора или см. ЮТФабрикаСлужебный.ОписаниеТеста +// Описание - Строка - Описания ошибки, места возникновения +// Ошибка - ИнформацияОбОшибке +Процедура ЗарегистрироватьОшибкуЧтенияТестов(Объект, Описание, Ошибка) Экспорт + + ДанныеОшибки = ДанныеОшибки(Ошибка, Описание, ЮТФабрикаСлужебный.ТипыОшибок().ЧтенияТестов); + Объект.Ошибки.Добавить(ДанныеОшибки); + +КонецПроцедуры + +// Регистрирует ошибку выполнения теста +// Параметры: +// Тест - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста +// Ошибка - ИнформацияОбОшибке +Процедура ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка) Экспорт + + ТипОшибки = ТипОшибки(Ошибка, Тест.ПолноеИмяМетода); + + Если ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().Утверждений Тогда + ДанныеОшибки = ДанныеОшибкиУтверждений(Ошибка); + ИначеЕсли ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().Пропущен Тогда + ДанныеОшибки = ДанныеОшибкиПропуска(Ошибка); + Иначе + ДанныеОшибки = ДанныеОшибки(Ошибка, ЮТСообщенияСлужебный.КраткоеСообщениеОшибки(Ошибка), ТипОшибки); + КонецЕсли; + + Тест.Ошибки.Добавить(ДанныеОшибки); + +КонецПроцедуры + +// Регистрирует ошибку выполнения теста +// Параметры: +// Объект - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста +// Сообщение - Строка +Процедура ЗарегистрироватьПростуюОшибкуВыполнения(Объект, Сообщение) Экспорт + + ДанныеОшибки = ДанныеОшибки(Неопределено, Сообщение, ЮТФабрикаСлужебный.ТипыОшибок().Исполнения); + Объект.Ошибки.Добавить(ДанныеОшибки); + +КонецПроцедуры + +// Регистрирует ошибку режима выполнения теста +// Параметры: +// Объект - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста +// Ошибка - Строка +Процедура ЗарегистрироватьОшибкуРежимаВыполнения(Объект, Ошибка) Экспорт + + ДанныеОшибки = ДанныеОшибки(Неопределено, Ошибка, ЮТФабрикаСлужебный.ТипыОшибок().НекорректныйКонтекстИсполнения); + Объект.Ошибки.Добавить(ДанныеОшибки); + +КонецПроцедуры + +#КонецОбласти + +// Вызывает ошибку выполнения теста, на основании перехваченной ошибки +// +// Параметры: +// ИнформацияОбОшибке - ИнформацияОбОшибке +// ОписаниеПроверки - см. ЮТФабрикаСлужебный.ОписаниеПроверки +Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке, ОписаниеПроверки = Неопределено) Экспорт + + СтруктураОшибки = КонтекстОшибки(); + СтруктураОшибки.ОшибкаУтверждения = Ложь; + + ВызватьОшибкуИсполнения(ИнформацияОбОшибке, ОписаниеПроверки); + +КонецПроцедуры + +// Вызывает ошибку сравнения значений +// При этом сохраняет в контекст состояние, для дальнейшей обработки +// +// Параметры: +// ОписаниеПроверки - см. ЮТФабрикаСлужебный.ОписаниеПроверки +// Сообщение - Строка +// ПроверяемоеЗначение - Произвольный +// ОжидаемоеЗначение - Произвольный +// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения +Процедура СгенерироватьОшибкуСравнения(ОписаниеПроверки, + Сообщение, + ПроверяемоеЗначение, + ОжидаемоеЗначение, + ОбъектПроверки = "проверяемое значение") Экспорт + + УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение); + ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки); + ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки); + +КонецПроцедуры + +// Вызывает ошибку проверки утверждений +// При этом сохраняет в контекст состояние, для дальнейшей обработки +// +// Параметры: +// ОписаниеПроверки - см. ЮТФабрикаСлужебный.ОписаниеПроверки +// Сообщение - Строка +// ПроверяемоеЗначение - Произвольный +// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения +Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт + + УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение); + ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки); + ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки); + +КонецПроцедуры + +Процедура Пропустить(Сообщение) Экспорт + + СтруктураОшибки = КонтекстОшибки(); + СтруктураОшибки.ОшибкаУтверждения = Ложь; + + СообщениеОбОшибке = СообщениеОбОшибке(Сообщение, ПрефиксОшибкиПропуска()); + ВызватьИсключение СообщениеОбОшибке; + +КонецПроцедуры + +Функция ПредставлениеОшибки(Знач Описание, Знач Ошибка) Экспорт + + Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда + Ошибка = Символы.ПС + ПодробноеПредставлениеОшибки(Ошибка); + КонецЕсли; + + Возврат СтрШаблон("%1: %2", Описание, Ошибка); + +КонецФункции + +// Вызывает ошибку выполнения теста +// Служебный метод, предварительно нужно самостоятельно настроить контекст (см. ЮТКонтекстСлужебный.КонтекстОшибки) +// Параметры: +// ТекстСообщения - Строка +// ОписаниеПроверки - см. ЮТФабрикаСлужебный.ОписаниеПроверки +Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения, ОписаниеПроверки = Неопределено) Экспорт + + СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений(), ОписаниеПроверки); + ВызватьИсключение СообщениеОбОшибке; + +КонецПроцедуры + +Процедура ЗарегистрироватьОшибкуИнициализацииДвижка(Ошибка, Описание) Экспорт + + СообщитьОбОшибке(Ошибка, Описание); + +КонецПроцедуры + +// Возвращает тип ошибки +// +// Параметры: +// Ошибка - ИнформацияОбОшибке +// ИмяВызываемогоМетода - Строка - Имя вызываемого метода +// +// Возвращаемое значение: +// Строка - см. ЮТФабрикаСлужебный.ТипыОшибок +Функция ТипОшибки(Ошибка, ИмяВызываемогоМетода) Экспорт + + ТипыОшибок = ЮТФабрикаСлужебный.ТипыОшибок(); + + Описание = Ошибка.Описание; + + ИмяМетода = Сред(ИмяВызываемогоМетода, СтрНайти(ИмяВызываемогоМетода, ".") + 1); + + Тексты = ТекстыОшибокВызоваМетода(ИмяМетода); + + Если Описание = Тексты.МетодНеОбнаружен + И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда + + ТипОшибки = ТипыОшибок.ТестНеРеализован; + + ИначеЕсли Описание = Тексты.МалоПараметров И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда + + ТипОшибки = ТипыОшибок.МалоПараметров; + + ИначеЕсли Описание = Тексты.МногоПараметров И СтрНачинаетсяС(Ошибка.ИсходнаяСтрока, ИмяВызываемогоМетода) Тогда + + ТипОшибки = ТипыОшибок.МногоПараметров; + + ИначеЕсли СтрНачинаетсяС(Описание, ПрефиксОшибкиУтверждений()) Тогда + + ТипОшибки = ТипыОшибок.Утверждений; + + ИначеЕсли СтрНачинаетсяС(Описание, ПрефиксОшибкиПропуска()) Тогда + + ТипОшибки = ТипыОшибок.Пропущен; + + Иначе + + ТипОшибки = ТипыОшибок.Исполнения; + + КонецЕсли; + + Возврат ТипОшибки; + +КонецФункции + +Функция ПрефиксОшибкиУтверждений() Экспорт + + Возврат "[Failed]"; + +КонецФункции + +Функция ПрефиксОшибкиВыполнения() Экспорт + + Возврат "[Broken]"; + +КонецФункции + +Функция ПрефиксОшибкиПропуска() Экспорт + + Возврат "[Skip]"; + +КонецФункции + +Функция СтатусВыполненияТеста(Тест) Экспорт + + СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); + + Если Тест.Ошибки.КОличество() = 0 Тогда + Возврат СтатусыИсполненияТеста.Успешно; + КонецЕсли; + + ПорядокСтатусов = Новый Массив(); + ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Успешно); + ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Исполнение); + ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.НеРеализован); + ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Ожидание); + ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Пропущен); + ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Ошибка); + ПорядокСтатусов.Добавить(СтатусыИсполненияТеста.Сломан); + + Статус = Тест.Статус; + + Для Каждого Ошибка Из Тест.Ошибки Цикл + + СтатусОшибки = СтатусОшибки(Ошибка.ТипОшибки); + + Если ПорядокСтатусов.Найти(СтатусОшибки) > ПорядокСтатусов.Найти(Статус) Тогда + Статус = СтатусОшибки; + КонецЕсли; + + Если Статус = СтатусыИсполненияТеста.Сломан Тогда + Прервать; + КонецЕсли; + + КонецЦикла; + + Возврат Статус; + +КонецФункции + +Функция СтатусОшибки(ТипОшибки) Экспорт + + СтатусОшибки = ЮТФабрикаСлужебный.ПараметрыТиповОшибок()[ТипОшибки].Статус; + + Если СтатусОшибки = Неопределено Тогда + СтатусОшибки = ЮТФабрика.СтатусыИсполненияТеста().Сломан; + КонецЕсли; + + Возврат СтатусОшибки; + +КонецФункции + +Процедура УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение) Экспорт + + СтруктураОшибки = КонтекстОшибки(); + + СтруктураОшибки.ОшибкаУтверждения = Истина; + СтруктураОшибки.ПроверяемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ПроверяемоеЗначение); + СтруктураОшибки.ОжидаемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ОжидаемоеЗначение); + +КонецПроцедуры + +Процедура УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение) Экспорт + + СтруктураОшибки = КонтекстОшибки(); + + СтруктураОшибки.ОшибкаУтверждения = Истина; + СтруктураОшибки.ПроверяемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ПроверяемоеЗначение); + СтруктураОшибки.ОжидаемоеЗначение = Неопределено; + +КонецПроцедуры + +Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт + + Если ОписаниеПроверки <> Неопределено Тогда + ПрефиксОшибки = ЮТСтроки.ДобавитьСтроку(ОписаниеПроверки.ПрефиксОшибки, ОписаниеПроверки.ОписаниеПроверки, " "); + СообщениеОбОшибке = ЮТСтроки.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": "); + Иначе + СообщениеОбОшибке = ТекстОшибки; + КонецЕсли; + + СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2); + Возврат СообщениеОбОшибке; + +КонецФункции + +Процедура ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, Знач Ошибка, ОписаниеПроверки = Неопределено) Экспорт + + Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда + Ошибка = ПодробноеПредставлениеОшибки(Ошибка); + КонецЕсли; + + ТекстОшибки = ДобавитьОписания(Ошибка, ОписаниеПроверки); + РезультатПроверки.Успешно = Ложь; + РезультатПроверки.Сообщения.Добавить(ТекстОшибки); + +КонецПроцедуры + +Процедура ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение) Экспорт + + ОписаниеКонтекстаОшибки = ОписаниеКонтекстаОшибки(); + ОписаниеКонтекстаОшибки.ПроверяемоеЗначение = ПроверяемоеЗначение; + ОписаниеКонтекстаОшибки.ОжидаемоеЗначение = ОжидаемоеЗначение; + ОписаниеКонтекстаОшибки.ОшибкаУтверждения = Истина; + ОписаниеКонтекстаОшибки.Сообщение = Сообщение; + + РезультатПроверки.Успешно = Ложь; + РезультатПроверки.Сообщения.Добавить(ОписаниеКонтекстаОшибки); + +КонецПроцедуры + +Процедура ДобавитьПояснениеОшибки(Пояснение) Экспорт + + Детали = КонтекстДеталиОшибки(); + Установить = Детали = Неопределено; + + Если Установить Тогда + Детали = Новый Массив(); + КонецЕсли; + + Детали.Добавить(Пояснение); + + Если Установить Тогда + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), Детали); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Контекст + +// Контекст ошибки. +// +// Возвращаемое значение: +// см. ОписаниеКонтекстаОшибки +Функция КонтекстОшибки() Экспорт + + Контекст = ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяКонтекстаОшибки()); + + Если Контекст = Неопределено Тогда + Контекст = УстановитьКонтекстОшибки(); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат Контекст; + +КонецФункции + +Функция УстановитьКонтекстОшибки() Экспорт + + ДанныеОшибки = ОписаниеКонтекстаОшибки(); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаОшибки(), ДанныеОшибки); + + Возврат ДанныеОшибки; + +КонецФункции + +Функция КонтекстДеталиОшибки(ПолучитьССервера = Ложь) + + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ПолучитьССервера); + +КонецФункции + +// ОписаниеКонтекстаОшибки +// Возвращает описание деталей/расшифровки ошибки +// Возвращаемое значение: +// Структура - Детали ошибки: +// * ОшибкаУтверждения - Булево - Признак, это ошибка проверки утверждения +// * ПроверяемоеЗначение - Произвольный - Фактическое значение +// * ОжидаемоеЗначение - Произвольный - Ожидаемое значение +// * Сообщение - Строка +// * ДополнительныеДанные - Массив из Произвольный +// * Пояснения - Массив из Произвольный +Функция ОписаниеКонтекстаОшибки() + + Описание = Новый Структура("ПроверяемоеЗначение, ОжидаемоеЗначение"); + Описание.Вставить("ОшибкаУтверждения", Ложь); + Описание.Вставить("Сообщение", ""); + Описание.Вставить("ДополнительныеДанные", Новый Массив()); + Описание.Вставить("Пояснения", Новый Массив()); + + //@skip-check constructor-function-return-section + Возврат Описание; + +КонецФункции + +Функция ИмяКонтекстаОшибки() + + Возврат "ДанныеОшибки"; + +КонецФункции + +Функция ИмяКонтекстаДеталиОшибки() + + Возврат "ДеталиОшибки"; + +КонецФункции + +#КонецОбласти + +#Область КонструкторыОписанийОшибки + +Функция ДанныеОшибки(Ошибка, Знач Сообщение, ТипОшибки) + +#Если Сервер Тогда + Детали = КонтекстДеталиОшибки(Истина); +#Иначе + ДеталиСервер = КонтекстДеталиОшибки(Истина); + ДеталиКлиент = КонтекстДеталиОшибки(); + + Если ЗначениеЗаполнено(ДеталиКлиент) И ЗначениеЗаполнено(ДеталиСервер) Тогда + ЮТКоллекции.ДополнитьМассив(ДеталиСервер, ДеталиКлиент); + Детали = ДеталиСервер; + ИначеЕсли ЗначениеЗаполнено(ДеталиКлиент) Тогда + Детали = ДеталиКлиент; + ИначеЕсли ЗначениеЗаполнено(ДеталиСервер) Тогда + Детали = ДеталиСервер; + Иначе + Детали = Неопределено; + КонецЕсли; +#КонецЕсли + + Если ЗначениеЗаполнено(Детали) Тогда + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), Неопределено); + + Детали.Добавить(Сообщение); + Сообщение = СтрСоединить(Детали, Символы.ПС); + КонецЕсли; + + ДанныеОшибки = ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки(ТипОшибки + ": " + Сообщение); + + Если Ошибка <> Неопределено Тогда + ДанныеОшибки.Стек = СтекОшибки(Ошибка); + КонецЕсли; + ДанныеОшибки.ТипОшибки = ТипОшибки; + + ДобавитьСообщенияПользователю(); + ДобавитьЛогТеста(ДанныеОшибки); + + Возврат ДанныеОшибки; + +КонецФункции + +Функция ДанныеОшибкиУтверждений(Ошибка) + + Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиУтверждений()); + + ДанныеОшибки = ЮТФабрикаСлужебный.ОписаниеОшибкиСравнения(Описание); + ДанныеОшибки.Стек = СтекОшибки(Ошибка); + + ДобавитьСообщенияПользователю(); + ДобавитьЛогТеста(ДанныеОшибки); + + СтруктураОшибки = КонтекстОшибки(); + + Если СтруктураОшибки <> Неопределено И СтруктураОшибки.ОшибкаУтверждения Тогда + ДанныеОшибки.ПроверяемоеЗначение = СтруктураОшибки.ПроверяемоеЗначение; + ДанныеОшибки.ОжидаемоеЗначение = СтруктураОшибки.ОжидаемоеЗначение; + КонецЕсли; + + Возврат ДанныеОшибки; + +КонецФункции + +Функция ДанныеОшибкиПропуска(Ошибка) + + Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиПропуска()); + + ДанныеОшибки = ЮТФабрикаСлужебный.ОписаниеОшибкиПропуска(Описание); + + ДобавитьСообщенияПользователю(); + ДобавитьЛогТеста(ДанныеОшибки); + + Возврат ДанныеОшибки; + +КонецФункции + +Процедура ДобавитьЛогТеста(ДанныеОшибки) + + Лог = ЮТЛогИсполненияТестаСлужебный.Записи(); + Если Лог <> Неопределено Тогда + ЮТКоллекции.ДополнитьМассив(ДанныеОшибки.Лог, Лог); + КонецЕсли; + +КонецПроцедуры + +Функция СтекОшибки(Ошибка) + + Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда + Возврат ПодробноеПредставлениеОшибки(Ошибка); + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + +Функция ИзвлечьТекстОшибки(Ошибка, Префикс) + + ДлинаПрефикса = СтрДлина(Префикс); + + Описание = Сред(Ошибка.Описание, ДлинаПрефикса + 1); + Описание = СокрЛП(Описание); + + Если СтрНачинаетсяС(Описание, "<") И СтрЗаканчиваетсяНа(Описание, ">") Тогда + Описание = Сред(Описание, 2, СтрДлина(Описание) - 2); + КонецЕсли; + + Возврат Описание; + +КонецФункции + +#КонецОбласти + +Функция МодулиУтверждений() + + Возврат ЮТКоллекции.ЗначениеВМассиве("ЮТУтверждения"); + +КонецФункции + +Процедура СообщитьОбОшибке(Ошибка, Описание) + + ЮТОбщий.СообщитьПользователю(ПредставлениеОшибки(Описание, Ошибка)); + +КонецПроцедуры + +Функция ИнформациюОбОшибкеВСтроку(Ошибка, НомерПричины = 0) + + ТекстОшибки = ""; + + Если Ошибка = Неопределено Тогда + + ТекстОшибки = "Неизвестная ошибка."; + + ИначеЕсли ТипЗнч(Ошибка) = Тип("Строка") Тогда + + ТекстОшибки = Ошибка; + + ИначеЕсли ЭтоОшибкаСлужебногоМодуля(Ошибка) Тогда + + Если Ошибка.Причина = Неопределено Тогда + + ТекстОшибки = Ошибка.Описание; + + Иначе + + ТекстОшибки = ИнформациюОбОшибкеВСтроку(Ошибка.Причина, НомерПричины); + + КонецЕсли; + + Иначе + + Если НЕ ПустаяСтрока(Ошибка.ИмяМодуля) Тогда + + ТекстОшибки = ТекстОшибки + "{" + + Ошибка.ИмяМодуля + "(" + + Ошибка.НомерСтроки + ")}: "; + + КонецЕсли; + + ТекстОшибки = ТекстОшибки + Ошибка.Описание + ?(ПустаяСтрока(Ошибка.ИсходнаяСтрока), "", " + |" + Ошибка.ИсходнаяСтрока); + + Если Ошибка.Причина <> Неопределено Тогда + + ТекстОшибки = ТекстОшибки + " + | + |ПРИЧИНА №" + Формат(НомерПричины + 1, "ЧГ=0") + " + |" + ИнформациюОбОшибкеВСтроку(Ошибка.Причина, НомерПричины + 1); + + КонецЕсли; + + КонецЕсли; + + Возврат ТекстОшибки; + +КонецФункции + +Функция ЭтоОшибкаСлужебногоМодуля(Ошибка) + + Если НЕ ЗначениеЗаполнено(Ошибка.ИмяМодуля) Тогда + Возврат Ложь; + КонецЕсли; + + Для Каждого ИмяМодуля Из МодулиУтверждений() Цикл + Если СтрНайти(Ошибка.ИмяМодуля, ИмяМодуля) > 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +Процедура ДобавитьСообщенияПользователю() + +#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда + Для Каждого Сообщение Из ПолучитьСообщенияПользователю(Истина) Цикл + ЮТест.ДобавитьСообщение(Сообщение.Текст); + КонецЦикла; +#КонецЕсли + +КонецПроцедуры + +Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке, ОписаниеПроверки) + + ТекстОшибки = ИнформациюОбОшибкеВСтроку(ИнформацияОбОшибке); + СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения(), ОписаниеПроверки); + ВызватьИсключение СообщениеОбОшибке; + +КонецПроцедуры + +Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки, ОписаниеПроверки = Неопределено) + + СообщениеОбОшибке = ДобавитьОписания(ТекстОшибки, ОписаниеПроверки); + + Возврат СтрШаблон("%1 <%2>", ПрефиксТипаОшибки, СообщениеОбОшибке); + +КонецФункции + +Функция ТекстыОшибокВызоваМетода(ИмяМетода) + + Тексты = Новый Структура("МетодНеОбнаружен, МногоПараметров, МалоПараметров"); + + Если ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы() Тогда + Тексты.МетодНеОбнаружен = СтрШаблон("Object method not found (%1)", ИмяМетода); + Тексты.МногоПараметров = "Too many actual parameters"; + Тексты.МалоПараметров = "Not enough actual parameters"; + Иначе + Тексты.МетодНеОбнаружен = СтрШаблон("Метод объекта не обнаружен (%1)", ИмяМетода); + Тексты.МногоПараметров = "Слишком много фактических параметров"; + Тексты.МалоПараметров = "Недостаточно фактических параметров"; + КонецЕсли; + + Возврат Тексты; + +КонецФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 000000000..648797154 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ЮТРегистрацияОшибокСлужебный + + ru + Регистрация ошибок + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" similarity index 55% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" index ca68d9757..01a195787 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,25 +20,25 @@ Функция АдресСерверногоКонтекста() Экспорт - Возврат ЮТКонтекстСервер.АдресСерверногоКонтекста(Ложь); + Возврат ЮТКонтекстСлужебныйВызовСервера.АдресСерверногоКонтекста(Ложь); КонецФункции -Функция МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров = 0) Экспорт +Функция МетодМодуляСуществует(ИмяМодуля, ИмяМетода) Экспорт - Возврат ЮТОбщий.МетодМодуляСуществует(ИмяМодуля, ИмяМетода, КоличествоПараметров, Ложь); + Возврат ЮТМетодыСлужебный.МетодМодуляСуществует(ИмяМодуля, ИмяМетода, Ложь); КонецФункции Функция ПараметрыТиповОшибок() Экспорт - Возврат ЮТФабрика.ПараметрыТиповОшибок(Ложь); + Возврат ЮТФабрикаСлужебный.ПараметрыТиповОшибок(Ложь); КонецФункции Функция ОписаниеТиповЛюбаяСсылка() Экспорт - Возврат ЮТОбщийВызовСервера.ОписаниеТиповЛюбаяСсылка(); + Возврат ЮТОбщийСлужебныйВызовСервера.ОписаниеТиповЛюбаяСсылка(); КонецФункции @@ -67,4 +67,28 @@ КонецФункции +Функция МножителиИнтервалов() Экспорт + + СекундВМинуте = 60; + СекундВЧасе = 60 * СекундВМинуте; + СекундВДне = СекундВЧасе * 24; + + Множители = Новый Структура; + Множители.Вставить("секунда", 1); + Множители.Вставить("секунды", 1); + Множители.Вставить("секунд", 1); + Множители.Вставить("минута", СекундВМинуте); + Множители.Вставить("минуты", СекундВМинуте); + Множители.Вставить("минут", СекундВМинуте); + Множители.Вставить("час", СекундВЧасе); + Множители.Вставить("часа", СекундВЧасе); + Множители.Вставить("часов", СекундВЧасе); + Множители.Вставить("день", СекундВДне); + Множители.Вставить("дня", СекундВДне); + Множители.Вставить("дней", СекундВДне); + + Возврат Множители; + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" similarity index 85% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" index 444108f08..5955f698a 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/\320\256\320\242\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217.mdo" @@ -1,6 +1,6 @@ - ЮТПовторногоИспользования + ЮТСлужебныйПовторногоИспользования ru Повторного использования diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 68% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 2010743e9..f29fc2e19 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -20,7 +20,7 @@ Процедура Инициализация(ПараметрыЗапуска) Экспорт - Параметры = ЮТОбщий.ЗначениеВМассиве(ПараметрыЗапуска); + Параметры = ЮТКоллекции.ЗначениеВМассиве(ПараметрыЗапуска); ВызватьОбработчикРасширения("Инициализация", Параметры); КонецПроцедуры @@ -28,79 +28,79 @@ #Область СобытияИсполненияТестов // Обработчик события "ПередВсемиТестамиМодуля" -// +// // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля Процедура ПередВсемиТестамиМодуля(ТестовыйМодуль) Экспорт УстановитьКонтекстИсполнения(ТестовыйМодуль); - ЮТКонтекст.УстановитьКонтекстМодуля(); + ЮТКонтекстСлужебный.УстановитьКонтекстМодуля(); - ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль); ВызватьОбработкуСобытия("ПередВсемиТестами", ОписаниеСобытия); КонецПроцедуры // Обработчик события "ПередТестовымНабором" -// +// // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// Набор - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов Процедура ПередТестовымНабором(ТестовыйМодуль, Набор) Экспорт УстановитьКонтекстИсполнения(ТестовыйМодуль, Набор); - ЮТКонтекст.УстановитьКонтекстНабораТестов(); + ЮТКонтекстСлужебный.УстановитьКонтекстНабораТестов(); - ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор); ВызватьОбработкуСобытия("ПередТестовымНабором", ОписаниеСобытия); КонецПроцедуры // Обработчик события "ПередКаждымТестом" -// +// // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// Набор - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// Тест - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста Процедура ПередКаждымТестом(ТестовыйМодуль, Набор, Тест) Экспорт - // Установка контекста исполнения вызывается в см. ЮТИсполнительКлиентСервер.ПередКаждымТестом - ЮТКонтекст.УстановитьКонтекстТеста(); + // Установка контекста исполнения вызывается в см. ЮТИсполнительСлужебныйКлиентСервер.ПередКаждымТестом + ЮТКонтекстСлужебный.УстановитьКонтекстТеста(); - ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); -#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда + #Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда ПолучитьСообщенияПользователю(Истина); -#КонецЕсли + #КонецЕсли - ВызватьОбработкуСобытий(ЮТОбщий.ЗначениеВМассиве("ПередКаждымТестом", "ПередТестом"), ОписаниеСобытия); + ВызватьОбработкуСобытий(ЮТКоллекции.ЗначениеВМассиве("ПередКаждымТестом", "ПередТестом"), ОписаниеСобытия); КонецПроцедуры // Обработчик события "ПослеКаждогоТеста" -// +// // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// Набор - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// Тест - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста Процедура ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест) Экспорт - ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); - ВызватьОбработкуСобытий(ЮТОбщий.ЗначениеВМассиве("ПослеТеста", "ПослеКаждогоТеста"), ОписаниеСобытия); + ВызватьОбработкуСобытий(ЮТКоллекции.ЗначениеВМассиве("ПослеТеста", "ПослеКаждогоТеста"), ОписаниеСобытия); УстановитьКонтекстИсполнения(ТестовыйМодуль, Набор); КонецПроцедуры // Обработчик события "ПослеТестовогоНабора" -// +// // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// Набор - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов Процедура ПослеТестовогоНабора(ТестовыйМодуль, Набор) Экспорт - ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор); ВызватьОбработкуСобытия("ПослеТестовогоНабора", ОписаниеСобытия); УстановитьКонтекстИсполнения(ТестовыйМодуль); @@ -108,12 +108,12 @@ КонецПроцедуры // Обработчик события "ПослеВсехТестовМодуля" -// +// // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля Процедура ПослеВсехТестовМодуля(ТестовыйМодуль) Экспорт - ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль); ВызватьОбработкуСобытия("ПослеВсехТестов", ОписаниеСобытия); УстановитьКонтекстИсполнения(); @@ -121,23 +121,23 @@ КонецПроцедуры // Перед выполнением тестов. -// +// // Параметры: -// ИсполняемыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// ИсполняемыеМодули - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля Процедура ПередВыполнениемТестов(ИсполняемыеМодули) Экспорт - Параметры = ЮТОбщий.ЗначениеВМассиве(ИсполняемыеМодули); + Параметры = ЮТКоллекции.ЗначениеВМассиве(ИсполняемыеМодули); ВызватьОбработчикРасширения("ПередВыполнениемТестов", Параметры); КонецПроцедуры // После выполнения тестов. -// +// // Параметры: -// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// РезультатТестирования - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля Процедура ПослеВыполненияТестов(РезультатТестирования) Экспорт - Параметры = ЮТОбщий.ЗначениеВМассиве(РезультатТестирования); + Параметры = ЮТКоллекции.ЗначениеВМассиве(РезультатТестирования); ВызватьОбработчикРасширения("ПослеВыполненияТестов", Параметры); КонецПроцедуры @@ -157,10 +157,10 @@ // Обработчик события "ПередЧтениемСценариевМодуля" // Позволяет настроить базовые параметры перед чтением настроек тестов модуля // Параметры: -// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля +// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт - Параметры = ЮТОбщий.ЗначениеВМассиве(МетаданныеМодуля); + Параметры = ЮТКоллекции.ЗначениеВМассиве(МетаданныеМодуля); ВызватьОбработчикРасширения("ПередЧтениемСценариевМодуля", Параметры); КонецПроцедуры @@ -168,31 +168,31 @@ // После чтения сценариев модуля. // Позволяет настроить/обработать параметры загруженных настроек тестов модуля // Параметры: -// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля +// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля // ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля Процедура ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт - Параметры = ЮТОбщий.ЗначениеВМассиве(МетаданныеМодуля, ИсполняемыеСценарии); + Параметры = ЮТКоллекции.ЗначениеВМассиве(МетаданныеМодуля, ИсполняемыеСценарии); ВызватьОбработчикРасширения("ПослеЧтенияСценариевМодуля", Параметры); КонецПроцедуры // Обработка события "ПослеЧтенияСценариев" // Параметры: -// Сценарии - Массив из см. ЮТФабрика.ОписаниеТестовогоМодуля - Набор описаний тестовых модулей, которые содержат информацию о запускаемых тестах +// Сценарии - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля - Набор описаний тестовых модулей, которые содержат информацию о запускаемых тестах Процедура ПослеЧтенияСценариев(Сценарии) Экспорт - Параметры = ЮТОбщий.ЗначениеВМассиве(Сценарии); + Параметры = ЮТКоллекции.ЗначениеВМассиве(Сценарии); ВызватьОбработчикРасширения("ПослеЧтенияСценариев", Параметры); КонецПроцедуры // Обработка события "ПослеФормированияИсполняемыхНаборовТестов" // Параметры: -// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов +// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов Процедура ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) Экспорт - Параметры = ЮТОбщий.ЗначениеВМассиве(ИсполняемыеТестовыеМодули); + Параметры = ЮТКоллекции.ЗначениеВМассиве(ИсполняемыеТестовыеМодули); ВызватьОбработчикРасширения("ПослеФормированияИсполняемыхНаборовТестов", Параметры); КонецПроцедуры @@ -206,7 +206,7 @@ Процедура УстановитьКонтекстИсполнения(ТестовыйМодуль = Неопределено, Набор = Неопределено, Тест = Неопределено) Экспорт Уровни = ЮТФабрика.УровниИсполнения(); - КонтекстИсполнения = ЮТКонтекст.КонтекстИсполнения(); + КонтекстИсполнения = ЮТКонтекстСлужебный.КонтекстИсполнения(); КонтекстИсполнения.Модуль = ТестовыйМодуль; КонтекстИсполнения.Набор = Набор; @@ -231,7 +231,7 @@ ПропуститьОбработчикТестовогоМодуля = (ы > 0 И ОбработчикСобытияПереопределен(ИмяСобытия)); Если ПропуститьОбработчикТестовогоМодуля Тогда - Параметры = ЮТОбщий.ЗначениеВМассиве(ОписаниеСобытия); + Параметры = ЮТКоллекции.ЗначениеВМассиве(ОписаниеСобытия); Ошибки = ВызватьОбработчикРасширения(ИмяСобытия, Параметры); ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки); @@ -246,7 +246,7 @@ Процедура ВызватьОбработкуСобытия(ИмяСобытия, ОписаниеСобытия) - Параметры = ЮТОбщий.ЗначениеВМассиве(ОписаниеСобытия); + Параметры = ЮТКоллекции.ЗначениеВМассиве(ОписаниеСобытия); Если ЭтоСобытиеПеред(ИмяСобытия) Тогда Ошибки = ВызватьОбработчикРасширения(ИмяСобытия, Параметры); @@ -264,11 +264,11 @@ Ошибки = Новый Массив(); - Для Каждого ИмяМодуля Из ЮТРасширения.ОбработчикиСобытий() Цикл + Для Каждого ИмяМодуля Из ЮТРасширенияСлужебный.ОбработчикиСобытий() Цикл - Если ЮТОбщий.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда + Если ЮТМетодыСлужебный.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяСобытия); - Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыСобытия); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыСобытия); Если Ошибка <> Неопределено Тогда Ошибки.Добавить(Ошибка); @@ -282,11 +282,11 @@ КонецФункции // Вызвать обработчик модуля. -// +// // Параметры: // ИмяСобытия - Строка - Имя вызываемого метода обработки события -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов -// +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов +// Процедура ВызватьОбработчикТестовогоМодуля(Знач ИмяСобытия, ОписаниеСобытия) ОбработчикСобытияПереопределен = ОбработчикСобытияПереопределен(ИмяСобытия); @@ -298,15 +298,15 @@ ЧастиКоманды = СтрРазделить(ИмяСобытия, "."); Если ЧастиКоманды.Количество() = 2 Тогда - ИмяМодуля = ЧастиКоманды[0]; + ИмяМодуля = ЧастиКоманды[0]; ИмяСобытия = ЧастиКоманды[1]; КонецЕсли; Ошибки = Новый Массив(); Команда = СтрШаблон("%1.%2()", ИмяМодуля, ИмяСобытия); - Если ЮТОбщий.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда + Если ЮТМетодыСлужебный.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда - Ошибка = ЮТОбщий.ВыполнитьМетод(Команда); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(Команда); Если Ошибка <> Неопределено Тогда Ошибки.Добавить(Ошибка); @@ -326,7 +326,7 @@ Процедура ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки) Для Каждого Ошибка Из Ошибки Цикл - ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка); КонецЦикла; КонецПроцедуры diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 89% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 448bfcd4b..f86d80900 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТСобытия + ЮТСобытияСлужебный ru Генератор событий diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 175c510c7..57d3c356b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -21,7 +21,7 @@ // Форматированный текст ошибки утверждения. // // Параметры: -// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки +// ОписаниеПроверки - см. ЮТФабрикаСлужебный.ОписаниеПроверки // ТекстОжидания - Строка - Описание ожидания // ОбъектПроверки - Строка - Объект проверки // @@ -65,7 +65,7 @@ // Строка - Сообщение об ошибке события Функция СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка) Экспорт - ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия; + ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().ОшибкаОбработкиСобытия; Возврат СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, КраткоеСообщениеОшибки(Ошибка)); КонецФункции @@ -80,7 +80,6 @@ КонецФункции - // Формирует строковое представление значения. Для значений, преобразуемых в пустые строки, добавляет описание типа. // // Параметры: @@ -110,7 +109,9 @@ // в противном случае, будет возвращен текст шаблона без изменений. // Функция ПодставитьПредставлениеЗначенияВШаблон(ШаблонСтроки, ЗначениеПараметра) Экспорт + Возврат СтрЗаменить(ШаблонСтроки, "%1", ПредставлениеЗначения(ЗначениеПараметра)); + КонецФункции #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200.suppress" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200.suppress" deleted file mode 100644 index 0102ef970..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 93% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index abb15e9d6..486a36b84 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -35,7 +35,7 @@ Индекс = Данные1.Количество() - 1; Пока Индекс >= 0 Цикл - Если НЕ ЮТСравнениеКлиентСервер.ЗначенияРавны(Данные1[Индекс][Колонка.Имя], Данные2[Индекс][Колонка.Имя]) Тогда + Если НЕ ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Данные1[Индекс][Колонка.Имя], Данные2[Индекс][Колонка.Имя]) Тогда Возврат Ложь; КонецЕсли; Индекс = Индекс - 1; @@ -69,7 +69,7 @@ КонецЕсли; Если УчитыватьТолькоВидимыеКолонки И УчитыватьТолькоВидимыеСтроки Тогда - ЮТОбщийВызовСервера.ТаблицаИзТабличногоДокумента(ТипТабличногоДокумента); + ЮТОбщийСлужебныйВызовСервера.ТаблицаИзТабличногоДокумента(ТипТабличногоДокумента); КонецЕсли; НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 80% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 6b1ab8a63..c2bec952a 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТСравнениеСервер + ЮТСравнениеСлужебныйВызовСервера ru Сравнение сервер diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 85% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 4b71a6fb9..3729f5d9d 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -51,23 +51,23 @@ Результат = Неопределено; - Если ЭтоТипСтруктура(ТипЗначения) Тогда + Если ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗначения) Тогда Результат = СтруктурыРавны(Данные1, Данные2); - ИначеЕсли ЭтоТипСоответствие(ТипЗначения) Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипЗначения) Тогда Результат = СоответствияРавны(Данные1, Данные2); - ИначеЕсли ЭтоТипМассива(ТипЗначения) Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипЗначения) Тогда Результат = МассивыРавны(Данные1, Данные2); ИначеЕсли ТипЗначения = Тип("ТабличныйДокумент") Тогда - Результат = ЮТСравнениеСервер.ТабличныеДокументыРавны(Данные1, Данные2); + Результат = ЮТСравнениеСлужебныйВызовСервера.ТабличныеДокументыРавны(Данные1, Данные2); - ИначеЕсли ЭтоПримитивныйТип(ТипЗначения) ИЛИ ЮТОбщий.ОписаниеТиповЛюбаяСсылка().СодержитТип(ТипЗначения) Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоПримитивныйТип(ТипЗначения) ИЛИ ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗначения) Тогда // Возвращаем ложь, так как для этих типов должно сработать обычное равенство Результат = Ложь; КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off @@ -75,7 +75,7 @@ #Если Сервер Тогда Если ТипЗначения = Тип("ТаблицаЗначений") Тогда - Результат = ЮТСравнениеСервер.ТаблицыРавны(Данные1, Данные2); + Результат = ЮТСравнениеСлужебныйВызовСервера.ТаблицыРавны(Данные1, Данные2); ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда @@ -84,7 +84,7 @@ КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off #КонецЕсли - Если Результат = Неопределено И ПараметрыСравнения <> Неопределено И ЮТОбщий.ЗначениеСтруктуры(ПараметрыСравнения, "ГлубокийАнализ", Ложь) Тогда + Если Результат = Неопределено И ПараметрыСравнения <> Неопределено И ЮТКоллекции.ЗначениеСтруктуры(ПараметрыСравнения, "ГлубокийАнализ", Ложь) Тогда Результат = СравнитьПоЗначению(Данные1, Данные2); КонецЕсли; @@ -127,7 +127,7 @@ // // Возвращаемое значение: // Структура - Параметры проверки: -// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения +// * ОбъектПроверки - см. ЮТФабрикаСлужебный.ОписаниеПроверяемогоЗначения // * ПрефиксОшибки - Строка, Неопределено - // * ОписаниеПроверки - Строка, Неопределено - // * ВидСравнения - Строка @@ -136,7 +136,7 @@ // * ТекстПроверяемоеЗначение - Строка Функция ПараметрыПроверки(ВидСравнения, ПроверяемоеЗначение, ИмяСвойства, ОжидаемоеЗначение, Реверс = Ложь) Экспорт - Параметры = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение); + Параметры = ЮТФабрикаСлужебный.ОписаниеПроверки(ПроверяемоеЗначение); Параметры.ОбъектПроверки.ИмяСвойства = ИмяСвойства; Параметры.Вставить("ВидСравнения", ВидСравнения); Параметры.Вставить("ОжидаемоеЗначение", ОжидаемоеЗначение); @@ -235,7 +235,7 @@ ТипЗнч(Значение), ОжидаемыйТип, Суффикс); - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки); + ЮТРегистрацияОшибокСлужебный.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки); КонецЕсли; Возврат Соответствует; @@ -261,11 +261,11 @@ Результат = Ложь; ТипЗначения = ТипЗнч(Значение); - Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("ФиксированнаяСтруктура") Тогда + Если ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗначения) Тогда Результат = Значение.Свойство(Свойство); - ИначеЕсли ТипЗначения = Тип("Соответствие") Или ТипЗначения = Тип("ФиксированноеСоответствие") Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипЗначения) Тогда Для Каждого КлючЗначение Из Значение Цикл @@ -358,12 +358,12 @@ ИскомоеЗначениеНайдено = СтрНайти(ПроверяемоеЗначение, ОжидаемоеЗначение) > 0; - ИначеЕсли ЭтоТипМассива(ТипПроверяемогоЗначения) Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипПроверяемогоЗначения) Тогда Индекс = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение); ИскомоеЗначениеНайдено = Индекс <> Неопределено; - ИначеЕсли ЭтоТипКлючЗначение(ТипПроверяемогоЗначения) Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоКлючЗначение(ТипПроверяемогоЗначения) Тогда ИскомоеЗначениеНайдено = Ложь; ТипОжидаемогоЗначения = ТипЗнч(ОжидаемоеЗначение); @@ -379,7 +379,7 @@ ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ОжидаемоеЗначение) <> Неопределено; - ИначеЕсли ПроверяемоеЗначение <> Неопределено И ЮТОбщий.МетодОбъектаСуществует(ПроверяемоеЗначение, "Найти") Тогда + ИначеЕсли ПроверяемоеЗначение <> Неопределено И ЮТМетодыСлужебный.МетодОбъектаСуществует(ПроверяемоеЗначение, "Найти") Тогда ИскомоеЗначениеНайдено = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение) <> Неопределено; @@ -393,39 +393,6 @@ КонецФункции -Функция ЭтоТипМассива(Тип) - - Возврат Тип = Тип("Массив") Или Тип = Тип("ФиксированныйМассив"); - -КонецФункции - -Функция ЭтоТипСтруктура(Тип) - - Возврат Тип = Тип("Структура") Или Тип = Тип("ФиксированнаяСтруктура"); - -КонецФункции - -Функция ЭтоТипСоответствие(Тип) - - Возврат Тип = Тип("Соответствие") Или Тип = Тип("ФиксированноеСоответствие"); - -КонецФункции - -Функция ЭтоТипКлючЗначение(Тип) - - Возврат ЭтоТипСтруктура(Тип) ИЛИ ЭтоТипСоответствие(Тип); - -КонецФункции - -Функция ЭтоПримитивныйТип(ТипЗначения) - - Возврат ТипЗначения = Тип("Число") - ИЛИ ТипЗначения = Тип("Строка") - ИЛИ ТипЗначения = Тип("Дата") - ИЛИ ТипЗначения = Тип("Булево"); - -КонецФункции - #Область РеализацияПредикатор Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) Экспорт @@ -433,7 +400,7 @@ Попытка ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); Исключение - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке()); + ЮТРегистрацияОшибокСлужебный.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке()); КонецПопытки; КонецПроцедуры @@ -443,7 +410,7 @@ // Параметры: // Значение - Произвольный - Значение // Выражение - см. ЮТФабрика.ВыражениеПредиката -// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки +// СтатусПроверки - см. ЮТФабрикаСлужебный.ОписаниеРезультатаПроверки // ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке // ПараметрыСравнения - Неопределено // - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры @@ -514,6 +481,10 @@ Результат = ПроверитьСоответствуетШаблону(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки); + ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ВСписке Тогда + + Результат = ПроверитьВСписке(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки); + Иначе ВызватьИсключение СтрШаблон("Неизвестное выражение предиката `%1`", Выражение.ВидСравнения); @@ -539,13 +510,13 @@ Возврат; КонецЕсли; - ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения); + ШаблонСообщения = ЮТПредикатыСлужебныйКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения); Сообщение = ЮТСообщенияСлужебный.ПодставитьПредставлениеЗначенияВШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение); ТекстОшибки = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение); - ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки); + ТекстОшибки = ЮТРегистрацияОшибокСлужебный.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки); - ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, + ЮТРегистрацияОшибокСлужебный.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ФактическоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение); @@ -582,8 +553,8 @@ Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда #Если ВебКлиент Или ТонкийКлиент Тогда - Значение = ЮТОбщийВызовСервера.ИзХранилищаЗначений(Значение); -#Иначе + Значение = ЮТОбщийСлужебныйВызовСервера.ИзХранилищаЗначений(Значение); +#Иначе Значение = Значение.Получить(); #КонецЕсли КонецЕсли; @@ -616,7 +587,7 @@ Если ФактическаяДлина = Неопределено Тогда ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); + ЮТРегистрацияОшибокСлужебный.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); Возврат; КонецЕсли; @@ -636,7 +607,7 @@ Если Результат = Неопределено Тогда ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); + ЮТРегистрацияОшибокСлужебный.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); КонецЕсли; Возврат Результат; @@ -656,13 +627,31 @@ Если СоответствуетШаблону = Неопределено Тогда ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); + ЮТРегистрацияОшибокСлужебный.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки); КонецЕсли; Возврат СоответствуетШаблону; КонецФункции +Функция ПроверитьВСписке(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки) + + ТипыПараметровСоответствуют = ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Массив, ФиксированныйМассив, СписокЗначений"); + + Если Не ТипыПараметровСоответствуют Тогда + Возврат Неопределено; + КонецЕсли; + + ТипСписка = ТипЗнч(ОжидаемоеЗначение); + + Если ЮТТипыДанныхСлужебный.ЭтоМассива(ТипСписка) Тогда + Возврат ОжидаемоеЗначение.Найти(ПроверяемоеЗначение) <> Неопределено; + Иначе + Возврат ОжидаемоеЗначение.НайтиПоЗначению(ПроверяемоеЗначение) <> Неопределено; + КонецЕсли; + +КонецФункции + #КонецОбласти #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 84% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index 2deec1154..f06402790 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,6 +1,6 @@ - ЮТСравнениеКлиентСервер + ЮТСравнениеСлужебныйКлиентСервер ru Сравнение клиент сервер diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" index b99dede19..d0a526862 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,6 +18,73 @@ #Область ПрограммныйИнтерфейс +// Конкатенирует строки, разделяя их разделителем +// +// Параметры: +// ИсходнаяСтрока - Строка - Исходная строка +// ДополнительнаяСтрока - Строка - Добавляемая строка +// Разделитель - Строка - Строка разделитель, любой набор символов - разделитель между подстроками +// +// Возвращаемое значение: +// Строка - Результат конкатенации строк +// +Функция ДобавитьСтроку(ИсходнаяСтрока, ДополнительнаяСтрока, Разделитель = ";") Экспорт + + Если Не ПустаяСтрока(ДополнительнаяСтрока) Тогда + + Если Не ПустаяСтрока(ИсходнаяСтрока) Тогда + Возврат Строка(ИсходнаяСтрока) + Разделитель + Строка(ДополнительнаяСтрока); + Иначе + Возврат Строка(ДополнительнаяСтрока); + КонецЕсли; + + КонецЕсли; + + Возврат Строка(ИсходнаяСтрока); + +КонецФункции + +// Возвращает массив на основании строки. +// При этом: +// * отсекает незначащие символы, стоящие слева от первого значащего символа в строке, и пробелы, стоящие справа от последнего значащего символа в строке. +// * в отличии от `СтрРазделить` в качестве разделителля используется вся переданная строка, а не любой из символов входящий в нее. +// +// Параметры: +// Значение - Строка - преобразуемая строка +// Разделитель - Строка - строка-разделитель +// +// Возвращаемое значение: +// Массив Из Строка - массив строк +// +Функция РазделитьСтроку(Знач Значение, Разделитель = ";") Экспорт + + КодУниверсальногоРазделителя = 5855; + УниверсальныйРазделитель = Символ(КодУниверсальногоРазделителя); + МодифицированнаяСтрока = СтрЗаменить(Значение, Разделитель, УниверсальныйРазделитель); + + МассивСтрок = ?(МодифицированнаяСтрока = "", Новый Массив, СтрРазделить(МодифицированнаяСтрока, УниверсальныйРазделитель)); + + Для Индекс = 0 По МассивСтрок.ВГраница() Цикл + МассивСтрок[Индекс] = СокрЛП(МассивСтрок[Индекс]); + КонецЦикла; + + Возврат МассивСтрок; + +КонецФункции + +// Формирует строку из заданного количества повторяемых символов +// Параметры: +// Символ - Строка - Повторяемый символ +// Количество - Число - Количество повторений +// +// Возвращаемое значение: +// Строка - Строка повторяемых символов +Функция СтрокаСимволов(Символ, Количество) Экспорт + + Возврат СтрСоединить(Новый Массив(Количество + 1), Символ); + +КонецФункции + // Строка с символами русского алфавита // // Параметры: @@ -56,6 +123,50 @@ КонецФункции +// Выполняет сравнение версий +// +// Параметры: +// Версия1 - Строка +// Версия2 - Строка +// +// Возвращаемое значение: +// Число - Результат сравнения +// `-1` - Версия1 меньше Версия2 +// `0` - Версии равны +// `1` - Версия1 больше Версия2 +Функция СравнитьВерсии(Версия1, Версия2) Экспорт + + ЧастиВерсия1 = СтрРазделить(Версия1, "."); + ЧастиВерсия2 = СтрРазделить(Версия2, "."); + + КоличествоЧастейВерсия1 = ЧастиВерсия1.Количество(); + КоличествоЧастейВерсия2 = ЧастиВерсия2.Количество(); + + КоличествоЧастей = Макс(КоличествоЧастейВерсия1, КоличествоЧастейВерсия2); + + Для Инд = КоличествоЧастейВерсия1 По КоличествоЧастей - 1 Цикл + ЧастиВерсия1.Добавить("0"); + КонецЦикла; + + Для Инд = КоличествоЧастейВерсия2 По КоличествоЧастей - 1 Цикл + ЧастиВерсия2.Добавить("0"); + КонецЦикла; + + Результат = 0; + + Для Разряд = 0 По КоличествоЧастей - 1 Цикл + + Результат = Число(ЧастиВерсия1[Разряд]) - Число(ЧастиВерсия2[Разряд]); + Если Результат <> 0 Тогда + Прервать; + КонецЕсли; + + КонецЦикла; + + Возврат Макс(Мин(Результат, 1), -1); + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" index 97d9a2d3e..443ad1ae4 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" @@ -37,14 +37,14 @@ КонецЕсли; Если ЗначениеЗаполнено(Наименование) Тогда - Если ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда + Если ЮТОбщийСлужебныйВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда Данные.Вставить("Description", Наименование); Иначе Данные.Вставить("Наименование", Наименование); КонецЕсли; КонецЕсли; - Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь); + Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь); ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка); Возврат Ссылка; @@ -74,7 +74,7 @@ Данные.Удалить("РежимЗаписи"); КонецЕсли; - Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь); + Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь); ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка); Возврат Ссылка; @@ -119,13 +119,13 @@ Функция СлучайноеЧисло(Минимум = 0, Максимум = Неопределено, ЗнаковПослеЗапятой = 0) Экспорт #Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТестовыеДанные.СлучайноеЧисло"); + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТТестовыеДанные.СлучайноеЧисло"); #Иначе - Генератор = ЮТКонтекст.ЗначениеКонтекста("ГенераторСлучайныхЧисел"); + Генератор = ЮТКонтекстСлужебный.ЗначениеКонтекста("ГенераторСлучайныхЧисел"); Если Генератор = Неопределено Тогда Генератор = Новый ГенераторСлучайныхЧисел(); - ЮТКонтекст.УстановитьЗначениеКонтекста("ГенераторСлучайныхЧисел", Генератор); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста("ГенераторСлучайныхЧисел", Генератор); КонецЕсли; Если Максимум = Неопределено Тогда @@ -238,22 +238,143 @@ // // Возвращаемое значение: // Дата - Случайная дата -Функция СлучайнаяДата(Знач Минимум = Неопределено, Знач Максимум = Неопределено) Экспорт +Функция СлучайнаяДата(Знач Минимум = '00010101', Знач Максимум = '39991231') Экспорт - Если Минимум = Неопределено Тогда - Минимум = '00010101'; + Если Минимум = Максимум Тогда + Возврат Минимум; + ИначеЕсли Максимум < Минимум Тогда + ВызватьИсключение ЮТИсключения.НекорректныеПараметрыМетода("СлучайнаяДата", "максимальное значение должно быть больше минимального"); КонецЕсли; - Если Максимум = Неопределено Тогда - Максимум = '39991231'; + РазностьДат = Максимум - Минимум; + + Если РазностьДат <= МаксимумГенератора() Тогда + Возврат Минимум + СлучайноеЧисло(0, РазностьДат); КонецЕсли; СекундВДне = 86400; - КоличествоДней = Цел((Максимум - Минимум) / СекундВДне); + КоличествоДней = Цел((РазностьДат) / СекундВДне); + Возврат Минимум + СлучайноеЧисло(0, КоличествоДней) * СекундВДне + СлучайноеЧисло(0, СекундВДне); КонецФункции +// Генерирует случайное время +// +// Возвращаемое значение: +// Дата - Случайное время +Функция СлучайноеВремя() Экспорт + + СекундВСутках = 60*60*24; + + Возврат '00010101000000' + СлучайноеЧисло(0, СекундВСутках - 1); + +КонецФункции + +// Генерирует случайную дату в будущем. +// Максимальное значение генерируемой даты можно ограничить параметрами. +// Например: СлучайнаяДатаВБудущем(2, "часа") - будет сформирована дата в интервале (ТекущаяДата, ТекущаяДата + 2 часа] +// +// Параметры: +// Интервал - Число - Интервал +// ТипИнтервала - Строка - Строковое представление интервала времени, возможные значения +// * секунда, секунды, секунд +// * минута, минуты, минут +// * час, часа, часов +// * день, дня, дней +// * месяц, месяца, месяцев +// +// Возвращаемое значение: +// Дата - Случайная дата в будущем +Функция СлучайнаяДатаВБудущем(Интервал = Неопределено, ТипИнтервала = Неопределено) Экспорт + + //@skip-check use-non-recommended-method + Возврат СлучайнаяДатаПосле(ТекущаяДата(), Интервал, ТипИнтервала); + +КонецФункции + +// Генерирует случайную дату в прошлом. +// Минимальное значение генерируемой даты можно ограничить параметрами. +// Например: СлучайнаяДатаВПрошлом(2, "часа") - будет сформирована дата в интервале [ТекущаяДата - 2 часа, ТекущаяДата) +// +// Параметры: +// Интервал - Число - Интервал +// ТипИнтервала - Строка - Строковое представление интервала времени, возможные значения +// * секунда, секунды, секунд +// * минута, минуты, минут +// * час, часа, часов +// * день, дня, дней +// * месяц, месяца, месяцев +// +// Возвращаемое значение: +// Дата - Случайная дата в прошлом +Функция СлучайнаяДатаВПрошлом(Интервал = Неопределено, ТипИнтервала = Неопределено) Экспорт + + //@skip-check use-non-recommended-method + Возврат СлучайнаяДатаДо(ТекущаяДата(), Интервал, ТипИнтервала); + +КонецФункции + +// Генерирует случайную дату, значение которой больше указанной. +// Максимальное значение генерируемой даты можно ограничить параметрами. +// Например: СлучайнаяДатаПосле(Дата, 2, "часа") - будет сформирована дата в интервале [Дата - 2 часа, Дата) +// +// Параметры: +// Дата - Дата +// Интервал - Число - Интервал +// ТипИнтервала - Строка - Строковое представление интервала времени, возможные значения +// * секунда, секунды, секунд +// * минута, минуты, минут +// * час, часа, часов +// * день, дня, дней +// * месяц, месяца, месяцев +// +// Возвращаемое значение: +// Дата +Функция СлучайнаяДатаПосле(Дата, Интервал = Неопределено, ТипИнтервала = Неопределено) Экспорт + + ИнтервалНеУказан = Интервал = Неопределено И ТипИнтервала = Неопределено; + + Если ИнтервалНеУказан Тогда + Возврат СлучайнаяДата(Дата + 1); + Иначе + Минимум = Дата + 1; + Максимум = ЮТОбщий.ДобавитьКДате(Дата, Интервал, ТипИнтервала); + Возврат СлучайнаяДата(Минимум, Максимум); + КонецЕсли; + +КонецФункции + +// Генерирует случайную дату, значение которой меньше указанной. +// Минимальное значение генерируемой даты можно ограничить параметрами. +// Например: СлучайнаяДатаПосле(Дата, 2, "часа") - будет сформирована дата в интервале [Дата - 2 часа, Дата) +// +// Параметры: +// Дата - Дата +// Интервал - Число - Интервал +// ТипИнтервала - Строка - Строковое представление интервала времени, возможные значения +// * секунда, секунды, секунд +// * минута, минуты, минут +// * час, часа, часов +// * день, дня, дней +// * месяц, месяца, месяцев +// +// Возвращаемое значение: +// Дата +Функция СлучайнаяДатаДо(Дата, Интервал = Неопределено, ТипИнтервала = Неопределено) Экспорт + + ИнтервалНеУказан = Интервал = Неопределено И ТипИнтервала = Неопределено; + + Если ИнтервалНеУказан Тогда + Возврат СлучайнаяДата(, Дата - 1); + Иначе + Минимум = ЮТОбщий.ДобавитьКДате(Дата, -Интервал, ТипИнтервала); + Максимум = Дата - 1; + Возврат СлучайнаяДата(Минимум, Максимум); + КонецЕсли; + +КонецФункции + // Генерирует и возвращает случайный IP адрес. // // Возвращаемое значение: @@ -305,7 +426,7 @@ // ПеречислениеСсылка Функция СлучайноеЗначениеПеречисления(Перечисление) Экспорт - Возврат ЮТТестовыеДанныеВызовСервера.СлучайноеЗначениеПеречисления(Перечисление); + Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.СлучайноеЗначениеПеречисления(Перечисление); КонецФункции @@ -320,7 +441,7 @@ // ПеречислениеСсылка Функция СлучайноеПредопределенноеЗначение(Менеджер, Отбор = Неопределено) Экспорт - Возврат ЮТТестовыеДанныеВызовСервера.СлучайноеПредопределенноеЗначение(Менеджер, Отбор); + Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.СлучайноеПредопределенноеЗначение(Менеджер, Отбор); КонецФункции @@ -514,7 +635,7 @@ Варианты = Новый Массив; Варианты.Добавить(ЗначенияПоУмолчанию); - Ключи = ЮТОбщий.ВыгрузитьЗначения(ЗначенияПараметров, "Ключ"); + Ключи = ЮТКоллекции.ВыгрузитьЗначения(ЗначенияПараметров, "Ключ"); ДобавитьВарианты(Варианты, ЗначенияПоУмолчанию, ЗначенияПараметров, Ключи, 0); @@ -551,6 +672,26 @@ КонецФункции +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда +// Возвращает конструктор создания объекта XDTO +// +// Параметры: +// ИмяТипа - Строка - Имя типа объекта +// ПространствоИмен - Строка - Пространство имен типа +// Фабрика - ФабрикаXDTO - Используемая фабрика XDTO +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор объекта XDTO +Функция КонструкторОбъектаXDTO(ИмяТипа, ПространствоИмен, Фабрика = Неопределено) Экспорт + + Обработка = Обработки.ЮТКонструкторОбъектаXDTO.Создать(); + Обработка.Инициализировать(ИмяТипа, ПространствоИмен, Фабрика); + + Возврат Обработка; + +КонецФункции +#КонецЕсли + // Удаляет переданные объекта // // Параметры: @@ -558,7 +699,7 @@ Процедура Удалить(Ссылки) Экспорт Если ЗначениеЗаполнено(Ссылки) Тогда - ЮТТестовыеДанныеВызовСервера.Удалить(Ссылки); + ЮТТестовыеДанныеСлужебныйВызовСервера.Удалить(Ссылки); КонецЕсли; КонецПроцедуры @@ -622,7 +763,7 @@ // ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок Функция HTTPСервисЗапрос() Экспорт - Если ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда + Если ЮТОбщийСлужебныйВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда Возврат Обработки.ЮТHTTPServiceRequest.Создать(); Иначе Возврат Обработки.ЮТHTTPСервисЗапрос.Создать(); @@ -657,7 +798,7 @@ // Ссылка - ЛюбаяСсылка // ИмяРеквизита - Строка // ЗначениеРеквизита - Произвольный -// ПараметрыЗаписи - см. ЮТФабрика.ПараметрыЗаписи +// ПараметрыЗаписи - см. ЮТФабрикаСлужебный.ПараметрыЗаписи Процедура УстановитьЗначениеРеквизита(Ссылка, ИмяРеквизита, ЗначениеРеквизита, ПараметрыЗаписи = Неопределено) Экспорт Значения = Новый Соответствие(); @@ -671,10 +812,10 @@ // Параметры: // Ссылка - ЛюбаяСсылка - Ссылка // ЗначенияРеквизитов - Структура, Соответствие из Произвольный - Значения реквизитов -// ПараметрыЗаписи - см. ЮТФабрика.ПараметрыЗаписи +// ПараметрыЗаписи - см. ЮТФабрикаСлужебный.ПараметрыЗаписи Процедура УстановитьЗначенияРеквизитов(Ссылка, ЗначенияРеквизитов, ПараметрыЗаписи = Неопределено) Экспорт - ЮТТестовыеДанныеВызовСервера.УстановитьЗначенияРеквизитов(Ссылка, ЗначенияРеквизитов); + ЮТТестовыеДанныеСлужебныйВызовСервера.УстановитьЗначенияРеквизитов(Ссылка, ЗначенияРеквизитов); КонецПроцедуры @@ -706,7 +847,7 @@ Ключ = Ключи[Инд]; Для Каждого Значение Из ЗначенияПараметров[Ключ] Цикл - Вариант = ЮТОбщий.СкопироватьСтруктуру(БазоваяСтруктура); + Вариант = ЮТКоллекции.СкопироватьСтруктуру(БазоваяСтруктура); Вариант[Ключ] = Значение; Варианты.Добавить(Вариант); @@ -716,4 +857,25 @@ КонецПроцедуры +Функция МножительПериода(ТипИнтервала) + + Множители = ЮТСлужебныйПовторногоИспользования.МножителиИнтервалов(); + Возврат Множители[ТипИнтервала]; + +КонецФункции + +Функция ЭтоМесяц(ТипИнтервала) + + Возврат СтрСравнить(ТипИнтервала, "месяц") = 0 + Или СтрСравнить(ТипИнтервала, "месяца") = 0 + Или СтрСравнить(ТипИнтервала, "месяцев") = 0; + +КонецФункции + +Функция МаксимумГенератора() + + Возврат 4294967295; + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 35a5c6d50..4c5690195 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -56,7 +56,7 @@ Иначе - Значение = ЮТТестовыеДанныеВызовСервера.ФикцияЗначенияБазы(Тип, РеквизитыЗаполнения); + Значение = ЮТТестовыеДанныеСлужебныйВызовСервера.ФикцияЗначенияБазы(Тип, РеквизитыЗаполнения); ДобавитьТестовуюЗапись(Значение); КонецЕсли; @@ -152,9 +152,9 @@ Функция ЗагрузитьИзМакета(Макет, ОписанияТипов, КэшЗначений, ЗаменяемыеЗначения, ПараметрыСозданияОбъектов, ТаблицаЗначений) Экспорт - ПараметрыЗаполнения = ЮТФабрика.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов); + ПараметрыЗаполнения = ЮТФабрикаСлужебный.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов); - Возврат ЮТТестовыеДанныеВызовСервера.ЗагрузитьИзМакета(Макет, + Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.ЗагрузитьИзМакета(Макет, ОписанияТипов, КэшЗначений, ЗаменяемыеЗначения, @@ -169,7 +169,7 @@ Функция СлучайноЗначениеСистемногоПеречисления(Тип) - Менеджер = ЮТОбщий.ВычислитьБезопасно(ЮТТипыДанныхСлужебный.ИмяСистемногоПеречисления(Тип)); + Менеджер = ЮТМетодыСлужебный.ВычислитьБезопасно(ЮТТипыДанныхСлужебный.ИмяСистемногоПеречисления(Тип)); Значения = Новый Массив(); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 81% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index 04717e6f7..37f235a76 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -20,7 +20,6 @@ Функция СоздатьЗапись(Знач Менеджер, Знач Данные, Знач ПараметрыЗаписи, Знач ВернутьОбъект) Экспорт - Менеджер = ЮТОбщий.Менеджер(Менеджер); ПараметрыЗаписи = ПараметрыЗаписи(ПараметрыЗаписи); Объект = НовыйОбъект(Менеджер, Данные, ПараметрыЗаписи.ДополнительныеСвойства); @@ -36,21 +35,33 @@ КонецФункции // Создает новый объект и заполняет его данными -// +// // Параметры: // Менеджер - Произвольный // Данные - Структура - Данные заполнения объекта // ДополнительныеСвойства - Структура - Дополнительные свойства объекта -// +// // Возвращаемое значение: // Произвольный - Созданный объект Функция НовыйОбъект(Знач Менеджер, Знач Данные, Знач ДополнительныеСвойства = Неопределено) Экспорт - Менеджер = ЮТОбщий.Менеджер(Менеджер); - ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер); + Менеджер = ЮТОбщий.Менеджер(ОписаниеОбъектаМетаданных); + + ЭтоРегистр = ЮТМетаданные.ЭтоРегистр(ОписаниеОбъектаМетаданных); Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа, Данные); + + Если ДополнительныеСвойства <> Неопределено Тогда + ЮТКоллекции.ДополнитьСтруктуру(Объект.ДополнительныеСвойства, ДополнительныеСвойства); + КонецЕсли; + + Если ЭтоРегистр Тогда + + ЗаполнитьНаборРегистра(Объект, Данные); + Возврат Объект; + + КонецЕсли; ЗаполнитьЗначенияСвойств(Объект, Данные); Если ОписаниеОбъектаМетаданных.ОписаниеТипа.ТабличныеЧасти Тогда @@ -73,10 +84,6 @@ ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных); - Если ОписаниеОбъектаМетаданных.ОписаниеТипа.Ссылочный И ДополнительныеСвойства <> Неопределено Тогда - ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ДополнительныеСвойства); - КонецЕсли; - Возврат Объект; КонецФункции @@ -84,21 +91,20 @@ Процедура Удалить(Знач Ссылки) Экспорт Если ТипЗнч(Ссылки) <> Тип("Массив") Тогда - Ссылки = ЮТОбщий.ЗначениеВМассиве(Ссылки); + Ссылки = ЮТКоллекции.ЗначениеВМассиве(Ссылки); КонецЕсли; - СсылочныеТипы = ЮТОбщий.ОписаниеТиповЛюбаяСсылка(); Ошибки = Новый Массив; Для Каждого Ссылка Из Ссылки Цикл ТипЗначения = ТипЗнч(Ссылка); - Если Ссылка = Неопределено ИЛИ СтрНачинаетсяС(ЮТОбщий.ПредставлениеТипа(ТипЗначения), "Enum") Тогда + Если Ссылка = Неопределено ИЛИ ЮТТипыДанныхСлужебный.ЭтоТипПеречисления(ТипЗначения) Тогда Продолжить; КонецЕсли; Попытка - Если СсылочныеТипы.СодержитТип(ТипЗначения) Тогда + Если ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗначения) Тогда Объект = Ссылка.ПолучитьОбъект(); Если Объект <> Неопределено Тогда Объект.Удалить(); @@ -112,7 +118,7 @@ КонецЕсли; Исключение - Ошибки.Добавить(ЮТРегистрацияОшибок.ПредставлениеОшибки("Удаление " + Ссылка, ИнформацияОбОшибке())); + Ошибки.Добавить(ЮТРегистрацияОшибокСлужебный.ПредставлениеОшибки("Удаление " + Ссылка, ИнформацияОбОшибке())); КонецПопытки; @@ -141,16 +147,9 @@ КонецЕсли; ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(ОбъектМетаданных); - ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа; + Менеджер = ЮТОбщий.Менеджер(ОбъектМетаданных); - Если ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда - ИмяТипаМенеджера = СтрШаблон("%1Manager.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя); - Иначе - ИмяТипаМенеджера = СтрШаблон("%1Менеджер.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя); - КонецЕсли; - Менеджер = Новый (ИмяТипаМенеджера); - - Объект = СоздатьОбъект(Менеджер, ОписаниеТипа, РеквизитыЗаполнения); + Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа, РеквизитыЗаполнения); Если ЗначениеЗаполнено(РеквизитыЗаполнения) Тогда ЗаполнитьЗначенияСвойств(Объект, РеквизитыЗаполнения); @@ -169,7 +168,7 @@ Знач ПараметрыЗаполнения, Знач ТаблицаЗначений) Экспорт - Таблица = ЮТТестовыеДанные_ТаблицыЗначений.ЗагрузитьИзМакета(Макет, + Таблица = ЮТТестовыеДанныеСлужебныйТаблицыЗначений.ЗагрузитьИзМакета(Макет, ОписанияТипов, КэшЗначений, ЗаменяемыеЗначения, @@ -179,7 +178,7 @@ Возврат Таблица; КонецЕсли; - Реквизиты = СтрСоединить(ЮТОбщий.ВыгрузитьЗначения(Таблица.Колонки, "Имя"), ","); + Реквизиты = СтрСоединить(ЮТКоллекции.ВыгрузитьЗначения(Таблица.Колонки, "Имя"), ","); Результат = Новый Массив(Таблица.Количество()); Для Инд = 0 По Таблица.Количество() - 1 Цикл @@ -207,7 +206,7 @@ Условия = ЮТест.Предикат(Отбор) .Реквизит("Предопределенный").Равно(Истина); - ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Условия, "Ссылка"); + ОписаниеЗапроса = ЮТЗапросыСлужебныйКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Условия, "Ссылка"); Данные = ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса); @@ -242,11 +241,11 @@ #Область СлужебныеПроцедурыИФункции // Создать объект. -// -// Параметры: ОписаниеМенеджера - +// +// Параметры: ОписаниеМенеджера - // См. ОписаниеМенеджера // Менеджер - Произвольный - Менеджер -// ОписаниеТипа - см. ЮТМетаданные.ОписаниеОбъектаМетаданных +// ОписаниеТипа - см. ЮТМетаданные.СтруктураОписанияОбъектаМетаданных // Данные - Структура // Возвращаемое значение: // Произвольный - Создать объект @@ -254,7 +253,7 @@ Если ОписаниеТипа.Конструктор = "СоздатьЭлемент" Тогда - ЭтоГруппа = ?(Данные = Неопределено, Ложь, ЮТОбщий.ЗначениеСтруктуры(Данные, "ЭтоГруппа", Ложь)); + ЭтоГруппа = ?(Данные = Неопределено, Ложь, ЮТКоллекции.ЗначениеСтруктуры(Данные, "ЭтоГруппа", Ложь)); Если ЭтоГруппа Тогда Результат = Менеджер.СоздатьГруппу(); Иначе @@ -286,11 +285,11 @@ КонецФункции // Записать объект. -// +// // Параметры: // Объект - Произвольный - Объект // ПараметрыЗаписи - см. ЮТОбщий.ПараметрыЗаписи -// +// // Возвращаемое значение: // ЛюбаяСсылка Функция ЗаписатьОбъект(Объект, ПараметрыЗаписи) @@ -299,10 +298,6 @@ Объект.ОбменДанными.Загрузка = Истина; КонецЕсли; - Если ЗначениеЗаполнено(ПараметрыЗаписи.ДополнительныеСвойства) Тогда - ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ПараметрыЗаписи.ДополнительныеСвойства); - КонецЕсли; - Попытка Если ПараметрыЗаписи.РежимЗаписи <> Неопределено Тогда @@ -328,10 +323,10 @@ Процедура ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных) - АнглийскийЯзык = ЮТОбщийВызовСервера.ЭтоАнглийскийВстроенныйЯзык(); - ИмяТипаДокумент = ?(АнглийскийЯзык,"Document","Документ"); - ИмяРеквизитаКод = ?(АнглийскийЯзык,"Code","Код"); - ИмяРеквизитаНаименование = ?(АнглийскийЯзык,"Description","Наименование"); + АнглийскийЯзык = ЮТОбщийСлужебныйВызовСервера.ЭтоАнглийскийВстроенныйЯзык(); + ИмяТипаДокумент = ?(АнглийскийЯзык, "Document", "Документ"); + ИмяРеквизитаКод = ?(АнглийскийЯзык, "Code", "Код"); + ИмяРеквизитаНаименование = ?(АнглийскийЯзык, "Description", "Наименование"); ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа; Если ОписаниеТипа.Имя = ИмяТипаДокумент Тогда @@ -345,13 +340,13 @@ Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство(ИмяРеквизитаКод) И ОписаниеОбъектаМетаданных.Реквизиты[ИмяРеквизитаКод].Обязательный - И Не ЗначениеЗаполнено(Объект.Код) Тогда + И НЕ ЗначениеЗаполнено(Объект.Код) Тогда Объект.УстановитьНовыйКод(); КонецЕсли; Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство(ИмяРеквизитаНаименование) И ОписаниеОбъектаМетаданных.Реквизиты[ИмяРеквизитаНаименование].Обязательный - И Не ЗначениеЗаполнено(Объект.Наименование) Тогда + И НЕ ЗначениеЗаполнено(Объект.Наименование) Тогда Объект.Наименование = ЮТТестовыеДанные.СлучайнаяСтрока(); КонецЕсли; @@ -379,9 +374,20 @@ Менеджер = ЮТОбщий.Менеджер(Описание); Возврат Менеджер.СоздатьКлючЗаписи(КлючевыеРеквизиты); + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипНабораЗаписей(ТипЗначения) Тогда + + КлючевыеРеквизиты = Новый Структура(); + + Для Каждого ЭлементОтбора Из Объект.Отбор Цикл + КлючевыеРеквизиты.Вставить(ЭлементОтбора.Имя, ЭлементОтбора.Значение); + КонецЦикла; + + Менеджер = ЮТОбщий.Менеджер(Объект); + Возврат Менеджер.СоздатьКлючЗаписи(КлючевыеРеквизиты); + Иначе - Сообщение = ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТТестовыеДанныеВызовСервера.КлючЗаписи", Объект); + Сообщение = ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТТестовыеДанныеВызовСервера.КлючЗаписи", Объект); ВызватьИсключение Сообщение; КонецЕсли; @@ -400,4 +406,15 @@ КонецФункции +Процедура ЗаполнитьНаборРегистра(Набор, ДанныеЗаписи) + + Запись = Набор.Добавить(); + ЗаполнитьЗначенияСвойств(Запись, ДанныеЗаписи); + + Для Каждого ЭлементОтбора Из Набор.Отбор Цикл + ЭлементОтбора.Установить(Запись[ЭлементОтбора.Имя]); + КонецЦикла; + +КонецПроцедуры + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 80% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index ffd304d45..a104c2e86 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТТестовыеДанныеВызовСервера + ЮТТестовыеДанныеСлужебныйВызовСервера ru Тестовые данные (вызов сервера) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Module.bsl" similarity index 93% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Module.bsl" index a37037e1e..734c06059 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Module.bsl" @@ -49,7 +49,7 @@ ПараметрыЗагрузки = ПараметрыЗагрузки(КолонкиМакета, ОписанияТипов, ЗаменяемыеЗначения, КэшЗначений, ПараметрыЗаполнения); - Выборка = ЮТОбщийВызовСервера.ВыборкаИзТабличногоДокумента(ДанныеМакета); + Выборка = ЮТОбщийСлужебныйВызовСервера.ВыборкаИзТабличногоДокумента(ДанныеМакета); Пока Выборка.Следующий() Цикл @@ -92,7 +92,7 @@ Продолжить; КонецЕсли; - КолонкиМакета = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель); + КолонкиМакета = ЮТСтроки.РазделитьСтроку(Строка, Разделитель); СледующаяСтрока(ПараметрыИтератора); Прервать; @@ -112,7 +112,7 @@ КонецЕсли; СтрокаДанных = ПараметрыЗагрузки.Таблица.Добавить(); - Блоки = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель); + Блоки = ЮТСтроки.РазделитьСтроку(Строка, Разделитель); Для Каждого ОписаниеКолонки Из ПараметрыЗагрузки.ОписаниеКолонок Цикл @@ -166,7 +166,7 @@ ПараметрыЧтения.ИзВыборки = Истина; ПараметрыЧтения.Вставить("Выборка", Источник); Иначе - ВызватьИсключение "Неподдерживаемый параметр"; + ВызватьИсключение ЮТИсключения.НекорректныеПараметрыМетода("ЗагрузитьИзМакета", "неподдерживаемый источник"); КонецЕсли; Возврат ПараметрыЧтения; @@ -210,8 +210,7 @@ КонецЕсли; Иначе - - ВызватьИсключение "Некорректные/неподдерживаемые параметры чтения"; + ВызватьИсключение ЮТИсключения.НекорректныеПараметрыМетода("ЗагрузитьИзМакета", "Некорректные/неподдерживаемые параметры чтения"); КонецЕсли; @@ -225,16 +224,15 @@ ДанныеМакета = Неопределено; ПараметрыСодержитДанные = ТипПараметра = Тип("ТабличныйДокумент") - Или ТипПараметра = Тип("ТекстовыйДокумент") - Или ТипПараметра = Тип("Строка") - И СтрНачинаетсяС(Макет, "|"); + ИЛИ ТипПараметра = Тип("ТекстовыйДокумент") + ИЛИ ТипПараметра = Тип("Строка") И СтрНачинаетсяС(Макет, "|"); Если ПараметрыСодержитДанные Тогда ДанныеМакета = Макет; ИначеЕсли ТипПараметра = Тип("Строка") Тогда - ДанныеМакета = ЮТОбщийВызовСервера.Макет(Макет); + ДанныеМакета = ЮТОбщийСлужебныйВызовСервера.Макет(Макет); Иначе - ВызватьИсключение ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТТестовыеДанныеВызовСервера.ДанныеМакета", Макет); + ВызватьИсключение ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТТестовыеДанныеВызовСервера.ДанныеМакета", Макет); КонецЕсли; Возврат ДанныеМакета; @@ -276,7 +274,7 @@ ЗаменяемыеЗначения = Новый Соответствие; КонецЕсли; - Если Не ЗначениеЗаполнено(КэшЗначений) Тогда + Если НЕ ЗначениеЗаполнено(КэшЗначений) Тогда КэшЗначений = Новый Соответствие; КонецЕсли; @@ -331,9 +329,9 @@ ИначеЕсли ОписаниеКолонки.Ссылочный Тогда Значение = СоздатьНовуюЗапись(ОписаниеКолонки, ЗначенияРеквизитов, ПараметрыЗаписи); ИначеЕсли ОписаниеКолонки.ЭтоДата Тогда - Значение = ЮТПреобразования.ПривестиЗначениеКДате(ОписаниеКолонки.ОписаниеТипа, ЗначениеПредставления); + Значение = ЮТПреобразованияСлужебный.ПривестиЗначениеКДате(ОписаниеКолонки.ОписаниеТипа, ЗначениеПредставления); ИначеЕсли ОписаниеКолонки.ЭтоЧисло Тогда - Значение = ЮТПреобразования.ПривестиЗначениеКЧислу(ОписаниеКолонки.ОписаниеТипа, ЗначениеПредставления); + Значение = ЮТПреобразованияСлужебный.ПривестиЗначениеКЧислу(ОписаниеКолонки.ОписаниеТипа, ЗначениеПредставления); Иначе Значение = ОписаниеКолонки.ОписаниеТипа.ПривестиЗначение(ЗначениеПредставления); КонецЕсли; @@ -356,7 +354,7 @@ Конструктор.ФикцияОбязательныхПолей(); КонецЕсли; - Возврат Конструктор.Записать(, ПараметрыЗаписи.ПараметрыЗаписи.ОбменДаннымиЗагрузка); + Возврат Конструктор.Записать( , ПараметрыЗаписи.ПараметрыЗаписи.ОбменДаннымиЗагрузка); КонецФункции @@ -377,7 +375,7 @@ ОписаниеКолонок = ОписаниеКолонок(КолонкиМакета, ОписанияТипов); ПодготовитьПараметрыЗаполненияТаблицы(КэшЗначений, ЗаменяемыеЗначения, ПараметрыЗаполнения, ОписаниеКолонок); ПараметрыСоздания = ПараметрыЗаполнения.СозданиеОбъектовМетаданных; - + ТаблицаЗначений = НоваяТаблица(ОписаниеКолонок); ПараметрыЗагрузки = Новый Структура; @@ -408,7 +406,7 @@ КонецЦикла; Если ТипЗнч(ОписанияТипов) = Тип("Структура") Тогда - ОписанияТипов = ЮТОбщий.ВСоответствие(ОписанияТипов, "Ключ", "Значение"); + ОписанияТипов = ЮТКоллекции.ВСоответствие(ОписанияТипов, "Ключ", "Значение"); КонецЕсли; ЗагружаемыеКолонки = Новый Массив(); @@ -556,7 +554,7 @@ ОписаниеКолонки.Менеджер = ЮТОбщий.Менеджер(ОписаниеКолонки.ОписаниеОбъектаМетаданных); ОписаниеКолонки.КлючТипаЗначения = ЮТТипыДанныхСлужебный.ИдентификаторТипа(ТипЗначения); КонецЕсли; - + КонецПроцедуры #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.mdo" similarity index 80% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.mdo" index 6c6dc00b0..5efe35c92 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265_\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТТестовыеДанные_ТаблицыЗначений + ЮТТестовыеДанныеСлужебныйТаблицыЗначений ru Тестовые данные таблицы значений diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" index aba0f8118..78d40fc42 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" @@ -26,27 +26,12 @@ // Параметры: // Имя - Строка - Имя набора тестов // ТегиСтрокой - Строка - Теги относящиеся к набору и вложенным тестам. Это строка разделенная запятыми -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция ДобавитьТестовыйНабор(Имя, ТегиСтрокой = "") Экспорт - ИсполняемыеСценарии = СценарииМодуля(); - - Если Не ЭтоИсполняемыеСценарии(ИсполняемыеСценарии) Тогда - ВызватьИсключение "Первый параметр должен быть результатом метода ЮТТесты.ИсполняемыеСценарии"; - КонецЕсли; - - Если ПустаяСтрока(Имя) Тогда - ВызватьИсключение "Имя тестового набора не может быть пустым"; - КонецЕсли; - - Контекст = Контекст(); - НовыйТестовыйНабор = ЮТФабрика.ОписаниеТестовогоНабора(Имя, ТегиСтрокой); - - ИсполняемыеСценарии.ТестовыеНаборы.Добавить(НовыйТестовыйНабор); - Контекст.ТекущийНабор = НовыйТестовыйНабор; - Контекст.ТекущийЭлемент = НовыйТестовыйНабор; + ЮТТестыСлужебный.ДобавитьТестовыйНабор(Имя, ТегиСтрокой); Возврат ЮТТесты; @@ -54,11 +39,11 @@ // Регистрирует тест, исполняемый в контекстах, в которых доступен тестовый модуль. // Например -// +// // * Если модуль с тестами клиент-серверный, то тест будет вызван и на клиенте и на сервере. // * Если клиентский, то только на клиенте. // * Если клиент обычное приложение, то только при запуске в режиме обычного приложения. -// +// // Параметры: // ИмяТестовогоМетода - Строка - Имя тестового метода // ПредставлениеТеста - Строка - Представление теста @@ -66,97 +51,76 @@ // Контексты - Строка - Контексты, строка перечисления контекстов вызова, разделенных запятой. // Возможные значения см. ЮТФабрика.КонтекстыВызова // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "", Контексты = Неопределено) Экспорт - Контекст = Контекст(); - Набор = Контекст.ТекущийНабор; - - ЭтоИсполняемыеСценарии = ЭтоИсполняемыеСценарии(Набор); - ЭтоТестовыйНабор = ЭтоТестовыйНабор(Набор); - - Если Не (ЭтоИсполняемыеСценарии Или ЭтоТестовыйНабор) Тогда - ВызватьИсключение "Первый параметр должен быть результатом метода ЮТТесты.ИсполняемыеСценарии или ЮТТесты.ТестовыйНабор"; - КонецЕсли; - - Если ПустаяСтрока(ИмяТестовогоМетода) Тогда - ВызватьИсключение "Имя тестового метода не может быть пустым"; - КонецЕсли; - - Тест = ОписаниеТеста(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты); - ДобавитьТестВНабор(Контекст, Тест); + ЮТТестыСлужебный.ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты); Возврат ЮТТесты; КонецФункции // Регистрирует тест исполняемый на клиенте. -// +// // Параметры: // ИмяТестовогоМетода - Строка - Имя тестового метода // ПредставлениеТеста - Строка - Представление теста // ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция ДобавитьКлиентскийТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт - ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, КонтекстыВызоваКлиента()); + ЮТТестыСлужебный.ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, ЮТТестыСлужебный.КонтекстыВызоваКлиента()); + Возврат ЮТТесты; КонецФункции // Регистрирует тест исполняемый на сервере. -// +// // Параметры: // ИмяТестовогоМетода - Строка - Имя тестового метода // ПредставлениеТеста - Строка - Представление теста // ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция ДобавитьСерверныйТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт - Режимы = ЮТФабрика.КонтекстыВызова(); - - ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Режимы.Сервер); + КонтекстыВызова = ЮТФабрика.КонтекстыВызова(); + ЮТТестыСлужебный.ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, КонтекстыВызова.Сервер); Возврат ЮТТесты; КонецФункции // Устанавливает настройку выполнения тестового метода. -// +// // Параметры: // ИмяПараметра - Строка -// Значение - Произвольный - Значение настройки -// +// Значение - Произвольный - Значение настройки +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция НастройкаИсполнения(ИмяПараметра, Значение) Экспорт - Контекст = Контекст(); - - Если Контекст.ТекущийЭлемент = Неопределено Тогда - ВызватьИсключение "Не инициализированы настройки регистрации тестов"; - КонецЕсли; - - Контекст.ТекущийЭлемент.НастройкиВыполнения.Вставить(ИмяПараметра, Значение); + ЮТТестыСлужебный.НастройкаИсполнения(ИмяПараметра, Значение); Возврат ЮТТесты; КонецФункции // Устанавливает настройку выполнения тестового метода в транзакции. -// +// // Параметры: // ВыполнятьВТранзакции - Булево -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция ВТранзакции(ВыполнятьВТранзакции = Истина) Экспорт - НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции, ВыполнятьВТранзакции); + ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции, ВыполнятьВТранзакции); Возврат ЮТТесты; @@ -164,60 +128,60 @@ // Устанавливает настройку удаления созданных тестовых данных // В отличии от использования транзакции: -// +// // * Умеет работать с данными созданными на клиенте // * Только удаляет созданные данные и не откатывает изменения объектов // * Работает с данными созданными через API работы с тестовыми данными // * Удаляет данные созданные вне теста (в обработчиках событий, например, ПередВсемиТестами и ПередТестовымНабором) -// +// // Параметры: // УдалятьСозданныеДанные - Булево -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция УдалениеТестовыхДанных(УдалятьСозданныеДанные = Истина) Экспорт - НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().УдалениеТестовыхДанных, УдалятьСозданныеДанные); + ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().УдалениеТестовыхДанных, УдалятьСозданныеДанные); Возврат ЮТТесты; КонецФункции // Устанавливает настройку переопределения обработчика события Перед... -// +// // Параметры: // ВыполнитьПеред - Строка - Имя обработчика события, который будет выполнен вместо основного -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция Перед(ВыполнитьПеред = "") Экспорт - НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().Перед, ВыполнитьПеред); + ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().Перед, ВыполнитьПеред); Возврат ЮТТесты; КонецФункции // Устанавливает настройку переопределения обработчика события После... -// +// // Параметры: // ВыполнитьПосле - Строка - Имя обработчика события, который будет выполнен вместо основного -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания +// ОбщийМодуль - Этот же модуль Функция После(ВыполнитьПосле = "") Экспорт - НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().После, ВыполнитьПосле); + ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().После, ВыполнитьПосле); Возврат ЮТТесты; КонецФункции // Устанавливает параметры вызова теста. -// +// // * Если метод вызывается первый раз, то он устанавливает параметры теста. // * Если второй и последующие, то добавляет новый тест с параметрами. -// +// // Параметры: // Параметр1 - Произвольный // Параметр2 - Произвольный @@ -229,30 +193,30 @@ // Параметр8 - Произвольный // Параметр9 - Произвольный // Параметр10 - Произвольный -// +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания -// +// ОбщийМодуль - Этот же модуль +// // Примеры: -// +// // ЮТТесты.ДобавитьТест("Тест1").СПараметрами(1, 2); // Будет зарегистрирован один тест с параметрами 1, 2 // ЮТТесты.ДобавитьТест("Тест1") // .СПараметрами(1) // .СПараметрами(2); // Будет зарегистрировано два теста, первый с параметром 1 и второй с параметром 2 -// +// //@skip-check method-too-many-params Функция СПараметрами(Параметр1 = "_!%*", - Параметр2 = "_!%*", - Параметр3 = "_!%*", - Параметр4 = "_!%*", - Параметр5 = "_!%*", - Параметр6 = "_!%*", - Параметр7 = "_!%*", - Параметр8 = "_!%*", - Параметр9 = "_!%*", - Параметр10 = "_!%*") Экспорт - - Параметры = ЮТОбщий.ЗначениеВМассиве(Параметр1, + Параметр2 = "_!%*", + Параметр3 = "_!%*", + Параметр4 = "_!%*", + Параметр5 = "_!%*", + Параметр6 = "_!%*", + Параметр7 = "_!%*", + Параметр8 = "_!%*", + Параметр9 = "_!%*", + Параметр10 = "_!%*") Экспорт + + Параметры = ЮТКоллекции.ЗначениеВМассиве(Параметр1, Параметр2, Параметр3, Параметр4, @@ -263,231 +227,127 @@ Параметр9, Параметр10); - Контекст = Контекст(); - - Если Контекст.ТекущийЭлемент = Неопределено Тогда - ВызватьИсключение "Не инициализированы настройки регистрации тестов"; - ИначеЕсли НЕ ЭтоОписаниеТеста(Контекст.ТекущийЭлемент) Тогда - ВызватьИсключение "Параметры устанавливаются только для теста"; - КонецЕсли; - - Если Контекст.ТекущийЭлемент.Параметры <> Неопределено Тогда - НоваяНастройка = ЮТОбщий.СкопироватьСтруктуру(Контекст.ТекущийЭлемент); - ДобавитьТестВНабор(Контекст, НоваяНастройка); - КонецЕсли; - - Контекст.ТекущийЭлемент.Параметры = Параметры; + ЮТТестыСлужебный.СПараметрами(Параметры, Неопределено); Возврат ЮТТесты; КонецФункции -#Область Устаревшие - -// Регистрирует тест. -// Deprecate -// -// Параметры: -// ИмяТестовогоМетода - Строка - Имя тестового метода -// ПредставлениеТеста - Строка - Представление теста -// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми -// Контексты - Строка - Контексты, строка перечисления контекстов вызова, разделенных запятой. -// Возможные значения см. ЮТФабрика.КонтекстыВызова -// Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания -Функция Тест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "", Контексты = Неопределено) Экспорт - - ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.Тест", "ЮТТесты.ДобавитьТест"); - Возврат ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты); - -КонецФункции - -// Регистрирует тест вызываемый на клиенте. -// Deprecate -// +// Устанавливает параметры вызова теста и новый контекст исполнения (клиентский). +// +// * Если метод вызывается первый раз, то он устанавливает параметры теста. +// * Если второй и последующие, то добавляет новый тест с параметрами. +// // Параметры: -// ИмяТестовогоМетода - Строка - Имя тестового метода -// ПредставлениеТеста - Строка - Представление теста -// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми -// +// Параметр1 - Произвольный +// Параметр2 - Произвольный +// Параметр3 - Произвольный +// Параметр4 - Произвольный +// Параметр5 - Произвольный +// Параметр6 - Произвольный +// Параметр7 - Произвольный +// Параметр8 - Произвольный +// Параметр9 - Произвольный +// Параметр10 - Произвольный +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания -Функция ТестКлиент(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт - - ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.ТестКлиент", "ЮТТесты.ДобавитьКлиентскийТест"); - Возврат ДобавитьКлиентскийТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой); +// ОбщийМодуль - Этот же модуль +// +//@skip-check method-too-many-params +Функция СПараметрамиНаКлиенте(Параметр1 = "_!%*", + Параметр2 = "_!%*", + Параметр3 = "_!%*", + Параметр4 = "_!%*", + Параметр5 = "_!%*", + Параметр6 = "_!%*", + Параметр7 = "_!%*", + Параметр8 = "_!%*", + Параметр9 = "_!%*", + Параметр10 = "_!%*") Экспорт + + Параметры = ЮТКоллекции.ЗначениеВМассиве(Параметр1, + Параметр2, + Параметр3, + Параметр4, + Параметр5, + Параметр6, + Параметр7, + Параметр8, + Параметр9, + Параметр10); -КонецФункции - -// Регистрирует тест вызываемый на сервере. -// Deprecate -// -// Параметры: -// ИмяТестовогоМетода - Строка - Имя тестового метода -// ПредставлениеТеста - Строка - Представление теста -// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми -// -// Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания -Функция ТестСервер(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт + ЮТТестыСлужебный.СПараметрами(Параметры, ЮТТестыСлужебный.КонтекстыВызоваКлиента()); - ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.ТестСервер", "ЮТТесты.ДобавитьСерверныйТест"); - Возврат ДобавитьСерверныйТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой); + Возврат ЮТТесты; КонецФункции -// Создает и регистрирует набор, в который будут добавляться последующие тесты. -// Deprecate +// Устанавливает параметры вызова теста и новый контекст исполнения (серверный). // +// * Если метод вызывается первый раз, то он устанавливает параметры теста. +// * Если второй и последующие, то добавляет новый тест с параметрами. +// // Параметры: -// Имя - Строка - Имя набора тестов -// ТегиСтрокой - Строка - Теги относящиеся к набору и вложенным тестам. Это строка разделенная запятыми -// +// Параметр1 - Произвольный +// Параметр2 - Произвольный +// Параметр3 - Произвольный +// Параметр4 - Произвольный +// Параметр5 - Произвольный +// Параметр6 - Произвольный +// Параметр7 - Произвольный +// Параметр8 - Произвольный +// Параметр9 - Произвольный +// Параметр10 - Произвольный +// // Возвращаемое значение: -// ОбщийМодуль - Этот же модуль, для замыкания -Функция ТестовыйНабор(Имя, ТегиСтрокой = "") Экспорт - - ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.ТестовыйНабор", "ЮТТесты.ДобавитьТестовыйНабор"); - Возврат ДобавитьТестовыйНабор(Имя, ТегиСтрокой); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт - - ИнициализироватьКонтекст(МетаданныеМодуля); - - ЮТСобытия.ПередЧтениемСценариевМодуля(МетаданныеМодуля); - -КонецПроцедуры - -Процедура ПослеЧтенияСценариевМодуля() Экспорт - - Контекст = Контекст(); - ЮТСобытия.ПослеЧтенияСценариевМодуля(Контекст.МетаданныеМодуля, Контекст.ИсполняемыеСценарии); +// ОбщийМодуль - Этот же модуль +// +//@skip-check method-too-many-params +Функция СПараметрамиНаСервере(Параметр1 = "_!%*", + Параметр2 = "_!%*", + Параметр3 = "_!%*", + Параметр4 = "_!%*", + Параметр5 = "_!%*", + Параметр6 = "_!%*", + Параметр7 = "_!%*", + Параметр8 = "_!%*", + Параметр9 = "_!%*", + Параметр10 = "_!%*") Экспорт + + Параметры = ЮТКоллекции.ЗначениеВМассиве(Параметр1, + Параметр2, + Параметр3, + Параметр4, + Параметр5, + Параметр6, + Параметр7, + Параметр8, + Параметр9, + Параметр10); -КонецПроцедуры - -// Описание сценариев модуля -// -// Возвращаемое значение: -// Структура - см. ИсполняемыеСценарии -Функция СценарииМодуля() Экспорт + КонтекстыВызова = ЮТФабрика.КонтекстыВызова(); + ЮТТестыСлужебный.СПараметрами(Параметры, КонтекстыВызова.Сервер); - Возврат Контекст().ИсполняемыеСценарии; + Возврат ЮТТесты; КонецФункции -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -// Исполняемые сценарии. +// Устанавливает представление объекта, может использоваться как для теста, так и для набора. // // Параметры: -// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля +// Представление - Строка +// ИспользуяИмя - Булево - Необходимо ли использовать имя объекта при формировании представления. +// Ложь - По умолчанию, представление будет установлено по параметру. +// Истина - Новое представление объекта = `<ИмяОбъект>. <Параметр Представление>` // // Возвращаемое значение: -// Структура - Исполняемые сценарии: -// * ТестовыеНаборы - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора - Тестовые наборы модуля -// * НастройкиВыполнения- Структура - Настройки исполнения теста -Функция ИсполняемыеСценарии(МетаданныеМодуля) - - Структура = Новый Структура; - Структура.Вставить("ТестовыеНаборы", Новый Массив()); - Структура.Вставить("НастройкиВыполнения", Новый Структура()); - - Набор = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя); - Набор.НастройкиВыполнения = Структура.НастройкиВыполнения; // Общие настройки с набором по умолчанию - Структура.ТестовыеНаборы.Добавить(Набор); - - Возврат Структура; - -КонецФункции - -Функция КонтекстыВызоваКлиента() +// ОбщийМодуль - Этот же модуль +Функция Представление(Представление, ИспользуяИмя = Ложь) Экспорт - Режимы = ЮТФабрика.КонтекстыВызова(); - Возврат ЮТОбщий.ЗначениеВМассиве(Режимы.КлиентУправляемоеПриложение, Режимы.КлиентОбычноеПриложение); + ЮТТестыСлужебный.УстановитьПредставление(Представление, ИспользуяИмя); -КонецФункции - -Функция КонтекстыВызоваПоУмолчанию() - - Возврат ЮТФабрика.КонтекстыМодуля(Контекст().МетаданныеМодуля); - -КонецФункции - -Функция ОписаниеТеста(Имя, Знач Представление, ТегиСтрокой, Знач Контексты) - - Если НЕ ЗначениеЗаполнено(Контексты) Тогда - Контексты = КонтекстыВызоваПоУмолчанию(); - ИначеЕсли ТипЗнч(Контексты) = Тип("Строка") Тогда - Контексты = СтрРазделить(Контексты, ", ", Ложь); - КонецЕсли; - - Возврат ЮТФабрика.ОписаниеТеста(Имя, Представление, Контексты, ТегиСтрокой); - -КонецФункции - -Функция ЭтоИсполняемыеСценарии(ИсполняемыеСценарии) - - Возврат ТипЗнч(ИсполняемыеСценарии) = Тип("Структура") - И ТипЗнч(ЮТОбщий.ЗначениеСтруктуры(ИсполняемыеСценарии, "ТестовыеНаборы")) = Тип("Массив"); - -КонецФункции - -Функция ЭтоТестовыйНабор(ТестовыйНабор) - - Возврат ТипЗнч(ТестовыйНабор) = Тип("Структура") - И ТипЗнч(ЮТОбщий.ЗначениеСтруктуры(ТестовыйНабор, "Тесты")) = Тип("Массив"); - -КонецФункции - -Функция ЭтоОписаниеТеста(Описание) - - Возврат ТипЗнч(Описание) = Тип("Структура") - И ТипЗнч(ЮТОбщий.ЗначениеСтруктуры(Описание, "КонтекстВызова")) = Тип("Массив"); - -КонецФункции - -Процедура ДобавитьТестВНабор(Контекст, Тест) - - Контекст.ТекущийНабор.Тесты.Добавить(Тест); - Контекст.ТекущийЭлемент = Тест; - Тест.НомерВНаборе = Контекст.ТекущийНабор.Тесты.Количество(); - -КонецПроцедуры - -#Область Контекст - -Функция Контекст() - - Возврат ЮТКонтекст.ЗначениеКонтекста("КонтекстРегистрацияТестов"); + Возврат ЮТТесты; КонецФункции -Процедура ИнициализироватьКонтекст(МетаданныеМодуля) - - ИсполняемыеСценарии = ИсполняемыеСценарии(МетаданныеМодуля); - Набор = ИсполняемыеСценарии.ТестовыеНаборы[0]; - - Контекст = Новый Структура(); - - Контекст.Вставить("МетаданныеМодуля", МетаданныеМодуля); - Контекст.Вставить("ИсполняемыеСценарии", ИсполняемыеСценарии); - Контекст.Вставить("ТекущийНабор", Набор); - Контекст.Вставить("ТекущийЭлемент", Набор); - - ЮТКонтекст.УстановитьЗначениеКонтекста("КонтекстРегистрацияТестов", Контекст); - -КонецПроцедуры - -#КонецОбласти - #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 000000000..7a2b857a8 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,287 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ДобавитьТестовыйНабор(Имя, ТегиСтрокой) Экспорт + + ИсполняемыеСценарии = СценарииМодуля(); + + Если НЕ ЭтоИсполняемыеСценарии(ИсполняемыеСценарии) Тогда + ВызватьИсключение "Первый параметр должен быть результатом метода ЮТТесты.ИсполняемыеСценарии"; + КонецЕсли; + + Если ПустаяСтрока(Имя) Тогда + ВызватьИсключение "Имя тестового набора не может быть пустым"; + КонецЕсли; + + Контекст = Контекст(); + НовыйТестовыйНабор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(Имя, ТегиСтрокой); + + ИсполняемыеСценарии.ТестовыеНаборы.Добавить(НовыйТестовыйНабор); + Контекст.ТекущийНабор = НовыйТестовыйНабор; + Контекст.ТекущийЭлемент = НовыйТестовыйНабор; + +КонецПроцедуры + +Процедура ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты) Экспорт + + Контекст = Контекст(); + Набор = Контекст.ТекущийНабор; + + ЭтоИсполняемыеСценарии = ЭтоИсполняемыеСценарии(Набор); + ЭтоТестовыйНабор = ЭтоТестовыйНабор(Набор); + + Если НЕ (ЭтоИсполняемыеСценарии ИЛИ ЭтоТестовыйНабор) Тогда + ВызватьИсключение "Первый параметр должен быть результатом метода ЮТТесты.ИсполняемыеСценарии или ЮТТесты.ТестовыйНабор"; + КонецЕсли; + + Если ПустаяСтрока(ИмяТестовогоМетода) Тогда + ВызватьИсключение "Имя тестового метода не может быть пустым"; + КонецЕсли; + + Тест = ОписаниеТеста(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты); + ДобавитьТестВНабор(Контекст, Тест, Ложь); + +КонецПроцедуры + +Процедура ДобавитьКлиентскийТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой) Экспорт + + ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, КонтекстыВызоваКлиента()); + +КонецПроцедуры + +Процедура ДобавитьСерверныйТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой) Экспорт + + Режимы = ЮТФабрика.КонтекстыВызова(); + + ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Режимы.Сервер); + +КонецПроцедуры + +Процедура НастройкаИсполнения(ИмяПараметра, Значение) Экспорт + + Контекст = Контекст(); + + Если Контекст.ТекущийЭлемент = Неопределено Тогда + ВызватьИсключение "Не инициализированы настройки регистрации тестов"; + КонецЕсли; + + Контекст.ТекущийЭлемент.НастройкиВыполнения.Вставить(ИмяПараметра, Значение); + +КонецПроцедуры + +Процедура СПараметрами(Параметры, Знач НовыеКонтексты) Экспорт + + Контекст = Контекст(); + + Если Контекст.ТекущийЭлемент = Неопределено Тогда + ВызватьИсключение "Не инициализированы настройки регистрации тестов"; + ИначеЕсли НЕ ЭтоОписаниеТеста(Контекст.ТекущийЭлемент) Тогда + ВызватьИсключение "Параметры устанавливаются только для теста"; + КонецЕсли; + + ЭтоПервыйВызовСПараметрами = Контекст.ТекущийЭлемент.Параметры = Неопределено; + УстановитьНовыйКонтекст = ЗначениеЗаполнено(НовыеКонтексты); + + Если ЭтоПервыйВызовСПараметрами Тогда + Контекст.БазовыйТест = ЮТКоллекции.СкопироватьСтруктуру(Контекст.ТекущийЭлемент); + КонецЕсли; + + Если УстановитьНовыйКонтекст Тогда + НормализованныеКонтексты = НормализованныеКонтексты(НовыеКонтексты); + НовыеКонтексты = ЮТКоллекции.ПересечениеМассивов(Контекст.БазовыйТест.КонтекстВызова, НормализованныеКонтексты); + + Если НЕ ЗначениеЗаполнено(НовыеКонтексты) Тогда + ВызватьИсключение СтрШаблон("Не пересекаются контексты базового теста %1 и устанавливаемые %2", + ЮТКоллекции.ПредставлениеМассива(Контекст.БазовыйТест.КонтекстВызова), + ЮТКоллекции.ПредставлениеМассива(НормализованныеКонтексты)); + КонецЕсли; + КонецЕсли; + + Если НЕ ЭтоПервыйВызовСПараметрами Тогда + НоваяНастройка = ЮТКоллекции.СкопироватьСтруктуру(Контекст.БазовыйТест); + ДобавитьТестВНабор(Контекст, НоваяНастройка, Истина); + КонецЕсли; + + Контекст.ТекущийЭлемент.Параметры = Параметры; + + Если УстановитьНовыйКонтекст Тогда + Контекст.ТекущийЭлемент.КонтекстВызова = НовыеКонтексты; + КонецЕсли; + +КонецПроцедуры + +Процедура УстановитьПредставление(Представление, ИспользуяИмя) Экспорт + + ТекущийЭлемент = Контекст().ТекущийЭлемент; + Если ИспользуяИмя Тогда + ТекущийЭлемент.Представление = СтрШаблон("%1. %2", ТекущийЭлемент.Имя, Представление); + Иначе + ТекущийЭлемент.Представление = Представление; + КонецЕсли; + +КонецПроцедуры + +Функция КонтекстыВызоваКлиента() Экспорт + + Режимы = ЮТФабрика.КонтекстыВызова(); + Возврат ЮТКоллекции.ЗначениеВМассиве(Режимы.КлиентУправляемоеПриложение, Режимы.КлиентОбычноеПриложение); + +КонецФункции + +// Описание сценариев модуля +// +// Возвращаемое значение: +// Структура - см. ИсполняемыеСценарии +Функция СценарииМодуля() Экспорт + + Возврат Контекст().ИсполняемыеСценарии; + +КонецФункции + +Функция Контекст() Экспорт + + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста("КонтекстРегистрацияТестов"); + +КонецФункции + +#Область ОбработчикиСобытий + +Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт + + ИнициализироватьКонтекст(МетаданныеМодуля); + ЮТСобытияСлужебный.ПередЧтениемСценариевМодуля(МетаданныеМодуля); + +КонецПроцедуры + +Процедура ПослеЧтенияСценариевМодуля() Экспорт + + Контекст = Контекст(); + ЮТСобытияСлужебный.ПослеЧтенияСценариевМодуля(Контекст.МетаданныеМодуля, Контекст.ИсполняемыеСценарии); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Исполняемые сценарии. +// +// Параметры: +// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// +// Возвращаемое значение: +// Структура - Исполняемые сценарии: +// * ТестовыеНаборы - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора - Тестовые наборы модуля +// * НастройкиВыполнения- Структура - Настройки исполнения теста +Функция ИсполняемыеСценарии(МетаданныеМодуля) + + Структура = Новый Структура; + Структура.Вставить("ТестовыеНаборы", Новый Массив()); + Структура.Вставить("НастройкиВыполнения", Новый Структура()); + + Набор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя); + Набор.НастройкиВыполнения = Структура.НастройкиВыполнения; // Общие настройки с набором по умолчанию + Структура.ТестовыеНаборы.Добавить(Набор); + + Возврат Структура; + +КонецФункции + +Функция КонтекстыВызоваПоУмолчанию() + + Возврат ЮТФабрикаСлужебный.КонтекстыМодуля(Контекст().МетаданныеМодуля); + +КонецФункции + +Функция ОписаниеТеста(Имя, Знач Представление, ТегиСтрокой, Знач Контексты) + + Контексты = НормализованныеКонтексты(Контексты); + + Возврат ЮТФабрикаСлужебный.ОписаниеТеста(Имя, Представление, Контексты, ТегиСтрокой); + +КонецФункции + +Функция ЭтоИсполняемыеСценарии(ИсполняемыеСценарии) + + Возврат ТипЗнч(ИсполняемыеСценарии) = Тип("Структура") + И ТипЗнч(ЮТКоллекции.ЗначениеСтруктуры(ИсполняемыеСценарии, "ТестовыеНаборы")) = Тип("Массив"); + +КонецФункции + +Функция ЭтоТестовыйНабор(ТестовыйНабор) + + Возврат ТипЗнч(ТестовыйНабор) = Тип("Структура") + И ТипЗнч(ЮТКоллекции.ЗначениеСтруктуры(ТестовыйНабор, "Тесты")) = Тип("Массив"); + +КонецФункции + +Функция ЭтоОписаниеТеста(Описание) + + Возврат ТипЗнч(Описание) = Тип("Структура") + И ТипЗнч(ЮТКоллекции.ЗначениеСтруктуры(Описание, "КонтекстВызова")) = Тип("Массив"); + +КонецФункции + +Процедура ДобавитьТестВНабор(Контекст, Тест, ЭтоКопия) + + Если НЕ ЭтоКопия Тогда + Контекст.БазовыйТест = Неопределено; + КонецЕсли; + + Контекст.ТекущийНабор.Тесты.Добавить(Тест); + Контекст.ТекущийЭлемент = Тест; + Тест.НомерВНаборе = Контекст.ТекущийНабор.Тесты.Количество(); + +КонецПроцедуры + +Процедура ИнициализироватьКонтекст(МетаданныеМодуля) + + ИсполняемыеСценарии = ИсполняемыеСценарии(МетаданныеМодуля); + Набор = ИсполняемыеСценарии.ТестовыеНаборы[0]; + + Контекст = Новый Структура(); + + Контекст.Вставить("МетаданныеМодуля", МетаданныеМодуля); + Контекст.Вставить("ИсполняемыеСценарии", ИсполняемыеСценарии); + Контекст.Вставить("ТекущийНабор", Набор); + Контекст.Вставить("ТекущийЭлемент", Набор); + Контекст.Вставить("БазовыйТест", Неопределено); + + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста("КонтекстРегистрацияТестов", Контекст); + +КонецПроцедуры + +Функция НормализованныеКонтексты(ПараметрКонтексты) + + Если НЕ ЗначениеЗаполнено(ПараметрКонтексты) Тогда + Контексты = КонтекстыВызоваПоУмолчанию(); + ИначеЕсли ТипЗнч(ПараметрКонтексты) = Тип("Строка") Тогда + Контексты = СтрРазделить(ПараметрКонтексты, ", ", Ложь); + Иначе + Контексты = ПараметрКонтексты; + КонецЕсли; + + Возврат Контексты; + +КонецФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 000000000..81b67ec05 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ЮТТестыСлужебный + + ru + Тесты служебный + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 778f193b7..ed011211c 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ Функция ПредставлениеТипа(Тип) Экспорт #Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа"); + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа"); #Иначе Возврат ИдентификаторТипа(Тип); #КонецЕсли @@ -31,7 +31,7 @@ Функция ИдентификаторТипа(Тип) Экспорт #Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа"); + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа"); #Иначе ЮТПроверкиСлужебный.ПроверитьТипПараметра(Тип, Тип("Тип"), "ЮТТипыДанныхСлужебный.ИдентификаторТипа", "Тип"); @@ -53,7 +53,7 @@ Функция ТипПоИдентификатору(ИдентификаторТипа) Экспорт #Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа"); + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа"); #Иначе Возврат Тип(ИдентификаторТипа); #КонецЕсли @@ -62,7 +62,7 @@ Функция ЭтоСсылочныйТип(Тип) Экспорт - Возврат Тип <> Неопределено И ЮТОбщий.ОписаниеТиповЛюбаяСсылка().СодержитТип(Тип); + Возврат Тип <> Неопределено И ОписаниеТиповЛюбаяСсылка().СодержитТип(Тип); КонецФункции @@ -104,7 +104,7 @@ Функция ТипОбъектаСсылки(ТипСсылки) Экспорт #Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипОбъектаСсылки"); + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипОбъектаСсылки"); #Иначе ТипXML = СериализаторXDTO.XMLТип(ТипСсылки); ИмяТипа = СтрЗаменить(ТипXML.ИмяТипа, "Ref.", "Object."); @@ -114,6 +114,19 @@ КонецФункции +Функция ЭтоТипПеречисления(ТипЗначения) Экспорт + + ПредставлениеТипа = ПредставлениеТипа(ТипЗначения); + Возврат СтрНачинаетсяС(ПредставлениеТипа, "EnumRef."); + +КонецФункции + +Функция ОписаниеТиповЛюбаяСсылка() Экспорт + + Возврат ЮТСлужебныйПовторногоИспользования.ОписаниеТиповЛюбаяСсылка(); + +КонецФункции + #Область СистемныеПеречисления Функция ЭтоСистемноеПеречисление(Тип) Экспорт @@ -163,7 +176,7 @@ Функция ЭтоПримитивныйТип(Тип) Экспорт - ПримитивныеТипы = ЮТПовторногоИспользования.ПримитивныеТипы(); + ПримитивныеТипы = ЮТСлужебныйПовторногоИспользования.ПримитивныеТипы(); ТипПараметра = ТипЗнч(Тип); @@ -185,4 +198,34 @@ #КонецОбласти +Функция ЭтоСтруктура(ТипЗначения) Экспорт + + Возврат ТипЗначения = Тип("Структура") + Или ТипЗначения = Тип("ФиксированнаяСтруктура"); + +КонецФункции + +Функция ЭтоМассива(ТипЗначения) Экспорт + + Возврат ТипЗначения = Тип("Массив") + Или ТипЗначения = Тип("ФиксированныйМассив"); + +КонецФункции + +Функция ЭтоСоответствие(ТипЗначения) Экспорт + + Возврат ТипЗначения = Тип("Соответствие") + Или ТипЗначения = Тип("ФиксированноеСоответствие"); + +КонецФункции + +Функция ЭтоКлючЗначение(ТипЗначения) Экспорт + + Возврат ТипЗначения = Тип("Структура") + Или ТипЗначения = Тип("ФиксированнаяСтруктура") + Или ТипЗначения = Тип("Соответствие") + Или ТипЗначения = Тип("ФиксированноеСоответствие"); + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" index a0e7348a8..7b95cb6ab 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,20 +18,18 @@ #Область ПрограммныйИнтерфейс -#Область УтвержденияBDD - // Инициализирует модуль для проверки утверждений. -// +// // * Запоминает проверяемое значение. // * Запоминает описание. // * Сбрасывает настройки предыдущих утверждений. -// +// // Утверждения формируются методами этого модуля. -// +// // Параметры: // ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение // Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания // Примеры @@ -44,19 +42,19 @@ Контекст.ОбъектПроверки.Значение = ПроверяемоеЗначение; Контекст.ПрефиксОшибки = Сообщение; - ЮТКонтекст.УстановитьКонтекстУтверждений(Контекст); - ЮТКонтекст.УстановитьКонтекстОшибки(); + СброситьКонтекст(); + ЮТКонтекстСлужебный.УстановитьКонтекстУтверждений(Контекст); Возврат ЮТУтверждения; КонецФункции // Запоминает описание метода (имя и параметры) для последующей проверки. -// +// // Параметры: // ИмяМетода - Строка - Наименование метода // ПараметрыМетода - Массив из Произвольный - Параметры вызываемого метода -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция Метод(Знач ИмяМетода, Знач ПараметрыМетода = Неопределено) Экспорт @@ -75,10 +73,10 @@ КонецФункции // Добавляет параметр метода для последующего вызова метода и проверки. -// +// // Параметры: // ЗначениеПараметра - Произвольный - Параметр вызываемого метода -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция Параметр(Знач ЗначениеПараметра) Экспорт @@ -86,11 +84,11 @@ Контекст = Контекст(); Если НЕ ЗначениеЗаполнено(Контекст.ИмяМетода) Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения("Перед установкой параметров нужно указать метод", Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения("Перед установкой параметров нужно указать метод", Контекст); КонецЕсли; Если Контекст.ПараметрыМетода = Неопределено Тогда - Контекст.ПараметрыМетода = ЮТОбщий.ЗначениеВМассиве(ЗначениеПараметра); + Контекст.ПараметрыМетода = ЮТКоллекции.ЗначениеВМассиве(ЗначениеПараметра); Иначе Контекст.ПараметрыМетода.Добавить(ЗначениеПараметра); КонецЕсли; @@ -100,10 +98,10 @@ КонецФункции // Устанавливает описание проверяемого объекта. -// +// // Параметры: // Представление - Строка - Представление -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ИмеющееПредставление(Представление) Экспорт @@ -114,15 +112,15 @@ КонецФункции // Проверяет наличие свойства и запоминает его для последующих проверок. -// +// // Важно, следующие проверки будут относится к этому свойству. // Для переключения на проверки объекта можно воспользоваться методом см. Объект. -// +// // Параметры: // ИмяСвойства - Строка - Наименование свойства объекта. // Возможно обращение к вложенным свойствам через точку // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция Свойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт @@ -141,13 +139,13 @@ КонецФункции // Проверяет отсутствие свойства основного объекта. -// А также сбрасывает ранее установленное проверяемое свойство (см. Свойство). -// +// А также сбрасывает ранее установленное проверяемое свойство (см. Свойство). +// // Параметры: // ИмяСвойства - Строка - Наименование свойства объекта. // Возможно обращение к вложенным свойствам через точку // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция НетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт @@ -165,14 +163,14 @@ КонецФункции // Проверяет наличие элемента с указанным индексом и позиционируется на нем для последующих проверок. -// +// // Важно, следующие проверки будут относится к этому элементу. // Для переключения на проверки объекта можно воспользоваться методом см. Объект. -// +// // Параметры: // Индекс - Число - Индекс элемента коллекции // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция Элемент(Знач Индекс, Знач ОписаниеПроверки = Неопределено) Экспорт @@ -182,7 +180,7 @@ КонецФункции // Используется после вызова метода см. Свойство, для переключения с ранее указанного свойства на объект. -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция Объект() Экспорт @@ -194,481 +192,501 @@ КонецФункции -// Проверяет наличие свойства у объекта/его свойства. -// В отличии от метода см. Свойство не позиционируется на указанное свойство. +#Область УтвержденияПредикатов + +// Проверяет установленное значение Контекста (или его свойство) на равенство ожидаемому. +// +// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. +// Для сериализуемых объектов проверяется равенство по значению. +// // Параметры: -// ИмяСвойства - Строка - Наименование свойства объекта. -// Возможно обращение к вложенным свойствам через точку +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) равно этому значению // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ИмеетСвойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция Равно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().ИмеетСвойство, ИмяСвойства, ОписаниеПроверки); + ПараметрыСравнения = Новый Структура("ГлубокийАнализ", Истина); + ПроверитьПредикат(ЮТПредикаты.Выражения().Равно, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения); Возврат ЮТУтверждения; КонецФункции -// Проверяет отсутствие свойства у объекта/его свойства. -// В отличии от метода см. НетСвойства не сбрасывает позиционирование проверки. -// +// Проверяет установленное значение Контекста (или его свойство) на НЕ равенство ожидаемому. +// +// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения +// Для сериализуемых значений проверяется равенство по значению +// // Параметры: -// ИмяСвойства - Строка - Наименование свойства объекта. -// Возможно обращение к вложенным свойствам через точку +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) НЕ равно этому значению // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция НеИмеетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция НеРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетСвойство, ИмяСвойства, ОписаниеПроверки); + ПараметрыСравнения = Новый Структура("ГлубокийАнализ", Истина); + ПроверитьПредикат(ЮТПредикаты.Выражения().НеРавно, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения); Возврат ЮТУтверждения; КонецФункции -// Проверяет наличие свойств и их значения у проверяемого объекта (или его свойства). -// +// Проверяет установленное значение Контекста (или его свойство), оно должно быть больше ожидаемого. +// // Параметры: -// ОжидаемоеЗначение - Структура - Проверяемый объект должен иметь свойства указанные в параметре +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) Больше этого значения // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ИмеетСвойстваРавные(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция Больше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - Контекст = Контекст(); - УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); - ОбъектыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение); + ПроверитьПредикат(ЮТПредикаты.Выражения().Больше, ОжидаемоеЗначение, ОписаниеПроверки); + Возврат ЮТУтверждения; + +КонецФункции + +// Проверяет установленное значение Контекста (или его свойство), оно должно быть больше или равно ожидаемому. +// +// Параметры: +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) Больше этого значения или равно ему +// ОписаниеПроверки - Строка - Описание конкретной проверки +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция БольшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт + ПроверитьПредикат(ЮТПредикаты.Выражения().БольшеРавно, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на равенство `Истина)`. -// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. -// +// Проверяет установленное значение Контекста (или его свойство), оно должно быть меньше ожидаемого. +// // Параметры: +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) меньше этого значения // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоИстина(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция Меньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - Контекст = Контекст(); - УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Истина, Ложь, "является истиной"); + ПроверитьПредикат(ЮТПредикаты.Выражения().Меньше, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство)на НЕ равенство `Истина`. -// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. -// +// Проверяет установленное значение Контекста (или его свойство), оно должно быть меньше или равно ожидаемому. +// // Параметры: +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) меньше этого значения или равно ему // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоНеИстина(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция МеньшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - Контекст = Контекст(); - УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Истина, Истина, "является истиной"); + ПроверитьПредикат(ЮТПредикаты.Выражения().МеньшеРавно, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на равенство `Ложь`. -// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. -// +// Проверяет установленное значение Контекста (или его свойство) на "заполненность" (обертка для `ЗначениеЗаполнено`). +// // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция Заполнено(Знач ОписаниеПроверки = Неопределено) Экспорт - Контекст = Контекст(); - УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Ложь, Ложь, "является ложью"); + ПроверитьПредикат(ЮТПредикаты.Выражения().Заполнено, , ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на НЕ равенство `Ложь`. -// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. -// +// Проверяет установленное значение Контекста (или его свойство) на "не заполненность" (обертка для `ЗначениеЗаполнено`) +// // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоНеЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция НеЗаполнено(Знач ОписаниеПроверки = Неопределено) Экспорт - Контекст = Контекст(); - УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Ложь, Истина, "является ложью"); + ПроверитьПредикат(ЮТПредикаты.Выражения().НеЗаполнено, , ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на равенство ожидаемому. -// -// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. -// Для сериализуемых объектов проверяется равенство по значению. -// +// Проверяет установленное значение Контекста (или его свойство) на соответствие переданному типу. +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) равно этому значению +// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) имеет данный тип // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция Равно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - ПараметрыСравнения = Новый Структура("ГлубокийАнализ", Истина); - ПроверитьПредикат(ЮТПредикаты.Выражения().Равно, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения); + ПроверитьПредикат(ЮТПредикаты.Выражения().ИмеетТип, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на НЕ равенство ожидаемому. -// -// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения -// Для сериализуемых значений проверяется равенство по значению -// +// Проверяет установленное значение Контекста (или его свойство) на несоответствие переданному типу. +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) НЕ равно этому значению +// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) НЕ имеет данный тип // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция НеРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция НеИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - ПараметрыСравнения = Новый Структура("ГлубокийАнализ", Истина); - ПроверитьПредикат(ЮТПредикаты.Выражения().НеРавно, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения); + ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетТип, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство), оно должно быть больше ожидаемого. -// +// Проверяет установленное значение Контекста (или его свойство) на наличие в нем искомого. +// +// Проверка поддерживается для следующих типов проверяемого значения: +// +// - Строка - по вхождению +// - Массив - по наличию равного элемента +// - Структура - по наличию равного значения +// - Соответствие - по наличию равного значения +// - СписокЗначений - по наличию равного значения +// - ФиксированныйМассив - по наличию равного значения +// - ФиксированнаяСтруктура - по наличию равного значения +// - ФиксированноеСоответствие - по наличию равного значения +// - Произвольный итерируемый объект для проверки на соответствие предикату +// +// При сравнении также проверяется совпадение типов +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) Больше этого значения +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) содержит указанное значение +// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция Больше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция Содержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт + + Если ЮТПредикатыСлужебныйКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда + ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Ложь); + Иначе + ПроверитьПредикат(ЮТПредикаты.Выражения().Содержит, ОжидаемоеЗначение, ОписаниеПроверки); + КонецЕсли; - ПроверитьПредикат(ЮТПредикаты.Выражения().Больше, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство), оно должно быть больше или равно ожидаемому. -// +// Проверяет установленное значение Контекста (или его свойство) на наличие в нем искомого. +// +// Проверка поддерживается для следующих типов проверяемого значения: +// +// - Строка - по отсутствию вхождению +// - Массив - по отсутствию равного элемента +// - Структура - по отсутствию равного значения +// - Соответствие - по отсутствию равного значения +// - СписокЗначений - по отсутствию равного значения +// - ФиксированныйМассив - по отсутствию равного значения +// - ФиксированнаяСтруктура - по отсутствию равного значения +// - ФиксированноеСоответствие - по отсутствию равного значения +// - Произвольный итерируемый объект для проверки на соответствие предикату +// +// При сравнении также проверяется совпадение типов +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) Больше этого значения или равно ему +// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) НЕ содержит указанное +// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция БольшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция НеСодержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт + + Если ЮТПредикатыСлужебныйКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда + ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Истина); + Иначе + ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержит, ОжидаемоеЗначение, ОписаниеПроверки); + КонецЕсли; - ПроверитьПредикат(ЮТПредикаты.Выражения().БольшеРавно, ОжидаемоеЗначение, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство), оно должно быть меньше ожидаемого. -// +// Проверяет установленное значение Контекста (или его свойство) на наличие подстроки, соответствующей регулярному выражению +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) меньше этого значения +// Шаблон - Строка - Регулярное выражение, по которому ищем подстроку // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция Меньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция СодержитСтрокуПоШаблону(Знач Шаблон, Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().Меньше, ОжидаемоеЗначение, ОписаниеПроверки); + ПроверитьПредикат(ЮТПредикаты.Выражения().СодержитСтрокуПоШаблону, Шаблон, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство), оно должно быть меньше или равно ожидаемому. -// +// Проверяет установленное значение Контекста (или его свойство) на отсутствие подстроки, соответствующей регулярному выражению +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) меньше этого значения или равно ему +// Шаблон - Строка - Регулярное выражение, по которому ищем подстроку // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция МеньшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция НеСодержитСтрокуПоШаблону(Знач Шаблон, Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().МеньшеРавно, ОжидаемоеЗначение, ОписаниеПроверки); + ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержитСтрокуПоШаблону, Шаблон, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на "заполненность" (обертка для `ЗначениеЗаполнено`). -// +// Проверяет наличие свойства у объекта/его свойства. +// В отличии от метода см. Свойство не позиционируется на указанное свойство. // Параметры: +// ИмяСвойства - Строка - Наименование свойства объекта. +// Возможно обращение к вложенным свойствам через точку // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция Заполнено(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ИмеетСвойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().Заполнено, , ОписаниеПроверки); + ПроверитьПредикат(ЮТПредикаты.Выражения().ИмеетСвойство, ИмяСвойства, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на "не заполненность" (обертка для `ЗначениеЗаполнено`) -// +// Проверяет отсутствие свойства у объекта/его свойства. +// В отличии от метода см. НетСвойства не сбрасывает позиционирование проверки. +// // Параметры: +// ИмяСвойства - Строка - Наименование свойства объекта. +// Возможно обращение к вложенным свойствам через точку // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция НеЗаполнено(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция НеИмеетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().НеЗаполнено, , ОписаниеПроверки); + ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетСвойство, ИмяСвойства, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на "существование", т.е. отличие от `Null` и `Неопределено`. -// +// Проверяет значение (или его свойство), оно должно входить в указанный список. +// // Параметры: +// Значения - Массив из Произвольный - Значения для проверки +// - СписокЗначений из Произвольный - Значения для проверки // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция Существует(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ВСписке(Значения, ОписаниеПроверки = Неопределено) Экспорт - Контекст = Контекст(); - УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - ПроверитьСуществование(Контекст, Ложь); + ПроверитьПредикат(ЮТПредикаты.Выражения().ВСписке, Значения, ОписаниеПроверки); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на "не существование", т.е. оно равно `Null` или `Неопределено`. -// +#КонецОбласти + +// Проверяет наличие свойств и их значения у проверяемого объекта (или его свойства). +// // Параметры: +// ОжидаемоеЗначение - Структура - Проверяемый объект должен иметь свойства указанные в параметре // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция НеСуществует(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ИмеетСвойстваРавные(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт Контекст = Контекст(); УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - ПроверитьСуществование(Контекст, Истина); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); + ОбъектыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение); + Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) не равенство `Неопределено`. -// +// Проверяет установленное значение Контекста (или его свойство) на равенство `Истина)`. +// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. +// // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ЭтоИстина(Знач ОписаниеПроверки = Неопределено) Экспорт Контекст = Контекст(); УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Неопределено, Ложь, "является неопределено"); + СравнитьЗначения(Контекст, Истина, Ложь, "является истиной"); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на не равенство `Неопределено`. -// +// Проверяет установленное значение Контекста (или его свойство)на НЕ равенство `Истина`. +// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. +// // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоНеНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ЭтоНеИстина(Знач ОписаниеПроверки = Неопределено) Экспорт Контекст = Контекст(); УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Неопределено, Истина, "является неопределено"); + СравнитьЗначения(Контекст, Истина, Истина, "является истиной"); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на равенство `Null`. -// +// Проверяет установленное значение Контекста (или его свойство) на равенство `Ложь`. +// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. +// // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоNull(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ЭтоЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт Контекст = Контекст(); УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Null, Ложь, "является null"); + СравнитьЗначения(Контекст, Ложь, Ложь, "является ложью"); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на не равенство `Null`. -// +// Проверяет установленное значение Контекста (или его свойство) на НЕ равенство `Ложь`. +// При сравнении также проверяется совпадение типов проверяемого и ожидаемого значения. +// // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ЭтоНеNull(Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ЭтоНеЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт Контекст = Контекст(); УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); - СравнитьЗначения(Контекст, Null, Истина, "является null"); + СравнитьЗначения(Контекст, Ложь, Истина, "является ложью"); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на соответствие переданному типу. -// +// Проверяет установленное значение Контекста (или его свойство) на "существование", т.е. отличие от `Null` и `Неопределено`. +// // Параметры: -// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) имеет данный тип // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция ИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция Существует(Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().ИмеетТип, ОжидаемоеЗначение, ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьСуществование(Контекст, Ложь); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на несоответствие переданному типу. -// +// Проверяет установленное значение Контекста (или его свойство) на "не существование", т.е. оно равно `Null` или `Неопределено`. +// // Параметры: -// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) НЕ имеет данный тип // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция НеИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция НеСуществует(Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетТип, ОжидаемоеЗначение, ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьСуществование(Контекст, Истина); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на наличие в нем искомого. -// -// Проверка поддерживается для следующих типов проверяемого значения: -// -// - Строка - по вхождению -// - Массив - по наличию равного элемента -// - Структура - по наличию равного значения -// - Соответствие - по наличию равного значения -// - СписокЗначений - по наличию равного значения -// - ФиксированныйМассив - по наличию равного значения -// - ФиксированнаяСтруктура - по наличию равного значения -// - ФиксированноеСоответствие - по наличию равного значения -// - Произвольный итерируемый объект для проверки на соответствие предикату -// -// При сравнении также проверяется совпадение типов -// +// Проверяет установленное значение Контекста (или его свойство) не равенство `Неопределено`. +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) содержит указанное значение -// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция Содержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - - Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда - ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Ложь); - Иначе - ПроверитьПредикат(ЮТПредикаты.Выражения().Содержит, ОжидаемоеЗначение, ОписаниеПроверки); - КонецЕсли; +Функция ЭтоНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Неопределено, Ложь, "является неопределено"); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на наличие в нем искомого. -// -// Проверка поддерживается для следующих типов проверяемого значения: -// -// - Строка - по отсутствию вхождению -// - Массив - по отсутствию равного элемента -// - Структура - по отсутствию равного значения -// - Соответствие - по отсутствию равного значения -// - СписокЗначений - по отсутствию равного значения -// - ФиксированныйМассив - по отсутствию равного значения -// - ФиксированнаяСтруктура - по отсутствию равного значения -// - ФиксированноеСоответствие - по отсутствию равного значения -// - Произвольный итерируемый объект для проверки на соответствие предикату -// -// При сравнении также проверяется совпадение типов -// +// Проверяет установленное значение Контекста (или его свойство) на не равенство `Неопределено`. +// // Параметры: -// ОжидаемоеЗначение - Произвольный - Ожидается, что значение Контекста (или его свойство) НЕ содержит указанное -// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция НеСодержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - - Если ЮТПредикатыКлиентСервер.ЭтоПредикат(ОжидаемоеЗначение) Тогда - ПроверитьСодержаниеПредиката(ОжидаемоеЗначение, ОписаниеПроверки, Истина); - Иначе - ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержит, ОжидаемоеЗначение, ОписаниеПроверки); - КонецЕсли; +Функция ЭтоНеНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Неопределено, Истина, "является неопределено"); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на наличие подстроки, соответствующей регулярному выражению +// Проверяет установленное значение Контекста (или его свойство) на равенство `Null`. // // Параметры: -// Шаблон - Строка - Регулярное выражение, по которому ищем подстроку // ОписаниеПроверки - Строка - Описание конкретной проверки // // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция СодержитСтрокуПоШаблону(Знач Шаблон, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ЭтоNull(Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().СодержитСтрокуПоШаблону, Шаблон, ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Null, Ложь, "является null"); Возврат ЮТУтверждения; КонецФункции -// Проверяет установленное значение Контекста (или его свойство) на отсутствие подстроки, соответствующей регулярному выражению +// Проверяет установленное значение Контекста (или его свойство) на не равенство `Null`. // // Параметры: -// Шаблон - Строка - Регулярное выражение, по которому ищем подстроку // ОписаниеПроверки - Строка - Описание конкретной проверки // // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания -Функция НеСодержитСтрокуПоШаблону(Знач Шаблон, Знач ОписаниеПроверки = Неопределено) Экспорт +Функция ЭтоНеNull(Знач ОписаниеПроверки = Неопределено) Экспорт - ПроверитьПредикат(ЮТПредикаты.Выражения().НеСодержитСтрокуПоШаблону, Шаблон, ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Null, Истина, "является null"); Возврат ЮТУтверждения; КонецФункции // Проверяет установленное значение Контекста (или его свойство) на длину или размер коллекции. -// -// Проверка поддерживается для следующих типов проверяемого значения: +// +// Проверка поддерживается для следующих типов проверяемого значения: // - Строка // - Массив // - Структура @@ -678,11 +696,11 @@ // - ФиксированнаяСтруктура // - ФиксированноеСоответствие // - ТаблицаЗначения -// +// // Параметры: // ОжидаемоеЗначение - Число - Ожидается, что значение Контекста (или его свойство) имеет указанную длину или размер // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт @@ -701,8 +719,8 @@ КонецФункции // Проверяет установленное значение Контекста (или его свойство) на длину или размер коллекции. -// -// Проверка поддерживается для следующих типов проверяемого значения: +// +// Проверка поддерживается для следующих типов проверяемого значения: // - Строка // - Массив // - Структура @@ -712,11 +730,11 @@ // - ФиксированнаяСтруктура // - ФиксированноеСоответствие // - ТаблицаЗначения -// +// // Параметры: // ОжидаемоеЗначение - Число - Ожидается, что значение Контекста (или его свойство) имеет указанную длину или размер // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетДлинуБольше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт @@ -735,8 +753,8 @@ КонецФункции // Проверяет установленное значение Контекста (или его свойство) на длину или размер коллекции. -// -// Проверка поддерживается для следующих типов проверяемого значения: +// +// Проверка поддерживается для следующих типов проверяемого значения: // - Строка // - Массив // - Структура @@ -746,11 +764,11 @@ // - ФиксированнаяСтруктура // - ФиксированноеСоответствие // - ТаблицаЗначения -// +// // Параметры: // ОжидаемоеЗначение - Число - Ожидается, что значение Контекста (или его свойство) имеет указанную длину или размер // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетДлинуМеньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт @@ -769,8 +787,8 @@ КонецФункции // Проверяет установленное значение Контекста (или его свойство) на длину или размер коллекции, которые не должны совпадать с указанным значением. -// -// Проверка поддерживается для следующих типов проверяемого значения: +// +// Проверка поддерживается для следующих типов проверяемого значения: // - Строка // - Массив // - Структура @@ -780,11 +798,11 @@ // - ФиксированнаяСтруктура // - ФиксированноеСоответствие // - ТаблицаЗначения -// +// // Параметры: // ОжидаемоеЗначение - Число - Ожидается, что значение Контекста (или его свойство) не имеет указанную дину или размер // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция НеИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт @@ -804,13 +822,14 @@ #Область ПроверкаМетодов -// Проверяет установленный для проверки метод Контекста на то, что метод упадет по исключению, далее текст исключения проверяется на ожидаемый. -// +// Вызывает метод (см. Метод) объекта контекста и проверяет, выбрасывает ли он исключение. +// Проверяет, что метод упадет по исключению, а текст исключения содержит(включает) указанный. +// // Параметры: -// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке будет содержать данный текст +// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке будет содержать(включать) данный текст // ОписаниеПроверки - Строка - Описание конкретной проверки // ВТранзакции - Булево - Вызов метода выполняется в трананзакции -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ВыбрасываетИсключение(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено, ВТранзакции = Ложь) Экспорт @@ -821,34 +840,36 @@ Модуль = ПроверяемоеЗначение(Контекст); Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода, ВТранзакции); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; - Если Не Результат.ИсключениеВозникло Тогда + Если НЕ Результат.ИсключениеВозникло Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` вызовет исключение `%2`, но это не так.", Контекст.ИмяМетода, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); ИначеЕсли СтрНайти(Результат.ТекстИсключения, ОжидаемоеЗначение) = 0 Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` вызовет исключение `%2`, но получили `%3`.", - Контекст.ИмяМетода, - ОжидаемоеЗначение, - Результат.ТекстИсключения); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); + Контекст.ИмяМетода, + ОжидаемоеЗначение, + Результат.ТекстИсключения); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); КонецЕсли; Возврат ЮТУтверждения; КонецФункции -// Проверяет установленный для проверки метод Контекста на то, что метод не упадет по исключению -// или упадет по исключению текст которого не содержит ожидаемый. -// +// Вызывает метод (см. Метод) объекта контекста и проверяет, выбрасывает ли он исключение. +// Проверяет, что метод не упадет по исключению +// или упадет по исключению текст, которого не содержит указанный. +// // Параметры: -// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке НЕ будет содержать данный текст +// ОжидаемоеЗначение - Строка - Ожидается, что метод выбросит исключение, текст которого НЕ будет содержать (включать) данный текст +// - Неопределено - Ожидается, что метод отработает без выбора исключения // ОписаниеПроверки - Строка - Описание конкретной проверки // ВТранзакции - Булево - Вызов метода выполняется в трананзакции -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция НеВыбрасываетИсключение(Знач ОжидаемоеЗначение = Неопределено, Знач ОписаниеПроверки = Неопределено, ВТранзакции = Ложь) Экспорт @@ -859,18 +880,18 @@ Модуль = ПроверяемоеЗначение(Контекст); Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода, ВТранзакции); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Результат.ИсключениеВозникло Тогда - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); Если НЕ ЗначениеЗаполнено(ОжидаемоеЗначение) Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` не вызовет исключение, но это не так.", Контекст.ИмяМетода); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); ИначеЕсли СтрНайти(Результат.ТекстИсключения, ОжидаемоеЗначение) <> 0 Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` не вызовет исключение `%2`, но это не так.", Контекст.ИмяМетода, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); КонецЕсли; КонецЕсли; @@ -879,12 +900,12 @@ КонецФункции // Проверяет, что установленное значение Контекста (или его свойство) имеет указанный экспортный метод. -// -// +// +// // Параметры: // ИмяМетода - Строка - Имя метода, наличие которого нужно проверить // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетМетод(ИмяМетода, ОписаниеПроверки = Неопределено) Экспорт @@ -893,8 +914,8 @@ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); Модуль = ПроверяемоеЗначение(Контекст); - Результат = ЮТОбщий.МетодОбъектаСуществует(Модуль, ИмяМетода); - Если Не Результат Тогда + Результат = ЮТМетодыСлужебный.МетодОбъектаСуществует(Модуль, ИмяМетода); + Если НЕ Результат Тогда Сообщение = СтрШаблон("имеет метод `%1`", ИмяМетода); СгенерироватьОшибкуСравнения(Сообщение, Модуль, ИмяМетода); КонецЕсли; @@ -905,13 +926,13 @@ #КонецОбласти // Проверяет установленное значение Контекста (или его свойство), ожидается что оно начинается на указанное значение. -// +// // При этом проверяемое значение должно быть строкой. -// +// // Параметры: // СтрокаПоиска - Строка - Строка поиска // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция НачинаетсяС(СтрокаПоиска, ОписаниеПроверки = Неопределено) Экспорт @@ -935,13 +956,13 @@ КонецФункции // Проверяет установленное значение Контекста (или его свойство), ожидается что оно заканчивается на указанное значение. -// +// // При этом проверяемое значение должно быть строкой. -// +// // Параметры: // СтрокаПоиска - Строка - Строка поиска // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ЗаканчиваетсяНа(СтрокаПоиска, ОписаниеПроверки = Неопределено) Экспорт @@ -965,14 +986,14 @@ КонецФункции // Проверяет вхождение установленного значение (или его свойства) в заданный интервал. -// +// // Проверяемое значение может находится на границе интервала. -// +// // Параметры: // НачалоИнтервала - Произвольный - Левая граница интервала. Может иметь любой тип, позволяющий сравнивать значения // ОкончаниеИнтервала - Произвольный - Правая граница. Может иметь любой тип, позволяющий сравнивать значения // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция МеждуВключаяГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт @@ -985,14 +1006,14 @@ КонецФункции // Проверяет вхождение установленного значение (или его свойства) в заданный интервал. -// +// // Проверяемое значение не может находится на границе интервала. -// +// // Параметры: // НачалоИнтервала - Произвольный - Левая граница интервала. Может иметь любой тип, позволяющий сравнивать значения // ОкончаниеИнтервала - Произвольный - Правая граница. Может иметь любой тип, позволяющий сравнивать значения // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция МеждуИсключаяГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт @@ -1005,14 +1026,14 @@ КонецФункции // Проверяет вхождение установленного значение (или его свойства) в заданный интервал. -// +// // Проверяемое значение может находится на начальной границе интервала. -// +// // Параметры: // НачалоИнтервала - Произвольный - Левая граница интервала. Может иметь любой тип, позволяющий сравнивать значения // ОкончаниеИнтервала - Произвольный - Правая граница. Может иметь любой тип, позволяющий сравнивать значения // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция МеждуВключаяНачалоГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт @@ -1025,14 +1046,14 @@ КонецФункции // Проверяет вхождение установленного значение (или его свойства) в заданный интервал. -// +// // Проверяемое значение может находится на конечной границе интервала. -// +// // Параметры: // НачалоИнтервала - Произвольный - Левая граница интервала. Может иметь любой тип, позволяющий сравнивать значения // ОкончаниеИнтервала - Произвольный - Правая граница. Может иметь любой тип, позволяющий сравнивать значения // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция МеждуВключаяОкончаниеГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт @@ -1045,11 +1066,11 @@ КонецФункции // Проверяет каждый элемент установленного значения (или его свойства), все элементы должны иметь указанное свойство. -// +// // Параметры: // ИмяСвойства - Строка // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция КаждыйЭлементСодержитСвойство(ИмяСвойства, ОписаниеПроверки = Неопределено) Экспорт @@ -1072,14 +1093,14 @@ КонецФункции -// Проверяет каждый элемент установленного значения (или его свойства), +// Проверяет каждый элемент установленного значения (или его свойства), // все элементы должны иметь указанное свойство, которое равно ожидаемому значению. -// +// // Параметры: // ИмяСвойства - Строка // ОжидаемоеЗначение - Произвольный - Ожидаемое значение свойства // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция КаждыйЭлементСодержитСвойствоСоЗначением(ИмяСвойства, ОжидаемоеЗначение, ОписаниеПроверки = Неопределено) Экспорт @@ -1112,11 +1133,11 @@ КонецФункции // Проверяет элементы установленного значения (или его свойства), хотя бы один из них должен иметь указанное свойство. -// +// // Параметры: // ИмяСвойства - Строка // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ЛюбойЭлементСодержитСвойство(ИмяСвойства, ОписаниеПроверки = Неопределено) Экспорт @@ -1145,14 +1166,14 @@ КонецФункции -// Проверяет элементы установленного значения (или его свойства), +// Проверяет элементы установленного значения (или его свойства), // хотя бы один из них должен иметь указанное свойство, которое равно ожидаемому значению. -// +// // Параметры: // ИмяСвойства - Строка // ОжидаемоеЗначение - Произвольный - Ожидаемое значение свойства // ОписаниеПроверки - Строка - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ЛюбойЭлементСодержитСвойствоСоЗначением(ИмяСвойства, ОжидаемоеЗначение, ОписаниеПроверки = Неопределено) Экспорт @@ -1196,13 +1217,13 @@ // Проверяет установленное значение (или его свойства) на соответствие утверждениям предиката. // см. ЮТест.Предикат -// +// // Параметры: // Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор утверждений, см. ЮТПредикаты.Получить // - см. ЮТФабрика.ВыражениеПредиката // - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат // ОписаниеПроверки - Строка, Неопределено - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция СоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт @@ -1213,7 +1234,7 @@ ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки); - РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(ПроверяемоеЗначение, Предикат, ПараметрыСообщенийОбОшибке); + РезультатПроверки = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(ПроверяемоеЗначение, Предикат, ПараметрыСообщенийОбОшибке); Если НЕ РезультатПроверки.Успешно Тогда ОбработатьРезультатПроверки(Контекст, РезультатПроверки); @@ -1223,16 +1244,16 @@ КонецФункции -// Проверяет каждый элемент установленного значения (или его свойства), +// Проверяет каждый элемент установленного значения (или его свойства), // все элементы должны соответствовать утверждениям предиката. // см. ЮТест.Предикат -// +// // Параметры: // Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор утверждений, см. ЮТПредикаты.Получить // - см. ЮТФабрика.ВыражениеПредиката // - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат // ОписаниеПроверки - Строка, Неопределено - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция КаждыйЭлементСоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт @@ -1245,7 +1266,7 @@ Для Каждого Элемент Из ПроверяемоеЗначение Цикл - РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке); + РезультатПроверки = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке); Если НЕ РезультатПроверки.Успешно Тогда ОбработатьРезультатПроверки(Контекст, РезультатПроверки); КонецЕсли; @@ -1256,16 +1277,16 @@ КонецФункции -// Проверяет элементы установленного значения (или его свойства), +// Проверяет элементы установленного значения (или его свойства), // хотя бы один из них должен соответствовать утверждениям предиката. // см. ЮТест.Предикат -// +// // Параметры: // Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор утверждений, см. ЮТПредикаты.Получить // - см. ЮТФабрика.ВыражениеПредиката // - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат // ОписаниеПроверки - Строка, Неопределено - Описание конкретной проверки -// +// // Возвращаемое значение: // ОбщийМодуль - Этот модуль для замыкания Функция ЛюбойЭлементСоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт @@ -1280,7 +1301,7 @@ Для Каждого Элемент Из ПроверяемоеЗначение Цикл - РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке); + РезультатПроверки = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке); Если РезультатПроверки.Успешно Тогда Успешно = Истина; Прервать; @@ -1289,7 +1310,7 @@ КонецЦикла; Если НЕ Успешно Тогда - Сообщение = ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, " и "); + Сообщение = ЮТПредикатыСлужебныйКлиентСервер.ПредставлениеПредикатов(Предикат, " и "); СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, "один из элементов проверяемого значения"); КонецЕсли; @@ -1299,23 +1320,21 @@ #КонецОбласти -#КонецОбласти - #Область СлужебныйПрограммныйИнтерфейс // Сбросить контекст. // Используется для принудительного сброса контекста утверждения Процедура СброситьКонтекст() Экспорт - ЮТКонтекст.УстановитьКонтекстУтверждений(Неопределено); - ЮТКонтекст.УстановитьКонтекстОшибки(); + ЮТКонтекстСлужебный.УстановитьКонтекстУтверждений(Неопределено); + ЮТРегистрацияОшибокСлужебный.УстановитьКонтекстОшибки(); КонецПроцедуры // Обработчик события "ПередКаждымТестом" -// +// // Параметры: -// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов +// ОписаниеСобытия - см. ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт СброситьКонтекст(); @@ -1329,24 +1348,24 @@ #Область Контекст // Контекст. -// +// // Возвращаемое значение: // см. НовыйКонтекстУтверждения Функция Контекст() Экспорт //@skip-check constructor-function-return-section - Возврат ЮТКонтекст.КонтекстПроверки(); + Возврат ЮТКонтекстСлужебный.КонтекстПроверки(); КонецФункции // Инициализирует контекст утверждений -// +// // Параметры: // ПроверяемоеЗначение - Произвольный - Проверяемое значение -// +// // Возвращаемое значение: // Структура - контекст утверждений: -// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения +// * ОбъектПроверки - см. ЮТФабрикаСлужебный.ОписаниеПроверяемогоЗначения // * ИмяМетода - Строка // * НормализованныйПутьКСвойству - Неопределено - Не указано свойство // - Массив из Строка, Число @@ -1354,7 +1373,7 @@ // - Массив из Произвольный Функция НовыйКонтекстУтверждения(ПроверяемоеЗначение) - Контекст = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение); + Контекст = ЮТФабрикаСлужебный.ОписаниеПроверки(ПроверяемоеЗначение); Контекст.Вставить("ИмяМетода", ""); Контекст.Вставить("НормализованныйПутьКСвойству", Неопределено); @@ -1385,8 +1404,8 @@ Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда #Если ВебКлиент Или ТонкийКлиент Тогда - Значение = ЮТОбщийВызовСервера.ИзХранилищаЗначений(Значение); -#Иначе + Значение = ЮТОбщийСлужебныйВызовСервера.ИзХранилищаЗначений(Значение); +#Иначе Значение = Значение.Получить(); #КонецЕсли КонецЕсли; @@ -1501,11 +1520,11 @@ Результат = Ложь; ТипЗначения = ТипЗнч(Значение); - Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("ФиксированнаяСтруктура") Тогда + Если ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗначения) Тогда Результат = Значение.Свойство(Свойство); - ИначеЕсли ТипЗначения = Тип("Соответствие") Или ТипЗначения = Тип("ФиксированноеСоответствие") Тогда + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипЗначения) Тогда Для Каждого КлючЗначение Из Значение Цикл @@ -1558,9 +1577,9 @@ Функция ВызватьМетод(Модуль, ИмяМетода, ПараметрыМетода, ВТранзакции) #Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТУтверждения.ВызватьМетод"); + ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТУтверждения.ВызватьМетод"); #Иначе - Если Не ЗначениеЗаполнено(ИмяМетода) Тогда + Если НЕ ЗначениеЗаполнено(ИмяМетода) Тогда ВызватьИсключение "ИмяМетода не заполнено в контексте. Воспользуйтесь предварительно методом интерфейса `Метод(ИмяМетода)`"; КонецЕсли; @@ -1585,13 +1604,13 @@ КонецЕсли; НачатьТранзакцию(); // BSLLS:PairingBrokenTransaction-off BSLLS:BeginTransactionBeforeTryCatch-off - Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль); ОтменитьТранзакцию(); // BSLLS:WrongUseOfRollbackTransactionMethod-off Иначе - Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль); КонецЕсли; #Иначе - Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыМетода, Модуль); #КонецЕсли Если Ошибка <> Неопределено Тогда @@ -1625,7 +1644,7 @@ ТипЗнч(Значение), ОжидаемыйТип, Суффикс); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; КонецПроцедуры @@ -1656,7 +1675,7 @@ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ЗначенияРавны(ПроверяемоеЗначение, ОжидаемоеЗначение); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение); @@ -1668,7 +1687,7 @@ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ПроверяемоеЗначение <> Null И ПроверяемоеЗначение <> Неопределено; Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; ОбработатьРезультатСравнения(Результат, "существует", Реверс, ПроверяемоеЗначение, Неопределено); @@ -1681,12 +1700,12 @@ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если ФактическаяДлина = Неопределено Тогда ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; Возврат ФактическаяДлина; @@ -1700,7 +1719,7 @@ Сообщение = "не " + Сообщение; КонецЕсли; - Если Не Результат Тогда + Если НЕ Результат Тогда СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение); КонецЕсли; @@ -1720,7 +1739,7 @@ ТекстОшибки = СтрШаблон("Не корректно задан интервал, левая граница (%1) не должна быть больше правой (%2)", НачалоИнтервала, ОкончаниеИнтервала); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; Результат = Истина; @@ -1736,32 +1755,33 @@ Результат = Результат И ПроверяемоеЗначение < ОкончаниеИнтервала; КонецЕсли; - Если Не Результат Тогда + Если НЕ Результат Тогда Интервал = СтрШаблон("%1%2; %3%4", - ?(ВключаяНачало, "[", "("), - НачалоИнтервала, - ОкончаниеИнтервала, - ?(ВключаяОкончание, "]", ")")); + ?(ВключаяНачало, "[", "("), + НачалоИнтервала, + ОкончаниеИнтервала, + ?(ВключаяОкончание, "]", ")")); Сообщение = "находится в интервале " + Интервал; СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, Интервал); КонецЕсли; - + КонецПроцедуры Процедура ПроверитьЗаполненностьЗначения(Контекст, Значение, Описание) Если НЕ ЗначениеЗаполнено(Значение) Тогда ТекстОшибки = СтрШаблон("Ожидали, что %1 заполнено, но это не так", Описание); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; КонецПроцедуры Процедура ОбъектыРавны(Объект, ОбъектЭталон) - Ключи = ЮТОбщий.ВыгрузитьЗначения(ОбъектЭталон, "Ключ"); + Ключи = ЮТКоллекции.ВыгрузитьЗначения(ОбъектЭталон, "Ключ"); + ТипЗначения = ТипЗнч(Объект); - ЭтоСоответствие = ТипЗнч(Объект) = Тип("Соответствие") ИЛИ ТипЗнч(Объект) = Тип("ФиксированноеСоответствие"); - ЭтоСтруктура = ТипЗнч(Объект) = Тип("Структура") ИЛИ ТипЗнч(Объект) = Тип("ФиксированнаяСтруктура"); + ЭтоСоответствие = ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипЗначения); + ЭтоСтруктура = ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗначения); ЗначениеОтсутствующегоРеквизита = Новый УникальныйИдентификатор(); @@ -1777,7 +1797,7 @@ Для Каждого Ключ Из Ключи Цикл - Если Не ЭтоСоответствие И (Не СтруктураОбъекта.Свойство(Ключ) Или СтруктураОбъекта[Ключ] = ЗначениеОтсутствующегоРеквизита) Тогда + Если НЕ ЭтоСоответствие И (НЕ СтруктураОбъекта.Свойство(Ключ) ИЛИ СтруктураОбъекта[Ключ] = ЗначениеОтсутствующегоРеквизита) Тогда Сообщение = СтрШаблон("не содержат свойство '%1'", Ключ); СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон); КонецЕсли; @@ -1798,12 +1818,12 @@ Для Каждого Сообщение Из Результат.Сообщения Цикл Если ТипЗнч(Сообщение) = Тип("Структура") Тогда - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Сообщение.ПроверяемоеЗначение, Сообщение.ОжидаемоеЗначение); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(Сообщение.ПроверяемоеЗначение, Сообщение.ОжидаемоеЗначение); - ТекстИсключения = СтрШаблон("%1 <%2>", ЮТРегистрацияОшибок.ПрефиксОшибкиУтверждений(), Сообщение.Сообщение); + ТекстИсключения = СтрШаблон("%1 <%2>", ЮТРегистрацияОшибокСлужебный.ПрефиксОшибкиУтверждений(), Сообщение.Сообщение); ВызватьИсключение ТекстИсключения; Иначе - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение, Контекст); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(Сообщение, Контекст); КонецЕсли; КонецЦикла; @@ -1817,16 +1837,16 @@ Функция ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки, ОбъектПроверки = "проверяемое значение") Контекст = Контекст(); - ПолноеОписаниеПроверки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, ОписаниеПроверки, " "); + ПолноеОписаниеПроверки = ЮТСтроки.ДобавитьСтроку(Контекст.ПрефиксОшибки, ОписаниеПроверки, " "); ПредставлениеЗначения = СтрШаблон("`%1`", ПроверяемоеЗначение); - Возврат ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки, ОбъектПроверки, ПредставлениеЗначения); + Возврат ЮТПредикатыСлужебныйКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки, ОбъектПроверки, ПредставлениеЗначения); КонецФункции // Вызывает ошибку проверки утверждений // При этом сохраняет в контекст состояние, для дальнейшей обработки -// +// // Параметры: // Сообщение - Строка // ПроверяемоеЗначение - Произвольный @@ -1834,14 +1854,14 @@ Процедура СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Контекст = Контекст(); - ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, Сообщение, ПроверяемоеЗначение, ОбъектПроверки); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуУтверждения(Контекст, Сообщение, ПроверяемоеЗначение, ОбъектПроверки); КонецПроцедуры Процедура СгенерироватьОшибкуСравнения(Сообщение, ФактическоеЗначение, ОжидаемоеЗначение, ОбъектПроверки = "проверяемое значение") Контекст = Контекст(); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Контекст, Сообщение, ФактическоеЗначение, ОжидаемоеЗначение, ОбъектПроверки); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуСравнения(Контекст, Сообщение, ФактическоеЗначение, ОжидаемоеЗначение, ОбъектПроверки); КонецПроцедуры @@ -1852,28 +1872,28 @@ Контекст = Контекст(); Предикат = ЮТФабрика.ВыражениеПредиката(Выражение, Контекст.ОбъектПроверки.ИмяСвойства, ОжидаемоеЗначение); - ПолноеОписаниеПроверки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, ОписаниеПроверки, " "); + ПолноеОписаниеПроверки = ЮТСтроки.ДобавитьСтроку(Контекст.ПрефиксОшибки, ОписаниеПроверки, " "); - ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки, , Контекст.ОбъектПроверки.Представление); - Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Контекст.ОбъектПроверки.Значение, Предикат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); + ПараметрыСообщенийОбОшибке = ЮТПредикатыСлужебныйКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки, , Контекст.ОбъектПроверки.Представление); + Результат = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Контекст.ОбъектПроверки.Значение, Предикат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); ОбработатьРезультатПроверкиПредиката(Результат); КонецПроцедуры - + Процедура ОбработатьРезультатПроверкиПредиката(Результат) Если НЕ Результат.Успешно Тогда Для Каждого Сообщение Из Результат.Сообщения Цикл - + Если ТипЗнч(Сообщение) = Тип("Структура") Тогда - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Сообщение.ПроверяемоеЗначение, Сообщение.ОжидаемоеЗначение); - - ТекстИсключения = СтрШаблон("%1 <%2>", ЮТРегистрацияОшибок.ПрефиксОшибкиУтверждений(), Сообщение.Сообщение); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(Сообщение.ПроверяемоеЗначение, Сообщение.ОжидаемоеЗначение); + + ТекстИсключения = СтрШаблон("%1 <%2>", ЮТРегистрацияОшибокСлужебный.ПрефиксОшибкиУтверждений(), Сообщение.Сообщение); ВызватьИсключение ТекстИсключения; Иначе - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуВыполнения(Сообщение); КонецЕсли; КонецЦикла; @@ -1896,7 +1916,7 @@ Для Каждого Элемент Из ПроверяемоеЗначение Цикл - РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке); + РезультатПроверки = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке); Если РезультатПроверки.Успешно Тогда Успешно = Истина; Прервать; @@ -1909,7 +1929,7 @@ КонецЕсли; Если НЕ Успешно Тогда - Сообщение = "содержит элемент, значение которого " + ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, " и "); + Сообщение = "содержит элемент, значение которого " + ЮТПредикатыСлужебныйКлиентСервер.ПредставлениеПредикатов(Предикат, " и "); Если Реверс Тогда Сообщение = "не " + Сообщение; @@ -1921,5 +1941,5 @@ КонецПроцедуры #КонецОбласти - + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl" index ff3a3df66..f8125236e 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -50,7 +50,7 @@ Контекст = НовыйКонтекст(ИмяТаблицы); Контекст.ПрефиксОшибки = ОписаниеПроверки; - ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекста(), Контекст); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекста(), Контекст); Возврат ЮТУтвержденияИБ; @@ -235,7 +235,7 @@ Функция Контекст() //@skip-check constructor-function-return-section - Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекста()); + Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяКонтекста()); КонецФункции @@ -245,10 +245,10 @@ // ИмяТаблицы - Строка // // Возвращаемое значение: -// см. ЮТФабрика.ОписаниеПроверки +// см. ЮТФабрикаСлужебный.ОписаниеПроверки Функция НовыйКонтекст(ИмяТаблицы) - Контекст = ЮТФабрика.ОписаниеПроверки(ИмяТаблицы); + Контекст = ЮТФабрикаСлужебный.ОписаниеПроверки(ИмяТаблицы); Возврат Контекст; @@ -265,7 +265,7 @@ Процедура СгенерироватьОшибкуУтверждения(Контекст, Предикат, Сообщение) Если Предикат <> Неопределено Тогда - ПредставлениеПредиката = ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, ", ", "`%1`"); + ПредставлениеПредиката = ЮТПредикатыСлужебныйКлиентСервер.ПредставлениеПредикатов(Предикат, ", ", "`%1`"); КонецЕсли; Если ЗначениеЗаполнено(ПредставлениеПредиката) Тогда @@ -274,7 +274,7 @@ СообщениеОбОшибке = Сообщение; КонецЕсли; - ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, СообщениеОбОшибке, Неопределено, "проверяемая таблица"); + ЮТРегистрацияОшибокСлужебный.СгенерироватьОшибкуУтверждения(Контекст, СообщениеОбОшибке, Неопределено, "проверяемая таблица"); КонецПроцедуры diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" index 5761e5d2f..858409ad9 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" @@ -16,26 +16,9 @@ // //©///////////////////////////////////////////////////////////////////////////©// -#Область СлужебныйПрограммныйИнтерфейс - -// Параметры записи объекта -// -// Возвращаемое значение: -// Структура - Параметры записи: -// * ОбменДаннымиЗагрузка - Булево -// * ДополнительныеСвойства - Структура -// * РежимЗаписи - РежимЗаписиДокумента -Функция ПараметрыЗаписи() Экспорт - - ПараметрыЗаписи = Новый Структура(); - ПараметрыЗаписи.Вставить("ОбменДаннымиЗагрузка", Ложь); - ПараметрыЗаписи.Вставить("ДополнительныеСвойства", Новый Структура); - ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись); - - Возврат ПараметрыЗаписи; - -КонецФункции +#Область ПрограммныйИнтерфейс +#Область Перечисления // КонтекстыВызова // Возвращает перечисление возможных контекстов вызова // Возвращаемое значение: @@ -59,31 +42,9 @@ КонецФункции -// Доступные параметры (настройки) исполнения тестов -// -// Возвращаемое значение: -// ФиксированнаяСтруктура - Параметры исполнения теста: -// * ВТранзакции - Строка - Тест должен выполняться в транзакции -// * УдалениеТестовыхДанных - Строка - Тест должен удалить созданные тестовые данные -// * Перед - Строка - Перед тестом должен выполниться указанный обработчик события вместо основного -// * После - Строка - После теста должен выполниться указанный обработчик события вместо основного -Функция ПараметрыИсполненияТеста() Экспорт - - Параметры = Новый Структура(); - Параметры.Вставить("ВТранзакции", "ВТранзакции"); - Параметры.Вставить("УдалениеТестовыхДанных", "УдалениеТестовыхДанных"); - Параметры.Вставить("Перед", "Перед"); - Параметры.Вставить("После", "После"); - - Возврат Новый ФиксированнаяСтруктура(Параметры); - -КонецФункции - -#Область Перечисления - // КонтекстыИсполнения // Возвращает перечисление возможных контекстов исполнения тестов -// +// // Возвращаемое значение: // ФиксированнаяСтруктура - Контексты исполнения: // * Клиент - Строка @@ -100,7 +61,7 @@ КонецФункции // Возвращает перечисление возможных статусов выполнения теста, жизненный цикл теста -// +// // Возвращаемое значение: // ФиксированнаяСтруктура - Статусы исполнения теста: // * Ожидание- Строка - Тест не выполнялся @@ -126,58 +87,13 @@ КонецФункции -// Типы ошибок. +// Возвращает перечисление возможные уровнией исполнения тестрв. // // Возвращаемое значение: -// ФиксированнаяСтруктура - Типы возможных ошибок: -// * ТестНеРеализован - Строка -// * ОшибкаСравнения - Строка -// * ОшибкаОбработкиСобытия - Строка -// * Утверждений - Строка -// * Исполнения - Строка -// * ЧтенияТестов - Строка -// * МалоПараметров - Строка -// * МногоПараметров - Строка -// * НекорректныйКонтекстИсполнения - Строка -// * Пропущен - Строка -Функция ТипыОшибок() Экспорт - - Типы = Новый Структура; - - Для Каждого ТипОшибки Из ПараметрыТиповОшибок() Цикл - Типы.Вставить(ТипОшибки.Ключ, ТипОшибки.Ключ); - КонецЦикла; - - //@skip-check constructor-function-return-section - Возврат Новый ФиксированнаяСтруктура(Типы); - -КонецФункции - -Функция ПараметрыТиповОшибок(Кешировать = Истина) Экспорт - - Если Кешировать Тогда - ЮТПовторногоИспользования.ПараметрыТиповОшибок(); - КонецЕсли; - - Статусы = СтатусыИсполненияТеста(); - Реквизиты = "Ключ, Представление, Статус"; - - ТипыОшибок = Новый Массив(); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ТестНеРеализован", "Не реализован", Статусы.НеРеализован)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ОшибкаСравнения", "Ошибка сравнения", Статусы.Ошибка)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ОшибкаОбработкиСобытия", "Ошибка обработки события", Статусы.Сломан)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Утверждений", "Ошибка утверждений", Статусы.Ошибка)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Исполнения", "Ошибка исполнения", Статусы.Сломан)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ЧтенияТестов", "Загрузки тестов", Статусы.Сломан)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "МалоПараметров", "Мало фактических параметров", Статусы.Сломан)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "МногоПараметров", "Много фактических параметров", Статусы.Сломан)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "НекорректныйКонтекстИсполнения", "Некорректный контекст исполнения", Статусы.Пропущен)); - ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Пропущен", "Пропущен", Статусы.Пропущен)); - - Возврат ЮТОбщий.ВСтруктуру(ТипыОшибок, "Ключ"); - -КонецФункции - +// ФиксированнаяСтруктура - Уровни исполнения: +// * Модуль - Строка +// * НаборТестов - Строка +// * Тест - Строка Функция УровниИсполнения() Экспорт Уровни = Новый Структура; @@ -191,215 +107,10 @@ #КонецОбласти -#Область СтруктурыДанных - -// Описание тестового модуля. -// -// Параметры: -// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля -// НаборыТестов - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора -// -// Возвращаемое значение: -// Структура - Описание тестового модуля: -// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля -// * НаборыТестов - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора -// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки -// * НастройкиВыполнения- Структура - Настройки исполнения теста -Функция ОписаниеТестовогоМодуля(МетаданныеМодуля, НаборыТестов) Экспорт - - Описание = Новый Структура; - Описание.Вставить("МетаданныеМодуля", МетаданныеМодуля); - Описание.Вставить("НаборыТестов", НаборыТестов); - Описание.Вставить("Ошибки", Новый Массив); - Описание.Вставить("НастройкиВыполнения", Новый Структура()); - - Возврат Описание; - -КонецФункции - -// ОписаниеТестовогоНабора -// Возвращает описание регистрируемого тестового набора. -// Эта структура используется на этапе формирования описаний имеющихся тестов -// Параметры: -// Имя - Строка - Имя набора -// ТегиСтрокой - Строка - Теги набора -// -// Возвращаемое значение: -// Структура - Описание тестового набора: -// * Имя - Строка - Имя набора -// * Представление - Строка - Представление, краткое описание -// * Теги - Массив из Строка - Коллекция тегов набора -// * Тесты - Массив из см. ОписаниеТеста - Коллекция тестов набора, см. ОписаниеТеста -// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок регистрации тестов -// * НастройкиВыполнения- Структура - Настройки исполнения теста -Функция ОписаниеТестовогоНабора(Имя, ТегиСтрокой = "") Экспорт - - Описание = Новый Структура; - Описание.Вставить("Имя", Строка(Имя)); - Описание.Вставить("Представление", Строка(Имя)); - Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь)); - Описание.Вставить("Тесты", Новый Массив); - Описание.Вставить("Ошибки", Новый Массив); - Описание.Вставить("НастройкиВыполнения", Новый Структура()); - - Возврат Описание; - -КонецФункции - -// ОписаниеТеста -// Возвращает описание регистрируемого теста. -// Эта структура используется на этапе формирования описаний имеющихся тестов -// Параметры: -// Имя - Строка - Имя тестового метода -// Представление - Строка - Представление, краткое описание теста -// КонтекстыВызова - Массив из Строка - Контексты исполнения теста -// ТегиСтрокой - Строка - Теги теста -// -// Возвращаемое значение: -// Структура - Описание теста: -// * Имя - Строка - Имя теста (тестового метода) -// * Представление - Строка - Представление теста -// * Теги - Массив из Строка - Теги теста -// * КонтекстВызова - Массив из Строка - Контексты исполнения теста -// * НастройкиВыполнения- Структура - Настройки исполнения теста -// * Параметры - Неопределено, Массив из Произвольный - Параметры теста -// * НомерВНаборе - Число - Порядковый номер теста в наборе -Функция ОписаниеТеста(Имя, Представление, КонтекстыВызова, Знач ТегиСтрокой = "") Экспорт - - Если ТегиСтрокой = Неопределено Тогда - ТегиСтрокой = ""; - КонецЕсли; - - Описание = Новый Структура(); - Описание.Вставить("Имя", Строка(Имя)); - Описание.Вставить("Представление", Строка(Представление)); - Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь)); - Описание.Вставить("КонтекстВызова", КонтекстыВызова); - Описание.Вставить("НастройкиВыполнения", Новый Структура()); - Описание.Вставить("Параметры", Неопределено); - Описание.Вставить("НомерВНаборе", 0); - - Возврат Описание; - -КонецФункции - -// Описание исполняемого тестового модуля. -// Содержит всю необходимую информацию для прогона тестов, а также данные результата -// Параметры: -// ТестовыйМодуль - см. ОписаниеТестовогоМодуля -// -// Возвращаемое значение: -// Структура - Описание тестового модуля: -// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля -// * НаборыТестов - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки -// * НастройкиВыполнения- Структура - Настройки исполнения теста -Функция ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль) Экспорт - - Описание = Новый Структура; - - Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля); - Описание.Вставить("НаборыТестов", Новый Массив); - Описание.Вставить("Ошибки", ЮТОбщий.СкопироватьМассив(ТестовыйМодуль.Ошибки)); - Описание.Вставить("НастройкиВыполнения", ЮТОбщий.СкопироватьСтруктуру(ТестовыйМодуль.НастройкиВыполнения)); - - Возврат Описание; - -КонецФункции - -// ОписаниеИсполняемогоНабораТестов -// Возвращает описание исполняемого тестового набора. -// Содержит данные необходимые для выполнения прогона тестов -// Параметры: -// НаборТестов - См. ОписаниеТестовогоНабора -// ТестовыйМодуль - См. ОписаниеТестовогоМодуля -// -// Возвращаемое значение: -// Структура - Описание исполняемого набора тестов: -// * Имя - Строка - Имя набора -// * Представление - Строка - Представление набора -// * Теги - Массив из Строка - Тэги набора -// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста -// * Режим - Строка - Режим исполнения набора, см. КонтекстыВызова -// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля -// * Тесты - Массив из см. ОписаниеИсполняемогоТеста - Тесты набора, структуру тестов см. ОписаниеИсполняемогоТеста -// * Выполнять - Булево - Признак, что можно выполнить прогон набора (нет ошибок блокирующих запуск) -// * ДатаСтарта - Число - Дата запуска набора -// * Длительность - Число - Продолжительность выполнения набора -// * НастройкиВыполнения - Структура - Настройки исполнения теста -// * ТестовыйМодуль - См. ОписаниеТестовогоМодуля -Функция ОписаниеИсполняемогоНабораТестов(НаборТестов, ТестовыйМодуль) Экспорт - - Описание = Новый Структура(); - - Описание.Вставить("Имя", НаборТестов.Имя); - Описание.Вставить("Представление", НаборТестов.Представление); - Описание.Вставить("Теги", НаборТестов.Теги); - Описание.Вставить("Ошибки", ЮТОбщий.СкопироватьМассив(НаборТестов.Ошибки)); - Описание.Вставить("Режим", ""); - Описание.Вставить("ТестовыйМодуль", ТестовыйМодуль); - Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля); - Описание.Вставить("Тесты", Новый Массив); - Описание.Вставить("Выполнять", Описание.Ошибки.Количество() = 0); - Описание.Вставить("ДатаСтарта", 0); - Описание.Вставить("Длительность", 0); - Описание.Вставить("НастройкиВыполнения", НаборТестов.НастройкиВыполнения); - - Возврат Описание; - -КонецФункции - -// ОписаниеИсполняемогоТеста -// Возвращает описание исполняемого теста -// Содержит данные необходимые для выполнения прогона тестов -// -// Параметры: -// Тест - См. ОписаниеТеста -// Режим - См. КонтекстыВызова -// ТестовыйМодуль - См. ОписаниеТестовогоМодуля -// -// Возвращаемое значение: -// Структура - Описание исполняемого теста: -// * Имя - Строка - Имя/представление теста -// * Метод - Строка - Имя тестового метода -// * ПолноеИмяМетода - Строка - Полное имя тестового метода, ИмяМодуля.ИмяМетода -// * Теги - Массив из Строка - Теги теста -// * Режим - Строка - Режим исполнения теста, см. КонтекстыВызова -// * ДатаСтарта - Число - Дата запуска теста -// * Длительность - Число - Продолжительность выполнения теста -// * Статус - Строка - Статус выполнения теста, см. СтатусыИсполненияТеста -// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста, см. ЮТФабрика.ОписаниеВозникшейОшибки -// * НастройкиВыполнения- Структура - Настройки исполнения теста -// * Параметры - Неопределено, Массив из Произвольный - Набор параметров теста -// * НомерВНаборе - Число - Порядковый номер теста в наборе -Функция ОписаниеИсполняемогоТеста(Тест, Режим, ТестовыйМодуль) Экспорт - - ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, Тест.Имя); - Представление = ПредставлениеТеста(Тест); - - ОписаниеТеста = Новый Структура; - ОписаниеТеста.Вставить("Имя", Представление); - ОписаниеТеста.Вставить("Метод", Тест.Имя); - ОписаниеТеста.Вставить("ПолноеИмяМетода", ПолноеИмяМетода); - ОписаниеТеста.Вставить("Теги", Тест.Теги); - ОписаниеТеста.Вставить("Режим", Режим); - ОписаниеТеста.Вставить("ДатаСтарта", 0); - ОписаниеТеста.Вставить("Длительность", 0); - ОписаниеТеста.Вставить("Статус", СтатусыИсполненияТеста().Ожидание); - ОписаниеТеста.Вставить("Ошибки", Новый Массив); - ОписаниеТеста.Вставить("НастройкиВыполнения", Тест.НастройкиВыполнения); - ОписаниеТеста.Вставить("Параметры", Тест.Параметры); - ОписаниеТеста.Вставить("НомерВНаборе", Тест.НомерВНаборе); - - //@skip-check constructor-function-return-section - Возврат ОписаниеТеста; - -КонецФункции - // ПараметрыЗапуска -// Набор параметров подсистемы тестирования. +// Набор параметров подсистемы тестирования. // Параметры на английском, чтобы не держать несколько реализаций чтения и обработки параметров -// +// // Возвращаемое значение: // Структура - Параметры: // * ВыполнятьМодульноеТестирование - Булево - Признак необходимости выполнения тестов @@ -407,14 +118,14 @@ // * filter - см. ПараметрыФильтрации // * settings - см. НастройкиВыполнения // * closeAfterTests - Булево - Признак необходимости закрытия приложения по окончании прогона -// * reportFormat - Строка - Формат отчета о тестировании. +// * reportFormat - Строка - Формат отчета о тестировании. // Модули реализующие различные форматы отчетов собраны в подсистеме ЮТФормированиеОтчета // * logging - см. ПараметрыЛогирования // * showReport - Булево - Признак необходмости отобразить отчет в 1с по окончании тестирования // * exitCode - Строка - Путь к файлу, в который будет записан коды выхода // * ПодключатьВнешниеКомпоненты - Булево - Выполнять установку и подключение внешних компонент при старте. -// Если выключено и включен запрет синхронных вызовов, то компоненты не будут доступы в тонком клиенте. -// Если выключено и разрешены синхронные вызовы, то компоненты можно установить вручную и тогда они будут доступны на клиенте. +// Если выключено и включен запрет синхронных вызовов, то компоненты не будут доступы в тонком клиенте. +// Если выключено и разрешены синхронные вызовы, то компоненты можно установить вручную и тогда они будут доступны на клиенте. Функция ПараметрыЗапуска() Экспорт Параметры = Новый Структура; @@ -436,283 +147,13 @@ КонецФункции -// ОписаниеКонтекстаОшибки -// Возвращает описание деталей/расшифровки ошибки -// Возвращаемое значение: -// Структура - Детали ошибки: -// * ОшибкаУтверждения - Булево - Признак, это ошибка проверки утверждения -// * ПроверяемоеЗначение - Произвольный - Фактическое значение -// * ОжидаемоеЗначение - Произвольный - Ожидаемое значение -// * Сообщение - Строка -Функция ОписаниеКонтекстаОшибки() Экспорт - - Описание = Новый Структура("ПроверяемоеЗначение, ОжидаемоеЗначение"); - Описание.Вставить("ОшибкаУтверждения", Ложь); - Описание.Вставить("Сообщение", ""); - - //@skip-check constructor-function-return-section - Возврат Описание; - -КонецФункции - -// ОписаниеМодуля -// Возвращает структуру описания модуля -// Возвращаемое значение: -// Структура - Описание модуля: -// * Имя - Строка - Имя модуля -// * ПолноеИмя - Строка - Полное имя модуля -// * Расширение - Строка - Имя расширения, владельца модуля -// * КлиентУправляемоеПриложение - Булево - Доступность контекста -// * КлиентОбычноеПриложение - Булево - Доступность контекста -// * Сервер - Булево - Доступность контекста -// * ВызовСервера - Булево - Доступность контекста -// * Глобальный - Булево - Доступность контекста -Функция ОписаниеМодуля() Экспорт - - Описание = Новый Структура; - Описание.Вставить("Имя", ""); - Описание.Вставить("ПолноеИмя", ""); - Описание.Вставить("Расширение", ""); - Описание.Вставить("КлиентУправляемоеПриложение", Ложь); - Описание.Вставить("КлиентОбычноеПриложение", Ложь); - Описание.Вставить("Сервер", Ложь); - Описание.Вставить("ВызовСервера", Ложь); - Описание.Вставить("Глобальный", Ложь); - - Возврат Описание; - -КонецФункции - -// ОписаниеВозникшейОшибки -// Возвращает базовую структуру ошибки -// -// Параметры: -// Сообщение - Строка -// -// Возвращаемое значение: -// Структура - Описание возникшей ошибки: -// * Сообщение - Строка - Описание возникшей ошибки -// * Стек - Строка - Стек возникшей ошибки -// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрика.ТипыОшибок -Функция ОписаниеВозникшейОшибки(Сообщение) Экспорт - - Возврат Новый Структура("Сообщение, Стек, ТипОшибки", Сообщение, "", ""); - -КонецФункции - -// Возвращает базовую структуру ошибки проверки факта и ожидания -// -// Параметры: -// Сообщение - Строка -// -// Возвращаемое значение: -// Структура - Описание возникшей ошибки: -// * Сообщение - Строка - Описание возникшей ошибки -// * Стек - Строка - Стек возникшей ошибки -// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрика.ТипыОшибок -// * ПроверяемоеЗначение - Произвольный - Проверяемое, фактическое значение -// * ОжидаемоеЗначение - Произвольный - Ожидаемое значение -Функция ОписаниеОшибкиСравнения(Сообщение) Экспорт - - Описание = ОписаниеВозникшейОшибки(Сообщение); - Описание.ТипОшибки = ТипыОшибок().Утверждений; - Описание.Вставить("ПроверяемоеЗначение"); - Описание.Вставить("ОжидаемоеЗначение"); - - //@skip-check constructor-function-return-section - Возврат Описание; - -КонецФункции - -// Возвращает базовую структуру ошибки пропуска теста -// -// Параметры: -// Сообщение - Строка -// -// Возвращаемое значение: -// Структура - Описание возникшей ошибки: -// * Сообщение - Строка - Описание возникшей ошибки -// * Стек - Строка - Стек возникшей ошибки -// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения -// См. ЮТФабрика.ТипыОшибок -Функция ОписаниеОшибкиПропуска(Сообщение) Экспорт - - Описание = ОписаниеВозникшейОшибки(Сообщение); - Описание.ТипОшибки = ТипыОшибок().Пропущен; - - Возврат Описание; - -КонецФункции - -// Описание события исполнения тестов. -// -// Параметры: -// Модуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста -// -// Возвращаемое значение: -// Структура - Описание события исполнения тестов: -// * Модуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// * Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// * Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста -Функция ОписаниеСобытияИсполненияТестов(Модуль, Набор = Неопределено, Тест = Неопределено) Экспорт - - Описание = Новый Структура(); - Описание.Вставить("Модуль", Модуль); - Описание.Вставить("Набор", Набор); - Описание.Вставить("Тест", Тест); - - //@skip-check constructor-function-return-section - Возврат Описание; - -КонецФункции - -// Описание категория набора тестов. -// -// Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// -// Возвращаемое значение: -// Структура - Описание категория набора тестов: -// * ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля -// * Клиентские - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// * Серверные - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -// * Пропущенные - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -Функция ОписаниеКатегорияНабораТестов(ТестовыйМодуль) Экспорт - - КатегорииНаборов = Новый Структура(); - КатегорииНаборов.Вставить("ТестовыйМодуль", ТестовыйМодуль); - КатегорииНаборов.Вставить("Клиентские", Новый Массив()); - КатегорииНаборов.Вставить("Серверные", Новый Массив()); - КатегорииНаборов.Вставить("Пропущенные", Новый Массив()); - - //@skip-check constructor-function-return-section - Возврат КатегорииНаборов; - -КонецФункции - -// Формирует описание проверяемого значения. -// Используется в утверждения для формирования дружелюбного сообщения об ошибке. -// -// Параметры: -// ПроверяемоеЗначение - Произвольный - Проверяемое значение -// -// Возвращаемое значение: -// Структура - Описание проверяемого значения: -// * Значение - Произвольный -// * Представление - Строка - Представление объекта -// - Неопределено - Если не указано тогда используется платформенное предсталение (`Строка(Значение)`) -// * ИмяСвойства - Строка, Число, Неопределено - Имя проверяемого реквизита, индекса -Функция ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение) Экспорт - - Описание = Новый Структура(); - Описание.Вставить("Значение", ПроверяемоеЗначение); - Описание.Вставить("Представление", Неопределено); - Описание.Вставить("ИмяСвойства", Неопределено); - - Возврат Описание; - -КонецФункции - -// Описание проверки. -// -// Параметры: -// ПроверяемоеЗначение - Произвольный -// -// Возвращаемое значение: -// Структура - Описание проверки: -// * ОбъектПроверки - см. ОписаниеПроверяемогоЗначения -// * ПрефиксОшибки - Строка, Неопределено - -// * ОписаниеПроверки - Строка, Неопределено - -Функция ОписаниеПроверки(ПроверяемоеЗначение) Экспорт - - Описание = Новый Структура(); - Описание.Вставить("ОбъектПроверки", ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение)); - Описание.Вставить("ПрефиксОшибки", Неопределено); - Описание.Вставить("ОписаниеПроверки", Неопределено); - - Возврат Описание; - -КонецФункции - -// Описание реквизита объекта метаданных -// -// Параметры: -// Реквизит - ОбъектМетаданных -// ЭтоКлюч - Булево - Это ключевой реквизит (ссылка, измерение) -// -// Возвращаемое значение: -// Структура - Описание реквизита: -// * Имя - Строка -// * Тип - ОписаниеТипов -// * Обязательный - Булево -// * ЭтоКлюч - Булево -Функция ОписаниеРеквизита(Знач Реквизит, Знач ЭтоКлюч) Экспорт - - Описание = Новый Структура(); - Описание.Вставить("Имя", Реквизит.Имя); - Описание.Вставить("Тип", Реквизит.Тип); - Описание.Вставить("Обязательный", Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку); - Описание.Вставить("ЭтоКлюч", ЭтоКлюч); - - Возврат Описание; - -КонецФункции - -#КонецОбласти - -#Область КонструкторыКонтекстов - -// Данные контекста исполнения. -// -// Возвращаемое значение: -// Структура - Данные контекста исполнения: -// * Уровень - Строка - Возможные значения см. УровниИсполнения -// * Модуль - Неопределено - Нет исполняемого модуля -// - см. ОписаниеТестовогоМодуля -// * Набор - Неопределено - Нет исполняемого тестового набора -// - см. ОписаниеИсполняемогоНабораТестов -// * Тест - Неопределено - Нет исполняемого теста -// - см. ОписаниеИсполняемогоТеста -Функция НовыйКонтекстИсполнения() Экспорт - - Контекст = Новый Структура(); - Контекст.Вставить("Уровень", ""); - Контекст.Вставить("Модуль", Неопределено); - Контекст.Вставить("Набор", Неопределено); - Контекст.Вставить("Тест", Неопределено); - - Возврат Контекст; - -КонецФункции - -// Описание результата проверки. -// -// Параметры: -// Успешно - Булево - Успешно -// -// Возвращаемое значение: -// Структура - Описание результата проверки: -// * Сообщения - Массив из Произвольный -// * Успешно - Булево -Функция ОписаниеРезультатаПроверки(Успешно = Истина) Экспорт - - Описание = Новый Структура(); - Описание.Вставить("Сообщения", Новый Массив); - Описание.Вставить("Успешно", Истина); - - Возврат Описание; - -КонецФункции - // Выражение предиката. -// +// // Параметры: // ВидСравнения - Строка - см. ЮТПредикаты.Выражения // ИмяРеквизита - Строка - Имя реквизита // Значение - Произвольный - Значение -// +// // Возвращаемое значение: // Структура - Выражение предиката: // * ИмяРеквизита - Неопределено, Строка - Имя проверяемого реквизита @@ -731,121 +172,43 @@ КонецФункции -#КонецОбласти - -// КонтекстыМодуля -// Возвращает коллекцию доступных контекстов выполнения модуля -// Параметры: -// Модуль - См. ОписаниеМодуля -// -// Возвращаемое значение: -// Массив из Строка - Контексты модуля, возможные значения см. КонтекстыВызова -Функция КонтекстыМодуля(Модуль) Экспорт - - Контексты = КонтекстыВызова(); - - КонтекстыМодуля = Новый Массив(); - - Если Модуль.Сервер Тогда - КонтекстыМодуля.Добавить(Контексты.Сервер); - КонецЕсли; - - Если Модуль.КлиентУправляемоеПриложение Тогда - КонтекстыМодуля.Добавить(Контексты.КлиентУправляемоеПриложение); - КонецЕсли; - - Если Модуль.КлиентОбычноеПриложение Тогда - КонтекстыМодуля.Добавить(Контексты.КлиентОбычноеПриложение); - КонецЕсли; - - Возврат КонтекстыМодуля; - -КонецФункции - -// КонтекстыПриложения -// Возвращает коллекцию доступных контекстов приложения +// Доступные параметры (настройки) исполнения тестов +// // Возвращаемое значение: -// Массив из Строка - Контексты приложения, возможные значения см. КонтекстыВызова -Функция КонтекстыПриложения() Экспорт - -#Если НЕ Клиент Тогда - ВызватьИсключение "Метод получения контекстов приложения должен вызываться с клиента"; -#КонецЕсли - - Контексты = КонтекстыВызова(); - КонтекстыПриложения = Новый Массив(); - - КонтекстыПриложения.Добавить(Контексты.Сервер); - КонтекстыПриложения.Добавить(Контексты.ВызовСервера); - -#Если ТолстыйКлиентОбычноеПриложение Тогда - КонтекстыПриложения.Добавить(Контексты.КлиентОбычноеПриложение); -#ИначеЕсли ТолстыйКлиентУправляемоеПриложение Или ТонкийКлиент Тогда - КонтекстыПриложения.Добавить(Контексты.КлиентУправляемоеПриложение); -#КонецЕсли +// ФиксированнаяСтруктура - Параметры исполнения теста: +// * ВТранзакции - Строка - Тест должен выполняться в транзакции +// * УдалениеТестовыхДанных - Строка - Тест должен удалить созданные тестовые данные +// * Перед - Строка - Перед тестом должен выполниться указанный обработчик события вместо основного +// * После - Строка - После теста должен выполниться указанный обработчик события вместо основного +Функция ПараметрыИсполненияТеста() Экспорт - Возврат КонтекстыПриложения; + Параметры = Новый Структура(); + Параметры.Вставить("ВТранзакции", "ВТранзакции"); + Параметры.Вставить("УдалениеТестовыхДанных", "УдалениеТестовыхДанных"); + Параметры.Вставить("Перед", "Перед"); + Параметры.Вставить("После", "После"); -КонецФункции - -// КонтекстИсполнения -// Возвращает контекст исполнения по контексту вызова -// Параметры: -// КонтекстВызова - Строка - Контекст вызова, см. ЮТФабрика.КонтекстыВызова -// -// Возвращаемое значение: -// Неопределено, Строка - Контекст исполнения -Функция КонтекстИсполнения(КонтекстВызова) Экспорт - - КонтекстыВызова = КонтекстыВызова(); - - Если КонтекстВызова = КонтекстыВызова.Сервер Тогда - - Возврат КонтекстыИсполнения().Сервер; - - ИначеЕсли КонтекстВызова = КонтекстыВызова.КлиентУправляемоеПриложение - ИЛИ КонтекстВызова = КонтекстыВызова.КлиентОбычноеПриложение - ИЛИ КонтекстВызова = КонтекстыВызова.ВызовСервера Тогда - - Возврат КонтекстыИсполнения().Клиент; - - Иначе - - Возврат Неопределено; - - КонецЕсли; + Возврат Новый ФиксированнаяСтруктура(Параметры); КонецФункции -// Формирует представление теста +// Параметры создания объектов, используется при загрузке макетов. // // Параметры: -// Тест - см. ОписаниеТеста +// ПараметрыЗаписи - см. ЮТОбщий.ПараметрыЗаписи +// ФикцияОбязательныхПолей - Булево - Фикция обязательных полей // // Возвращаемое значение: -// Строка - Представление теста -Функция ПредставлениеТеста(Тест) Экспорт - - Если ЗначениеЗаполнено(Тест.Представление) Тогда - Представление = Тест.Представление; - ИначеЕсли ЗначениеЗаполнено(Тест.Параметры) Тогда - ПредставлениеПараметров = СтрСоединить(Тест.Параметры, ", "); - Представление = СтрШаблон("%1(%2)", Тест.Имя, ПредставлениеПараметров); - Иначе - Представление = Тест.Имя; - КонецЕсли; - - Возврат Представление; - -КонецФункции - +// Структура - Параметры создания объектов: +// * ФикцияОбязательныхПолей - Булево +// * ПараметрыЗаписи - см. ЮТОбщий.ПараметрыЗаписи Функция ПараметрыСозданияОбъектов(Знач ПараметрыЗаписи = Неопределено, ФикцияОбязательныхПолей = Ложь) Экспорт Если ПараметрыЗаписи = Неопределено Тогда - ПараметрыЗаписи = ПараметрыЗаписи(); + ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи(); Иначе ВходныеПараметрыЗаписи = ПараметрыЗаписи; - ПараметрыЗаписи = ПараметрыЗаписи(); + ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи(); ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ВходныеПараметрыЗаписи); КонецЕсли; @@ -853,64 +216,6 @@ КонецФункции -Функция ПараметрыЗаполненияТаблицыЗначений(Знач ПараметрыСозданияОбъектов = Неопределено) Экспорт - - Если ПараметрыСозданияОбъектов = Неопределено Тогда - ПараметрыСозданияОбъектов = ПараметрыСозданияОбъектов(); - Иначе - ВходныеПараметрыСозданияОбъектов = ПараметрыСозданияОбъектов; - ПараметрыСозданияОбъектов = ПараметрыСозданияОбъектов(); - ЗаполнитьЗначенияСвойств(ПараметрыСозданияОбъектов, ВходныеПараметрыСозданияОбъектов); - КонецЕсли; - - Возврат Новый ФиксированнаяСтруктура("СозданиеОбъектовМетаданных", ПараметрыСозданияОбъектов); - -КонецФункции - -// Параметры генератора отчета. -// Описывает предоставляемые модулем форматы отчетов -// -// Возвращаемое значение: -// Структура - Параметры генератора отчета: -// * Форматы - Структура - Форматы отчетов, предоставляемые модулем -Функция ПараметрыГенератораОтчета() Экспорт - - Параметры = Новый Структура(); - Параметры.Вставить("Форматы", Новый Структура); - - Возврат Параметры; - -КонецФункции - -// Описание формата отчета. -// -// Параметры: -// Идентификатор - Строка - Уникальный идентификатор формата отчета -// Представление - Строка - Пользовательское представление отчета, выводится в форму настроек тестирования -// -// Возвращаемое значение: -// Структура - Описание формата отчета: -// * Идентификатор - Строка - Уникальный идентификатор формата отчета -// * Представление - Строка - Пользовательское представление отчета, выводится в форму настроек тестирования -// * ЗаписьВКаталог - Булево - Отчет записывается в каталог, в этом случае должен быть установлен призак `СамостоятельнаяЗаписьОтчета` -// * ФильтрВыбораФайла - Строка - Фильтр выбора, используется в форме настроек тестирования -// * ИмяФайлаПоУмолчанию - Строка - Для отчетов, записываемых в файл, имя файла если в параметрах указан каталог -// * СамостоятельнаяЗаписьОтчета - Булево - Способ записи отчета в файлы. -// Истина - Модуль формирования отчета самостоятельно записывает отчет -// Ложь - Модуль формирования отчета генерирует данные, которые записываются движком -Функция ОписаниеФорматаОтчета(Идентификатор, Представление) Экспорт - - Описание = Новый Структура(); - Описание.Вставить("Идентификатор", Идентификатор); - Описание.Вставить("Представление", Представление); - Описание.Вставить("ЗаписьВКаталог", Ложь); - Описание.Вставить("ФильтрВыбораФайла", ""); - Описание.Вставить("ИмяФайлаПоУмолчанию", ""); - Описание.Вставить("СамостоятельнаяЗаписьОтчета", Ложь); - - Возврат Описание; - -КонецФункции #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -927,7 +232,7 @@ // - Массив из Строка - Список тестовых наборов // * paths - Неопределено - Нет фильтрации по путям // - Массив из Строка - Список путей до тестовых методов, путь может быть не полным. -// Например: +// Например: // + tests - Ищем тесты в расширении tests // + tests.ОМ_ОбщегоНазначения - Ищем тесты в модуле ОМ_ОбщегоНазначения расширения tests // + tests.ОМ_ОбщегоНазначения.ПолучитьЗначениеРеквизита - указание конкретного теста diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260.mdo" index d54ed7e29..decc718b5 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260.mdo" @@ -1,5 +1,5 @@ - + ЮТФабрика ru diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 000000000..c7d3fb6a5 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,684 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +#Область Перечисления + +// Типы ошибок. +// +// Возвращаемое значение: +// ФиксированнаяСтруктура - Типы возможных ошибок: +// * ТестНеРеализован - Строка +// * ОшибкаСравнения - Строка +// * ОшибкаОбработкиСобытия - Строка +// * Утверждений - Строка +// * Исполнения - Строка +// * ЧтенияТестов - Строка +// * МалоПараметров - Строка +// * МногоПараметров - Строка +// * НекорректныйКонтекстИсполнения - Строка +// * Пропущен - Строка +Функция ТипыОшибок() Экспорт + + Типы = Новый Структура; + + Для Каждого ТипОшибки Из ПараметрыТиповОшибок() Цикл + Типы.Вставить(ТипОшибки.Ключ, ТипОшибки.Ключ); + КонецЦикла; + + //@skip-check constructor-function-return-section + Возврат Новый ФиксированнаяСтруктура(Типы); + +КонецФункции + +Функция ПараметрыТиповОшибок(Кешировать = Истина) Экспорт + + Если Кешировать Тогда + ЮТСлужебныйПовторногоИспользования.ПараметрыТиповОшибок(); + КонецЕсли; + + Статусы = ЮТФабрика.СтатусыИсполненияТеста(); + Реквизиты = "Ключ, Представление, Статус"; + + ТипыОшибок = Новый Массив(); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ТестНеРеализован", "Не реализован", Статусы.НеРеализован)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ОшибкаСравнения", "Ошибка сравнения", Статусы.Ошибка)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ОшибкаОбработкиСобытия", "Ошибка обработки события", Статусы.Сломан)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Утверждений", "Ошибка утверждений", Статусы.Ошибка)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Исполнения", "Ошибка исполнения", Статусы.Сломан)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ЧтенияТестов", "Загрузки тестов", Статусы.Сломан)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "МалоПараметров", "Мало фактических параметров", Статусы.Сломан)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "МногоПараметров", "Много фактических параметров", Статусы.Сломан)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "НекорректныйКонтекстИсполнения", "Некорректный контекст исполнения", Статусы.Пропущен)); + ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Пропущен", "Пропущен", Статусы.Пропущен)); + + Возврат ЮТКоллекции.ВСтруктуру(ТипыОшибок, "Ключ"); + +КонецФункции + +#КонецОбласти + +#Область СтруктурыДанных + +// Описание тестового модуля. +// +// Параметры: +// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// НаборыТестов - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора +// +// Возвращаемое значение: +// Структура - Описание тестового модуля: +// * МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// * НаборыТестов - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора +// * Ошибки - Массив из см. ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки +// * НастройкиВыполнения- Структура - Настройки исполнения теста +Функция ОписаниеТестовогоМодуля(МетаданныеМодуля, НаборыТестов) Экспорт + + Описание = Новый Структура; + Описание.Вставить("МетаданныеМодуля", МетаданныеМодуля); + Описание.Вставить("НаборыТестов", НаборыТестов); + Описание.Вставить("Ошибки", Новый Массив); + Описание.Вставить("НастройкиВыполнения", Новый Структура()); + + Возврат Описание; + +КонецФункции + +// ОписаниеТестовогоНабора +// Возвращает описание регистрируемого тестового набора. +// Эта структура используется на этапе формирования описаний имеющихся тестов +// Параметры: +// Имя - Строка - Имя набора +// ТегиСтрокой - Строка - Теги набора +// +// Возвращаемое значение: +// Структура - Описание тестового набора: +// * Имя - Строка - Имя набора +// * Представление - Строка - Представление, краткое описание +// * Теги - Массив из Строка - Коллекция тегов набора +// * Тесты - Массив из см. ОписаниеТеста - Коллекция тестов набора, см. ОписаниеТеста +// * Ошибки - Массив из см. ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки - Описания ошибок регистрации тестов +// * НастройкиВыполнения- Структура - Настройки исполнения теста +Функция ОписаниеТестовогоНабора(Имя, ТегиСтрокой = "") Экспорт + + Описание = Новый Структура; + Описание.Вставить("Имя", Строка(Имя)); + Описание.Вставить("Представление", Строка(Имя)); + Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь)); + Описание.Вставить("Тесты", Новый Массив); + Описание.Вставить("Ошибки", Новый Массив); + Описание.Вставить("НастройкиВыполнения", Новый Структура()); + + Возврат Описание; + +КонецФункции + +// ОписаниеТеста +// Возвращает описание регистрируемого теста. +// Эта структура используется на этапе формирования описаний имеющихся тестов +// Параметры: +// Имя - Строка - Имя тестового метода +// Представление - Строка - Представление, краткое описание теста +// КонтекстыВызова - Массив из Строка - Контексты исполнения теста, см. ЮТФабрика.КонтекстыВызова +// ТегиСтрокой - Строка - Теги теста +// +// Возвращаемое значение: +// Структура - Описание теста: +// * Имя - Строка - Имя теста (тестового метода) +// * Представление - Строка - Представление теста +// * Теги - Массив из Строка - Теги теста +// * КонтекстВызова - Массив из Строка - Контексты исполнения теста +// * НастройкиВыполнения- Структура - Настройки исполнения теста +// * Параметры - Неопределено, Массив из Произвольный - Параметры теста +// * НомерВНаборе - Число - Порядковый номер теста в наборе +Функция ОписаниеТеста(Имя, Представление, КонтекстыВызова, Знач ТегиСтрокой = "") Экспорт + + Если ТегиСтрокой = Неопределено Тогда + ТегиСтрокой = ""; + КонецЕсли; + + Описание = Новый Структура(); + Описание.Вставить("Имя", Строка(Имя)); + Описание.Вставить("Представление", Строка(Представление)); + Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь)); + Описание.Вставить("КонтекстВызова", КонтекстыВызова); + Описание.Вставить("НастройкиВыполнения", Новый Структура()); + Описание.Вставить("Параметры", Неопределено); + Описание.Вставить("НомерВНаборе", 0); + + Возврат Описание; + +КонецФункции + +// Описание исполняемого тестового модуля. +// Содержит всю необходимую информацию для прогона тестов, а также данные результата +// Параметры: +// ТестовыйМодуль - см. ОписаниеТестовогоМодуля +// +// Возвращаемое значение: +// Структура - Описание тестового модуля: +// * МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// * НаборыТестов - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// * Ошибки - Массив из см. ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки +// * НастройкиВыполнения- Структура - Настройки исполнения теста +Функция ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль) Экспорт + + Описание = Новый Структура; + + Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля); + Описание.Вставить("НаборыТестов", Новый Массив); + Описание.Вставить("Ошибки", ЮТКоллекции.СкопироватьМассив(ТестовыйМодуль.Ошибки)); + Описание.Вставить("НастройкиВыполнения", ЮТКоллекции.СкопироватьСтруктуру(ТестовыйМодуль.НастройкиВыполнения)); + + Возврат Описание; + +КонецФункции + +// ОписаниеИсполняемогоНабораТестов +// Возвращает описание исполняемого тестового набора. +// Содержит данные необходимые для выполнения прогона тестов +// Параметры: +// НаборТестов - См. ОписаниеТестовогоНабора +// ТестовыйМодуль - См. ОписаниеТестовогоМодуля +// +// Возвращаемое значение: +// Структура - Описание исполняемого набора тестов: +// * Имя - Строка - Имя набора +// * Представление - Строка - Представление набора +// * Теги - Массив из Строка - Тэги набора +// * Ошибки - Массив из см. ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста +// * Режим - Строка - Режим исполнения набора, см. ЮТФабрика.КонтекстыВызова +// * МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// * Тесты - Массив из см. ОписаниеИсполняемогоТеста - Тесты набора, структуру тестов см. ОписаниеИсполняемогоТеста +// * Выполнять - Булево - Признак, что можно выполнить прогон набора (нет ошибок блокирующих запуск) +// * ДатаСтарта - Число - Дата запуска набора +// * Длительность - Число - Продолжительность выполнения набора +// * НастройкиВыполнения - Структура - Настройки исполнения теста +// * ТестовыйМодуль - См. ОписаниеТестовогоМодуля +Функция ОписаниеИсполняемогоНабораТестов(НаборТестов, ТестовыйМодуль) Экспорт + + Описание = Новый Структура(); + + Описание.Вставить("Имя", НаборТестов.Имя); + Описание.Вставить("Представление", НаборТестов.Представление); + Описание.Вставить("Теги", НаборТестов.Теги); + Описание.Вставить("Ошибки", ЮТКоллекции.СкопироватьМассив(НаборТестов.Ошибки)); + Описание.Вставить("Режим", ""); + Описание.Вставить("ТестовыйМодуль", ТестовыйМодуль); + Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля); + Описание.Вставить("Тесты", Новый Массив); + Описание.Вставить("Выполнять", Описание.Ошибки.Количество() = 0); + Описание.Вставить("ДатаСтарта", 0); + Описание.Вставить("Длительность", 0); + Описание.Вставить("НастройкиВыполнения", НаборТестов.НастройкиВыполнения); + + Возврат Описание; + +КонецФункции + +// ОписаниеИсполняемогоТеста +// Возвращает описание исполняемого теста +// Содержит данные необходимые для выполнения прогона тестов +// +// Параметры: +// Тест - См. ОписаниеТеста +// Режим - См. ЮТФабрика.КонтекстыВызова +// ТестовыйМодуль - См. ОписаниеТестовогоМодуля +// +// Возвращаемое значение: +// Структура - Описание исполняемого теста: +// * Имя - Строка - Имя/представление теста +// * Метод - Строка - Имя тестового метода +// * ПолноеИмяМетода - Строка - Полное имя тестового метода, ИмяМодуля.ИмяМетода +// * Теги - Массив из Строка - Теги теста +// * Режим - Строка - Режим исполнения теста, см. ЮТФабрика.КонтекстыВызова +// * ДатаСтарта - Число - Дата запуска теста +// * Длительность - Число - Продолжительность выполнения теста +// * Статус - Строка - Статус выполнения теста, см. ЮТФабрика.СтатусыИсполненияТеста +// * Ошибки - Массив из см. ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста, см. ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки +// * НастройкиВыполнения- Структура - Настройки исполнения теста +// * Параметры - Неопределено, Массив из Произвольный - Набор параметров теста +// * НомерВНаборе - Число - Порядковый номер теста в наборе +Функция ОписаниеИсполняемогоТеста(Тест, Режим, ТестовыйМодуль) Экспорт + + ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, Тест.Имя); + Представление = ПредставлениеТеста(Тест); + + ОписаниеТеста = Новый Структура; + ОписаниеТеста.Вставить("Имя", Представление); + ОписаниеТеста.Вставить("Метод", Тест.Имя); + ОписаниеТеста.Вставить("ПолноеИмяМетода", ПолноеИмяМетода); + ОписаниеТеста.Вставить("Теги", Тест.Теги); + ОписаниеТеста.Вставить("Режим", Режим); + ОписаниеТеста.Вставить("ДатаСтарта", 0); + ОписаниеТеста.Вставить("Длительность", 0); + ОписаниеТеста.Вставить("Статус", ЮТФабрика.СтатусыИсполненияТеста().Ожидание); + ОписаниеТеста.Вставить("Ошибки", Новый Массив); + ОписаниеТеста.Вставить("НастройкиВыполнения", Тест.НастройкиВыполнения); + ОписаниеТеста.Вставить("Параметры", Тест.Параметры); + ОписаниеТеста.Вставить("НомерВНаборе", Тест.НомерВНаборе); + + //@skip-check constructor-function-return-section + Возврат ОписаниеТеста; + +КонецФункции + +// ОписаниеМодуля +// Возвращает структуру описания модуля +// Возвращаемое значение: +// Структура - Описание модуля: +// * Имя - Строка - Имя модуля +// * ПолноеИмя - Строка - Полное имя модуля +// * Расширение - Строка - Имя расширения, владельца модуля +// * КлиентУправляемоеПриложение - Булево - Доступность контекста +// * КлиентОбычноеПриложение - Булево - Доступность контекста +// * Сервер - Булево - Доступность контекста +// * ВызовСервера - Булево - Доступность контекста +// * Глобальный - Булево - Доступность контекста +Функция ОписаниеМодуля() Экспорт + + Описание = Новый Структура; + Описание.Вставить("Имя", ""); + Описание.Вставить("ПолноеИмя", ""); + Описание.Вставить("Расширение", ""); + Описание.Вставить("КлиентУправляемоеПриложение", Ложь); + Описание.Вставить("КлиентОбычноеПриложение", Ложь); + Описание.Вставить("Сервер", Ложь); + Описание.Вставить("ВызовСервера", Ложь); + Описание.Вставить("Глобальный", Ложь); + + Возврат Описание; + +КонецФункции + +// ОписаниеВозникшейОшибки +// Возвращает базовую структуру ошибки +// +// Параметры: +// Сообщение - Строка - Описание ошибки +// +// Возвращаемое значение: +// Структура - Описание возникшей ошибки: +// * Сообщение - Строка - Описание возникшей ошибки +// * Стек - Строка - Стек возникшей ошибки +// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрикаСлужебный.ТипыОшибок +// * Лог - Массив из Строка +Функция ОписаниеВозникшейОшибки(Сообщение) Экспорт + + Описание = Новый Структура("Стек, ТипОшибки", "", ""); + Описание.Вставить("Сообщение", Сообщение); + Описание.Вставить("Лог", Новый Массив); + + Возврат Описание; + +КонецФункции + +// Возвращает базовую структуру ошибки проверки факта и ожидания +// +// Параметры: +// Сообщение - Строка +// +// Возвращаемое значение: +// Структура - Описание возникшей ошибки: +// * Сообщение - Строка - Описание возникшей ошибки +// * Стек - Строка - Стек возникшей ошибки +// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрикаСлужебный.ТипыОшибок +// * ПроверяемоеЗначение - Произвольный - Проверяемое, фактическое значение +// * ОжидаемоеЗначение - Произвольный - Ожидаемое значение +Функция ОписаниеОшибкиСравнения(Сообщение) Экспорт + + Описание = ОписаниеВозникшейОшибки(Сообщение); + Описание.ТипОшибки = ТипыОшибок().Утверждений; + Описание.Вставить("ПроверяемоеЗначение"); + Описание.Вставить("ОжидаемоеЗначение"); + + //@skip-check constructor-function-return-section + Возврат Описание; + +КонецФункции + +// Возвращает базовую структуру ошибки пропуска теста +// +// Параметры: +// Сообщение - Строка +// +// Возвращаемое значение: +// Структура - Описание возникшей ошибки: +// * Сообщение - Строка - Описание возникшей ошибки +// * Стек - Строка - Стек возникшей ошибки +// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения +// См. ЮТФабрикаСлужебный.ТипыОшибок +Функция ОписаниеОшибкиПропуска(Сообщение) Экспорт + + Описание = ОписаниеВозникшейОшибки(Сообщение); + Описание.ТипОшибки = ТипыОшибок().Пропущен; + + Возврат Описание; + +КонецФункции + +// Описание события исполнения тестов. +// +// Параметры: +// Модуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// Набор - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// Тест - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста +// +// Возвращаемое значение: +// Структура - Описание события исполнения тестов: +// * Модуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// * Набор - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// * Тест - см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоТеста +Функция ОписаниеСобытияИсполненияТестов(Модуль, Набор = Неопределено, Тест = Неопределено) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Модуль", Модуль); + Описание.Вставить("Набор", Набор); + Описание.Вставить("Тест", Тест); + + //@skip-check constructor-function-return-section + Возврат Описание; + +КонецФункции + +// Описание категория набора тестов. +// +// Параметры: +// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// +// Возвращаемое значение: +// Структура - Описание категория набора тестов: +// * ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +// * Клиентские - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// * Серверные - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +// * Пропущенные - Массив из см. ЮТФабрикаСлужебный.ОписаниеИсполняемогоНабораТестов +Функция ОписаниеКатегорияНабораТестов(ТестовыйМодуль) Экспорт + + КатегорииНаборов = Новый Структура(); + КатегорииНаборов.Вставить("ТестовыйМодуль", ТестовыйМодуль); + КатегорииНаборов.Вставить("Клиентские", Новый Массив()); + КатегорииНаборов.Вставить("Серверные", Новый Массив()); + КатегорииНаборов.Вставить("Пропущенные", Новый Массив()); + + //@skip-check constructor-function-return-section + Возврат КатегорииНаборов; + +КонецФункции + +// Формирует описание проверяемого значения. +// Используется в утверждения для формирования дружелюбного сообщения об ошибке. +// +// Параметры: +// ПроверяемоеЗначение - Произвольный - Проверяемое значение +// +// Возвращаемое значение: +// Структура - Описание проверяемого значения: +// * Значение - Произвольный +// * Представление - Строка - Представление объекта +// - Неопределено - Если не указано тогда используется платформенное предсталение (`Строка(Значение)`) +// * ИмяСвойства - Строка, Число, Неопределено - Имя проверяемого реквизита, индекса +Функция ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Значение", ПроверяемоеЗначение); + Описание.Вставить("Представление", Неопределено); + Описание.Вставить("ИмяСвойства", Неопределено); + + Возврат Описание; + +КонецФункции + +// Описание проверки. +// +// Параметры: +// ПроверяемоеЗначение - Произвольный +// +// Возвращаемое значение: +// Структура - Описание проверки: +// * ОбъектПроверки - см. ОписаниеПроверяемогоЗначения +// * ПрефиксОшибки - Строка, Неопределено - +// * ОписаниеПроверки - Строка, Неопределено - +Функция ОписаниеПроверки(ПроверяемоеЗначение) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("ОбъектПроверки", ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение)); + Описание.Вставить("ПрефиксОшибки", Неопределено); + Описание.Вставить("ОписаниеПроверки", Неопределено); + + Возврат Описание; + +КонецФункции + +#КонецОбласти + +#Область КонструкторыКонтекстов + +// Данные контекста исполнения. +// +// Возвращаемое значение: +// Структура - Данные контекста исполнения: +// * Уровень - Строка - Возможные значения см. ЮТФабрика.УровниИсполнения +// * Модуль - Неопределено - Нет исполняемого модуля +// - см. ОписаниеТестовогоМодуля +// * Набор - Неопределено - Нет исполняемого тестового набора +// - см. ОписаниеИсполняемогоНабораТестов +// * Тест - Неопределено - Нет исполняемого теста +// - см. ОписаниеИсполняемогоТеста +Функция НовыйКонтекстИсполнения() Экспорт + + Контекст = Новый Структура(); + Контекст.Вставить("Уровень", ""); + Контекст.Вставить("Модуль", Неопределено); + Контекст.Вставить("Набор", Неопределено); + Контекст.Вставить("Тест", Неопределено); + + Возврат Контекст; + +КонецФункции + +// Описание результата проверки. +// +// Параметры: +// Успешно - Булево - Успешно +// +// Возвращаемое значение: +// Структура - Описание результата проверки: +// * Сообщения - Массив из Произвольный +// * Успешно - Булево +Функция ОписаниеРезультатаПроверки(Успешно = Истина) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Сообщения", Новый Массив); + Описание.Вставить("Успешно", Истина); + + Возврат Описание; + +КонецФункции + +#КонецОбласти + +// КонтекстыМодуля +// Возвращает коллекцию доступных контекстов выполнения модуля +// Параметры: +// Модуль - См. ОписаниеМодуля +// +// Возвращаемое значение: +// Массив из Строка - Контексты модуля, возможные значения см. ЮТФабрика.КонтекстыВызова +Функция КонтекстыМодуля(Модуль) Экспорт + + Контексты = ЮТФабрика.КонтекстыВызова(); + + КонтекстыМодуля = Новый Массив(); + + Если Модуль.Сервер Тогда + КонтекстыМодуля.Добавить(Контексты.Сервер); + КонецЕсли; + + Если Модуль.КлиентУправляемоеПриложение Тогда + КонтекстыМодуля.Добавить(Контексты.КлиентУправляемоеПриложение); + КонецЕсли; + + Если Модуль.КлиентОбычноеПриложение Тогда + КонтекстыМодуля.Добавить(Контексты.КлиентОбычноеПриложение); + КонецЕсли; + + Возврат КонтекстыМодуля; + +КонецФункции + +// КонтекстыПриложения +// Возвращает коллекцию доступных контекстов приложения +// Возвращаемое значение: +// Массив из Строка - Контексты приложения, возможные значения см. ЮТФабрика.КонтекстыВызова +Функция КонтекстыПриложения() Экспорт + +#Если НЕ Клиент Тогда + ВызватьИсключение "Метод получения контекстов приложения должен вызываться с клиента"; +#КонецЕсли + + Контексты = ЮТФабрика.КонтекстыВызова(); + КонтекстыПриложения = Новый Массив(); + + КонтекстыПриложения.Добавить(Контексты.Сервер); + КонтекстыПриложения.Добавить(Контексты.ВызовСервера); + +#Если ТолстыйКлиентОбычноеПриложение Тогда + КонтекстыПриложения.Добавить(Контексты.КлиентОбычноеПриложение); +#ИначеЕсли ТолстыйКлиентУправляемоеПриложение Или ТонкийКлиент Тогда + КонтекстыПриложения.Добавить(Контексты.КлиентУправляемоеПриложение); +#КонецЕсли + + Возврат КонтекстыПриложения; + +КонецФункции + +// КонтекстИсполнения +// Возвращает контекст исполнения по контексту вызова +// Параметры: +// КонтекстВызова - Строка - Контекст вызова, см. ЮТФабрика.КонтекстыВызова +// +// Возвращаемое значение: +// Неопределено, Строка - Контекст исполнения +Функция КонтекстИсполнения(КонтекстВызова) Экспорт + + КонтекстыВызова = ЮТФабрика.КонтекстыВызова(); + + Если КонтекстВызова = КонтекстыВызова.Сервер Тогда + + Возврат ЮТФабрика.КонтекстыИсполнения().Сервер; + + ИначеЕсли КонтекстВызова = КонтекстыВызова.КлиентУправляемоеПриложение + ИЛИ КонтекстВызова = КонтекстыВызова.КлиентОбычноеПриложение + ИЛИ КонтекстВызова = КонтекстыВызова.ВызовСервера Тогда + + Возврат ЮТФабрика.КонтекстыИсполнения().Клиент; + + Иначе + + Возврат Неопределено; + + КонецЕсли; + +КонецФункции + +// Формирует представление теста +// +// Параметры: +// Тест - см. ОписаниеТеста +// +// Возвращаемое значение: +// Строка - Представление теста +Функция ПредставлениеТеста(Тест) Экспорт + + Если ЗначениеЗаполнено(Тест.Представление) Тогда + Представление = Тест.Представление; + ИначеЕсли ЗначениеЗаполнено(Тест.Параметры) Тогда + ПредставлениеПараметров = СтрСоединить(Тест.Параметры, ", "); + Представление = СтрШаблон("%1(%2)", Тест.Имя, ПредставлениеПараметров); + Иначе + Представление = Тест.Имя; + КонецЕсли; + + Возврат Представление; + +КонецФункции + +Функция ПараметрыЗаполненияТаблицыЗначений(Знач ПараметрыСозданияОбъектов = Неопределено) Экспорт + + Если ПараметрыСозданияОбъектов = Неопределено Тогда + ПараметрыСозданияОбъектов = ЮТФабрика.ПараметрыСозданияОбъектов(); + Иначе + ВходныеПараметрыСозданияОбъектов = ПараметрыСозданияОбъектов; + ПараметрыСозданияОбъектов = ЮТФабрика.ПараметрыСозданияОбъектов(); + ЗаполнитьЗначенияСвойств(ПараметрыСозданияОбъектов, ВходныеПараметрыСозданияОбъектов); + КонецЕсли; + + Возврат Новый ФиксированнаяСтруктура("СозданиеОбъектовМетаданных", ПараметрыСозданияОбъектов); + +КонецФункции + +// Параметры генератора отчета. +// Описывает предоставляемые модулем форматы отчетов +// +// Возвращаемое значение: +// Структура - Параметры генератора отчета: +// * Форматы - Структура - Форматы отчетов, предоставляемые модулем +Функция ПараметрыГенератораОтчета() Экспорт + + Параметры = Новый Структура(); + Параметры.Вставить("Форматы", Новый Структура); + + Возврат Параметры; + +КонецФункции + +// Описание формата отчета. +// +// Параметры: +// Идентификатор - Строка - Уникальный идентификатор формата отчета +// Представление - Строка - Пользовательское представление отчета, выводится в форму настроек тестирования +// +// Возвращаемое значение: +// Структура - Описание формата отчета: +// * Идентификатор - Строка - Уникальный идентификатор формата отчета +// * Представление - Строка - Пользовательское представление отчета, выводится в форму настроек тестирования +// * ЗаписьВКаталог - Булево - Отчет записывается в каталог, в этом случае должен быть установлен призак `СамостоятельнаяЗаписьОтчета` +// * ФильтрВыбораФайла - Строка - Фильтр выбора, используется в форме настроек тестирования +// * ИмяФайлаПоУмолчанию - Строка - Для отчетов, записываемых в файл, имя файла если в параметрах указан каталог +// * СамостоятельнаяЗаписьОтчета - Булево - Способ записи отчета в файлы. +// Истина - Модуль формирования отчета самостоятельно записывает отчет +// Ложь - Модуль формирования отчета генерирует данные, которые записываются движком +Функция ОписаниеФорматаОтчета(Идентификатор, Представление) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Идентификатор", Идентификатор); + Описание.Вставить("Представление", Представление); + Описание.Вставить("ЗаписьВКаталог", Ложь); + Описание.Вставить("ФильтрВыбораФайла", ""); + Описание.Вставить("ИмяФайлаПоУмолчанию", ""); + Описание.Вставить("СамостоятельнаяЗаписьОтчета", Ложь); + + Возврат Описание; + +КонецФункции +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 000000000..33ad68834 --- /dev/null +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ЮТФабрикаСлужебный + + ru + Фабрика + + true + true + true + diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl" index 1daedbb4d..caab4a5e4 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -136,7 +136,7 @@ КонецЕсли; Исключение - Ошибки.Добавить(ЮТРегистрацияОшибок.ПредставлениеОшибки("Удаление файла " + УдаляемыйФайл, ИнформацияОбОшибке())); + Ошибки.Добавить(ЮТРегистрацияОшибокСлужебный.ПредставлениеОшибки("Удаление файла " + УдаляемыйФайл, ИнформацияОбОшибке())); КонецПопытки; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 84% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index e9ee85d40..54d6fbce5 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Функция ЭтоПодходящееРасширение(ИмяРасширения) Экспорт - Контекст = ЮТКонтекст.КонтекстЧитателя(); + Контекст = ЮТКонтекстСлужебный.КонтекстЧитателя(); НормализованноеИмяРасширения = УдалитьНедопустимыеСимволыИзСтрокиКакКлючаСтруктуры(ИмяРасширения); @@ -30,7 +30,7 @@ Функция ЭтоПодходящийМодуль(ОписаниеМодуля) Экспорт - Контекст = ЮТКонтекст.КонтекстЧитателя(); + Контекст = ЮТКонтекстСлужебный.КонтекстЧитателя(); Возврат ЗначениеЗаполнено(ОписаниеМодуля.Расширение) И (НЕ Контекст.Фильтр.ЕстьФильтрМодулей ИЛИ Контекст.Фильтр.Модули.Свойство(ОписаниеМодуля.Имя)) @@ -39,16 +39,16 @@ КонецФункции // Отфильтровать тестовые наборы. -// +// // Параметры: -// ТестовыеНаборы - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора - Тестовые наборы -// ОписаниеМодуля - Структура - Описание модуля, которому принадлежат наборы, см. ЮТФабрика.ОписаниеМодуля -// +// ТестовыеНаборы - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора - Тестовые наборы +// ОписаниеМодуля - Структура - Описание модуля, которому принадлежат наборы, см. ЮТФабрикаСлужебный.ОписаниеМодуля +// // Возвращаемое значение: -// Массив из см. ЮТФабрика.ОписаниеТестовогоНабора - Отфильтрованные наборы +// Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора - Отфильтрованные наборы Функция ОтфильтроватьТестовыеНаборы(ТестовыеНаборы, ОписаниеМодуля) Экспорт - Контекст = ЮТКонтекст.КонтекстЧитателя(); + Контекст = ЮТКонтекстСлужебный.КонтекстЧитателя(); Если НЕ Контекст.Фильтр.ЕстьФильтрТестов И НЕ Контекст.Фильтр.ЕстьФильтрКонтекстов Тогда Возврат ТестовыеНаборы; @@ -69,7 +69,7 @@ Если СохраненноеОписаниеИмени = Неопределено И ОписаниеИмениТеста.Контекст = Неопределено Тогда ДоступныеТестовыеМетоды.Вставить(ВРег(ОписаниеИмениТеста.ИмяМетода), ОписаниеИмениТеста); ИначеЕсли СохраненноеОписаниеИмени = Неопределено Тогда - ОписаниеИмениТеста.Контекст = ЮТОбщий.ЗначениеВМассиве(ОписаниеИмениТеста.Контекст); + ОписаниеИмениТеста.Контекст = ЮТКоллекции.ЗначениеВМассиве(ОписаниеИмениТеста.Контекст); ДоступныеТестовыеМетоды.Вставить(ВРег(ОписаниеИмениТеста.ИмяМетода), ОписаниеИмениТеста); ИначеЕсли ОписаниеИмениТеста.Контекст = Неопределено Тогда СохраненноеОписаниеИмени.Контекст = Неопределено; // Без фильтрации контекста теста, возьмом из самого теста контексты @@ -79,14 +79,14 @@ // Если было имя теста без контекста, то будет вызов во всех контекстах КонецЕсли; КонецЕсли; - + КонецЦикла; КонецЕсли; Для Каждого Набор Из ТестовыеНаборы Цикл - ОтфильтрованныйНабор = ЮТФабрика.ОписаниеТестовогоНабора(Набор.Имя); + ОтфильтрованныйНабор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(Набор.Имя); ЗаполнитьЗначенияСвойств(ОтфильтрованныйНабор, Набор, , "Тесты"); Для Каждого Тест Из Набор.Тесты Цикл @@ -109,7 +109,7 @@ КонецЕсли; Если Контекст.Фильтр.ЕстьФильтрКонтекстов Тогда - КонтекстыТеста = ЮТОбщий.ПересечениеМассивов(КонтекстыТеста, Контекст.Фильтр.Контексты); + КонтекстыТеста = ЮТКоллекции.ПересечениеМассивов(КонтекстыТеста, Контекст.Фильтр.Контексты); КонецЕсли; Если КонтекстыТеста.Количество() = 0 Тогда @@ -117,7 +117,7 @@ Продолжить; КонецЕсли; - ОтфильтрованныйТест = ЮТФабрика.ОписаниеТеста(Тест.Имя, "", ""); + ОтфильтрованныйТест = ЮТФабрикаСлужебный.ОписаниеТеста(Тест.Имя, "", ""); ЗаполнитьЗначенияСвойств(ОтфильтрованныйТест, Тест, , "КонтекстВызова"); ОтфильтрованныйТест.КонтекстВызова = КонтекстыТеста; @@ -136,11 +136,11 @@ КонецФункции // Фильтр -// Конструктур фильтра поиска тестовых методов -// +// Конструктур фильтра поиска тестовых методов +// // Возвращаемое значение: // Структура - Фильтр: -// * Расширения - Структура - Имена расширений +// * Расширения - Структура - Имена расширений // * Модули - Структура - Имена модулей // * Наборы - Массив из Строка - Имена тестовых наборов // * Теги - Массив из Строка @@ -167,17 +167,17 @@ Процедура УстановитьКонтекст(ПараметрыЗапускаТестов) Экспорт - Расширения = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "extensions", Новый Массив); - Модули = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "modules", Новый Массив); - Контексты = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "contexts"); - Тесты = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "tests", Новый Массив); + Расширения = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "extensions", Новый Массив); + Модули = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "modules", Новый Массив); + Контексты = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "contexts"); + Тесты = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "tests", Новый Массив); - Теги = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "tags", Новый Массив); + Теги = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "tags", Новый Массив); // TODO: Подумать в каком формате задать наборы - ИмяМодуля.Набор, Набор или другой вариант - Наборы = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "suites", Новый Массив); + Наборы = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "suites", Новый Массив); // TODO: Обработка путей в формате: Модуль.ИмяТеста, ИмяТеста - метод, параметры, контекст // ОМ_ЮТУтверждения.Что[0: 1].Сервер, ОМ_ЮТУтверждения.Что[1: Структура].Сервер - Пути = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "paths", Новый Массив); + Пути = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "paths", Новый Массив); Фильтр = Фильтр(); @@ -185,7 +185,7 @@ Фильтр.Модули = МассивВСтруктуру(Модули); Если Контексты = Неопределено Тогда - Фильтр.Контексты = ЮТФабрика.КонтекстыПриложения(); + Фильтр.Контексты = ЮТФабрикаСлужебный.КонтекстыПриложения(); Иначе Фильтр.Контексты = Контексты; КонецЕсли; @@ -235,7 +235,7 @@ Фильтр.Вставить("ЕстьФильтрТестов", Фильтр.Тесты.Количество()); Фильтр.Вставить("ЕстьФильтрКонтекстов", ЗначениеЗаполнено(Фильтр.Контексты)); - ЮТКонтекст.УстановитьКонтекстЧитателя(Новый Структура("Фильтр", Фильтр)); + ЮТКонтекстСлужебный.УстановитьКонтекстЧитателя(Новый Структура("Фильтр", Фильтр)); КонецПроцедуры @@ -255,7 +255,7 @@ НормализованноеЗначение = УдалитьНедопустимыеСимволыИзСтрокиКакКлючаСтруктуры(Значение); Результат.Вставить(НормализованноеЗначение); - + КонецЦикла; Возврат Результат; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 87% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index b3bff6707..14f0c245b 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТФильтрация + ЮТФильтрацияСлужебный ru Фильтрация diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.suppress" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.suppress" deleted file mode 100644 index 2fab39597..000000000 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 65% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 5a1d74f7e..e8c93a339 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,14 +22,14 @@ // Читает наборы тестов (тестовые модули) из расширений // Параметры: // ПараметрыЗапускаТестов - см. ЮТФабрика.ПараметрыЗапуска -// +// // Возвращаемое значение: -// Массив из см. ЮТФабрика.ОписаниеТестовогоМодуля - Набор описаний тестовых модулей, которые содержат информацию о запускаемых тестах +// Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля - Набор описаний тестовых модулей, которые содержат информацию о запускаемых тестах Функция ЗагрузитьТесты(ПараметрыЗапускаТестов) Экспорт Результат = Новый Массив; - ЮТФильтрация.УстановитьКонтекст(ПараметрыЗапускаТестов); + ЮТФильтрацияСлужебный.УстановитьКонтекст(ПараметрыЗапускаТестов); Для Каждого МетаданныеМодуля Из ТестовыеМодули() Цикл @@ -48,33 +48,33 @@ КонецФункции // ПрочитатьНаборТестов -// Читает набор тестов из модуля +// Читает набор тестов из модуля // Параметры: -// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля -// +// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +// // Возвращаемое значение: // - Неопределено - Если это не тестовый модуль -// - см. ЮТФабрика.ОписаниеТестовогоМодуля +// - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля Функция ИсполняемыеСценарииМодуля(Знач МетаданныеМодуля) Экспорт ЭтоТестовыйМодуль = Истина; - ОписаниеТестовогоМодуля = ЮТФабрика.ОписаниеТестовогоМодуля(МетаданныеМодуля, Новый Массив); + ОписаниеТестовогоМодуля = ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля(МетаданныеМодуля, Новый Массив); - ЮТТесты.ПередЧтениемСценариевМодуля(МетаданныеМодуля); + ЮТТестыСлужебный.ПередЧтениемСценариевМодуля(МетаданныеМодуля); ПолноеИмяМетода = МетаданныеМодуля.Имя + "." + ИмяМетодаСценариев(); - Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода); Если Ошибка <> Неопределено Тогда - ТипыОшибок = ЮТФабрика.ТипыОшибок(); - ТипОшибки = ЮТРегистрацияОшибок.ТипОшибки(Ошибка, ПолноеИмяМетода); + ТипыОшибок = ЮТФабрикаСлужебный.ТипыОшибок(); + ТипОшибки = ЮТРегистрацияОшибокСлужебный.ТипОшибки(Ошибка, ПолноеИмяМетода); Если ТипОшибки = ТипыОшибок.ТестНеРеализован Тогда ЭтоТестовыйМодуль = Ложь; Ошибка = Неопределено; ИначеЕсли ТипОшибки = ТипыОшибок.МалоПараметров Тогда - Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ЮТОбщий.ЗначениеВМассиве(Неопределено)); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода, ЮТКоллекции.ЗначениеВМассиве(Неопределено)); ЮТОбщий.СообщитьПользователю("Используется устаревшая сигнатура метода `ИсполняемыеСценарии`, метод не должен принимать параметров."); КонецЕсли; @@ -82,18 +82,18 @@ Если Ошибка <> Неопределено Тогда - НаборПоУмолчанию = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя); - ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуЧтенияТестов(НаборПоУмолчанию, "Ошибка формирования списка тестовых методов", Ошибка); + НаборПоУмолчанию = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуЧтенияТестов(НаборПоУмолчанию, "Ошибка формирования списка тестовых методов", Ошибка); ОписаниеТестовогоМодуля.НаборыТестов.Добавить(НаборПоУмолчанию); ИначеЕсли ЭтоТестовыйМодуль Тогда - ЮТТесты.ПослеЧтенияСценариевМодуля(); - Сценарии = ЮТТесты.СценарииМодуля(); + ЮТТестыСлужебный.ПослеЧтенияСценариевМодуля(); + Сценарии = ЮТТестыСлужебный.СценарииМодуля(); УдалитьНастройкиМодуляИзПервогоНабора(Сценарии); // TODO Нужен рефакторинг - ОписаниеТестовогоМодуля.НаборыТестов = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, МетаданныеМодуля); + ОписаниеТестовогоМодуля.НаборыТестов = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, МетаданныеМодуля); ОписаниеТестовогоМодуля.НастройкиВыполнения = Сценарии.НастройкиВыполнения; Иначе @@ -109,35 +109,35 @@ // ЭтоТестовыйМодуль // Проверяет, является ли модуль модулем с тестами // Параметры: -// МетаданныеМодуля - Структура - Описание метаданных модуля, см. ЮТФабрика.ОписаниеМодуля -// +// МетаданныеМодуля - Структура - Описание метаданных модуля, см. ЮТФабрикаСлужебный.ОписаниеМодуля +// // Возвращаемое значение: // Булево - Этот модуль содержит тесты Функция ЭтоТестовыйМодуль(МетаданныеМодуля) Экспорт - + Если МетаданныеМодуля.Глобальный Тогда Возврат Ложь; КонецЕсли; - + #Если Сервер Тогда - Возврат ЮТОбщий.МетодМодуляСуществует(МетаданныеМодуля.Имя, ИмяМетодаСценариев()); + Возврат ЮТМетодыСлужебный.МетодМодуляСуществует(МетаданныеМодуля.Имя, ИмяМетодаСценариев()); #КонецЕсли #Если ТолстыйКлиентУправляемоеПриложение ИЛИ ТонкийКлиент Тогда Если МетаданныеМодуля.КлиентУправляемоеПриложение Тогда - Возврат ЮТОбщий.МетодМодуляСуществует(МетаданныеМодуля.Имя, ИмяМетодаСценариев()); + Возврат ЮТМетодыСлужебный.МетодМодуляСуществует(МетаданныеМодуля.Имя, ИмяМетодаСценариев()); КонецЕсли; #КонецЕсли #Если ТолстыйКлиентОбычноеПриложение Тогда Если МетаданныеМодуля.КлиентОбычноеПриложение Тогда - Возврат ЮТОбщий.МетодМодуляСуществует(МетаданныеМодуля.Имя, ИмяМетодаСценариев()); + Возврат ЮТМетодыСлужебный.МетодМодуляСуществует(МетаданныеМодуля.Имя, ИмяМетодаСценариев()); КонецЕсли; #КонецЕсли Если МетаданныеМодуля.Сервер Тогда //@skip-check unknown-method-property - Возврат ЮТЧитательСервер.ЭтоТестовыйМодуль(МетаданныеМодуля); + Возврат ЮТЧитательСлужебныйВызовСервера.ЭтоТестовыйМодуль(МетаданныеМодуля); Иначе Возврат Ложь; КонецЕсли; @@ -157,17 +157,17 @@ // ТестовыеМодули // Возвращает описания модулей, содержащих тесты // Возвращаемое значение: -// Массив из см. ЮТМетаданныеСервер.МетаданныеМодуля - Тестовые модули +// Массив из см. ЮТМетаданныеСлужебныйВызовСервера.МетаданныеМодуля - Тестовые модули Функция ТестовыеМодули() ТестовыеМодули = Новый Массив; //@skip-check unknown-method-property - МодулиРасширения = ЮТМетаданныеСервер.МодулиРасширений(); + МодулиРасширения = ЮТМетаданныеСлужебныйВызовСервера.МодулиРасширений(); Для Каждого ОписаниеМодуля Из МодулиРасширения Цикл - Если ЮТФильтрация.ЭтоПодходящийМодуль(ОписаниеМодуля) И ЭтоТестовыйМодуль(ОписаниеМодуля) Тогда + Если ЮТФильтрацияСлужебный.ЭтоПодходящийМодуль(ОписаниеМодуля) И ЭтоТестовыйМодуль(ОписаниеМодуля) Тогда ТестовыеМодули.Добавить(ОписаниеМодуля); @@ -191,8 +191,8 @@ ИначеЕсли МетаданныеМодуля.Сервер Тогда - ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля); - ЮТЛогирование.ВывестиСерверныеСообщения(); + ОписаниеМодуля = ЮТЧитательСлужебныйВызовСервера.ИсполняемыеСценарииМодуля(МетаданныеМодуля); + ЮТЛогированиеСлужебный.ВывестиСерверныеСообщения(); КонецЕсли; #ИначеЕсли Сервер Тогда @@ -212,8 +212,8 @@ ИначеЕсли МетаданныеМодуля.Сервер Тогда - ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля); - ЮТЛогирование.ВывестиСерверныеСообщения(); + ОписаниеМодуля = ЮТЧитательСлужебныйВызовСервера.ИсполняемыеСценарииМодуля(МетаданныеМодуля); + ЮТЛогированиеСлужебный.ВывестиСерверныеСообщения(); КонецЕсли; #КонецЕсли @@ -224,7 +224,7 @@ Процедура УдалитьНастройкиМодуляИзПервогоНабора(СценарииМодуля) - НастройкиВыполнения = ЮТОбщий.СкопироватьРекурсивно(СценарииМодуля.НастройкиВыполнения); + НастройкиВыполнения = ЮТКоллекции.СкопироватьРекурсивно(СценарииМодуля.НастройкиВыполнения); СценарииМодуля.НастройкиВыполнения.Очистить(); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 88% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index df2cbf74d..857da215e 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ЮТЧитатель + ЮТЧитательСлужебный ru Загрузчик тестов diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" similarity index 72% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index adc856ce0..5e08cb6f7 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,16 +18,16 @@ #Область СлужебныйПрограммныйИнтерфейс -// См. ЮТЧитатель.ИсполняемыеСценарииМодуля +// См. ЮТЧитательСлужебный.ИсполняемыеСценарииМодуля Функция ИсполняемыеСценарииМодуля(Знач МетаданныеМодуля) Экспорт - Возврат ЮТЧитатель.ИсполняемыеСценарииМодуля(МетаданныеМодуля); + Возврат ЮТЧитательСлужебный.ИсполняемыеСценарииМодуля(МетаданныеМодуля); КонецФункции Функция ЭтоТестовыйМодуль(МетаданныеМодуля) Экспорт - Возврат ЮТЧитатель.ЭтоТестовыйМодуль(МетаданныеМодуля); + Возврат ЮТЧитательСлужебный.ЭтоТестовыйМодуль(МетаданныеМодуля); КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" similarity index 81% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" index 0150accfb..f3b1d1653 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -1,6 +1,6 @@ - ЮТЧитательСервер + ЮТЧитательСлужебныйВызовСервера ru Загрузчик тестов (сервер) diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl" index b67c7b473..2f63ffd29 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl" @@ -108,7 +108,7 @@ // Сообщение - Строка, Неопределено - Сообщение Процедура Пропустить(Сообщение = Неопределено) Экспорт - ЮТРегистрацияОшибок.Пропустить(Сообщение); + ЮТРегистрацияОшибокСлужебный.Пропустить(Сообщение); КонецПроцедуры @@ -123,7 +123,7 @@ Функция КонтекстТеста() Экспорт //@skip-check constructor-function-return-section - Возврат ЮТКонтекст.КонтекстТеста(); + Возврат ЮТКонтекстСлужебный.КонтекстТеста(); КонецФункции @@ -143,7 +143,7 @@ Функция КонтекстТестовогоНабора() Экспорт //@skip-check constructor-function-return-section - Возврат ЮТКонтекст.КонтекстНабора(); + Возврат ЮТКонтекстСлужебный.КонтекстНабора(); КонецФункции @@ -159,7 +159,7 @@ Функция КонтекстМодуля() Экспорт //@skip-check constructor-function-return-section - Возврат ЮТКонтекст.КонтекстМодуля(); + Возврат ЮТКонтекстСлужебный.КонтекстМодуля(); КонецФункции @@ -183,4 +183,24 @@ КонецПроцедуры +// Добавляет сообщение в лог исполнения теста. +// +// Параметры: +// ТекстСообщения - Строка - Текст сообщения +Процедура ДобавитьСообщение(ТекстСообщения) Экспорт + + ЮТЛогИсполненияТестаСлужебный.ДобавитьСообщение(ТекстСообщения); + +КонецПроцедуры + +// Добавляет предупреждение в лог исполнения теста. +// +// Параметры: +// ТекстПредупреждения - Строка - Текст предупреждения +Процедура ДобавитьПредупреждение(ТекстПредупреждения) Экспорт + + ЮТЛогИсполненияТестаСлужебный.ДобавитьПредупреждение(ТекстПредупреждения); + +КонецПроцедуры + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214/Picture.svg" new file mode 100644 index 000000000..2f6dafbbd --- /dev/null +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214/Picture.svg" @@ -0,0 +1,4 @@ + + + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214.mdo" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214.mdo" new file mode 100644 index 000000000..6862fc789 --- /dev/null +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214/\320\256\320\242\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214.mdo" @@ -0,0 +1,8 @@ + + + ЮТЗапустить + + ru + Запустить + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\235\320\265\320\270\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\271/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\235\320\265\320\270\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\271/Picture.svg" index d125eddd8..6c4094ecb 100644 --- "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\235\320\265\320\270\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\271/Picture.svg" +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\235\320\265\320\270\320\267\320\262\320\265\321\201\321\202\320\275\321\213\320\271/Picture.svg" @@ -1,12 +1,4 @@ - - - - - - - - + + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\236\321\210\320\270\320\261\320\272\320\260/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\236\321\210\320\270\320\261\320\272\320\260/Picture.svg" index e37abd826..30a940623 100644 --- "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\236\321\210\320\270\320\261\320\272\320\260/Picture.svg" +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\236\321\210\320\270\320\261\320\272\320\260/Picture.svg" @@ -1,8 +1,6 @@ - - - - - - + + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265/Picture.svg" new file mode 100644 index 000000000..9cbd45cee --- /dev/null +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265/Picture.svg" @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265.mdo" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265.mdo" new file mode 100644 index 000000000..1aefeef1c --- /dev/null +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265/\320\256\320\242\320\237\320\265\321\200\320\265\320\267\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\243\320\277\320\260\320\262\321\210\320\270\320\265.mdo" @@ -0,0 +1,8 @@ + + + ЮТПерезапуститьУпавшие + + ru + Перезапустить упавшие + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\321\200\320\276\320\277\321\203\321\211\320\265\320\275/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\321\200\320\276\320\277\321\203\321\211\320\265\320\275/Picture.svg" index 552f0b974..85123af3f 100644 --- "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\321\200\320\276\320\277\321\203\321\211\320\265\320\275/Picture.svg" +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\237\321\200\320\276\320\277\321\203\321\211\320\265\320\275/Picture.svg" @@ -1,15 +1,5 @@ - - - - - - - - - + + + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214/Picture.svg" new file mode 100644 index 000000000..eba7e6158 --- /dev/null +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214/Picture.svg" @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214.mdo" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214.mdo" new file mode 100644 index 000000000..c2bb1e86d --- /dev/null +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\270\321\202\321\214.mdo" @@ -0,0 +1,8 @@ + + + ЮТСравнить + + ru + Сравнить + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\320\277\320\260\320\273/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\320\277\320\260\320\273/Picture.svg" index 71a9fa157..0334713d9 100644 --- "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\320\277\320\260\320\273/Picture.svg" +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\320\277\320\260\320\273/Picture.svg" @@ -1,8 +1,6 @@ - - - - - - - \ No newline at end of file + + + + diff --git "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\321\201\320\277\320\265\321\210\320\275\320\276/Picture.svg" "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\321\201\320\277\320\265\321\210\320\275\320\276/Picture.svg" index a189ec1e4..103604d8c 100644 --- "a/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\321\201\320\277\320\265\321\210\320\275\320\276/Picture.svg" +++ "b/exts/yaxunit/src/CommonPictures/\320\256\320\242\320\243\321\201\320\277\320\265\321\210\320\275\320\276/Picture.svg" @@ -1,7 +1,4 @@ - - - - - + + + diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265/Template.txt" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265/Template.txt" new file mode 100644 index 000000000..a22515cc8 --- /dev/null +++ "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265/Template.txt" @@ -0,0 +1,167 @@ + + + + + + + + TREE_CONTENT + + + \ No newline at end of file diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265.mdo" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265.mdo" new file mode 100644 index 000000000..a18381e7b --- /dev/null +++ "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265/\320\256\320\242\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\236\320\261\320\236\321\210\320\270\320\261\320\272\320\265.mdo" @@ -0,0 +1,9 @@ + + + ЮТИнформацияОбОшибке + + ru + Информация об ошибке + + TextDocument + diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Template.txt" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Template.txt" index 1d5d426c7..9ffce5ff6 100644 --- "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Template.txt" +++ "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Template.txt" @@ -8,7 +8,7 @@ | ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + | | ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + | | ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + | -| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | + | +| РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | | + | | РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | + | | РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | + | | РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | + | @@ -23,7 +23,7 @@ | ChartOfAccounts | ChartsOfAccounts | СоздатьСчет | | + | + | | | | + | + | | ChartOfCalculationTypes | ChartsOfCalculationTypes | СоздатьВидРасчета | | + | + | | | | + | + | | ExchangePlan | ExchangePlans | СоздатьУзел | | + | + | | | | + | + | -| InformationRegister | InformationRegisters | СоздатьМенеджерЗаписи | | | + | + | + | | | + | +| InformationRegister | InformationRegisters | СоздатьНаборЗаписей | | | + | + | + | | | + | | AccumulationRegister | AccumulationRegisters | | | | + | + | + | | | + | | AccountingRegister | AccountingRegisters | | | | + | + | + | | | + | | CalculationRegister | CalculationRegisters | | | | + | + | + | | | + | diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo index 9cb8293f2..3d04b03a7 100644 --- a/exts/yaxunit/src/Configuration/Configuration.mdo +++ b/exts/yaxunit/src/Configuration/Configuration.mdo @@ -20,7 +20,7 @@ 8.3.10 AddOn Russian - 24.02 + 24.03 Русский Adopted @@ -32,10 +32,13 @@ Subsystem.ЮТДвижок Subsystem.ЮТДинамическиПодключаемые Subsystem.ЮТПубличный + CommonPicture.ЮТЗапустить CommonPicture.ЮТНеизвестный CommonPicture.ЮТОшибка + CommonPicture.ЮТПерезапуститьУпавшие CommonPicture.ЮТПодсистема CommonPicture.ЮТПропущен + CommonPicture.ЮТСравнить CommonPicture.ЮТУпал CommonPicture.ЮТУспешно CommonPicture.ЮТЭлементыТестов @@ -49,78 +52,90 @@ CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru CommonTemplate.ЮТRegEx1CAddin CommonTemplate.ЮТYaxUnitAddIn + CommonTemplate.ЮТИнформацияОбОшибке CommonTemplate.ЮТОписаниеМетаданных CommonModule.Мокито CommonModule.МокитоОбучение + CommonModule.МокитоПерехват CommonModule.МокитоПроверки CommonModule.МокитоСлужебный CommonModule.ЮТАсинхроннаяОбработкаСлужебныйКлиент CommonModule.ЮТест CommonModule.ЮТЗапросы - CommonModule.ЮТЗапросыВызовСервера - CommonModule.ЮТЗапросыКлиентСервер - CommonModule.ЮТИсполнительГлобальный - CommonModule.ЮТИсполнительКлиент - CommonModule.ЮТИсполнительКлиентСервер - CommonModule.ЮТИсполнительСервер + CommonModule.ЮТЗапросыСлужебныйВызовСервера + CommonModule.ЮТЗапросыСлужебныйКлиентСервер + CommonModule.ЮТИсключения + CommonModule.ЮТИсполнительСлужебныйВызовСервера + CommonModule.ЮТИсполнительСлужебныйГлобальный + CommonModule.ЮТИсполнительСлужебныйКлиент + CommonModule.ЮТИсполнительСлужебныйКлиентСервер + CommonModule.ЮТКоллекции CommonModule.ЮТКомпоненты - CommonModule.ЮТКомпонентыВызовСервера - CommonModule.ЮТКомпонентыКлиент + CommonModule.ЮТКомпонентыСлужебныйВызовСервера + CommonModule.ЮТКомпонентыСлужебныйКлиент CommonModule.ЮТКонструкторВариантов CommonModule.ЮТКонструкторТестовыхДанныхСлужебный - CommonModule.ЮТКонтекст - CommonModule.ЮТКонтекстКлиент - CommonModule.ЮТКонтекстСервер + CommonModule.ЮТКонтекстСлужебный + CommonModule.ЮТКонтекстСлужебныйВызовСервера + CommonModule.ЮТКонтекстСлужебныйКлиент CommonModule.ЮТКонтекстТеста CommonModule.ЮТЛогирование - CommonModule.ЮТЛогированиеВызовСервера + CommonModule.ЮТЛогированиеСлужебный + CommonModule.ЮТЛогированиеСлужебныйВызовСервера + CommonModule.ЮТЛогИсполненияТестаСлужебный CommonModule.ЮТЛокальСлужебный CommonModule.ЮТМетаданные - CommonModule.ЮТМетаданныеПовтИсп - CommonModule.ЮТМетаданныеСервер + CommonModule.ЮТМетаданныеСлужебный + CommonModule.ЮТМетаданныеСлужебныйВызовСервера + CommonModule.ЮТМетаданныеСлужебныйПовтИсп + CommonModule.ЮТМетодыСлужебный CommonModule.ЮТНастройкиВыполнения CommonModule.ЮТОбщий - CommonModule.ЮТОбщийВызовСервера - CommonModule.ЮТОтчет - CommonModule.ЮТОтчетAllure - CommonModule.ЮТОтчетJSON - CommonModule.ЮТОтчетJUnit - CommonModule.ЮТПараметрыЗапуска - CommonModule.ЮТПовторногоИспользования + CommonModule.ЮТОбщийСлужебныйВызовСервера + CommonModule.ЮТОтчетAllureСлужебный + CommonModule.ЮТОтчетJSONСлужебный + CommonModule.ЮТОтчетJUnitСлужебный + CommonModule.ЮТОтчетСлужебный + CommonModule.ЮТПараметрыЗапускаСлужебный CommonModule.ЮТПодражатель CommonModule.ЮТПодражатель_Банки CommonModule.ЮТПодражатель_Компании CommonModule.ЮТПодражатель_Люди - CommonModule.ЮТПодражательВызовСервера - CommonModule.ЮТПодражательПовтИсп CommonModule.ЮТПодражательСлужебный + CommonModule.ЮТПодражательСлужебныйВызовСервера + CommonModule.ЮТПодражательСлужебныйПовтИсп CommonModule.ЮТПредикаты - CommonModule.ЮТПредикатыКлиентСервер - CommonModule.ЮТПреобразования + CommonModule.ЮТПредикатыСлужебныйКлиентСервер + CommonModule.ЮТПреобразованияСлужебный CommonModule.ЮТПроверкиСлужебный - CommonModule.ЮТРасширения + CommonModule.ЮТРасширенияСлужебный CommonModule.ЮТРегистрацияОшибок - CommonModule.ЮТСобытия + CommonModule.ЮТРегистрацияОшибокСлужебный + CommonModule.ЮТСлужебныйПовторногоИспользования + CommonModule.ЮТСобытияСлужебный CommonModule.ЮТСообщенияСлужебный - CommonModule.ЮТСравнениеКлиентСервер - CommonModule.ЮТСравнениеСервер + CommonModule.ЮТСравнениеСлужебныйВызовСервера + CommonModule.ЮТСравнениеСлужебныйКлиентСервер CommonModule.ЮТСтроки CommonModule.ЮТТестовыеДанные - CommonModule.ЮТТестовыеДанные_ТаблицыЗначений - CommonModule.ЮТТестовыеДанныеВызовСервера CommonModule.ЮТТестовыеДанныеСлужебный + CommonModule.ЮТТестовыеДанныеСлужебныйВызовСервера + CommonModule.ЮТТестовыеДанныеСлужебныйТаблицыЗначений CommonModule.ЮТТесты + CommonModule.ЮТТестыСлужебный CommonModule.ЮТТипыДанныхСлужебный CommonModule.ЮТУтверждения CommonModule.ЮТУтвержденияИБ CommonModule.ЮТФабрика + CommonModule.ЮТФабрикаСлужебный CommonModule.ЮТФайлы - CommonModule.ЮТФильтрация - CommonModule.ЮТЧитатель - CommonModule.ЮТЧитательСервер + CommonModule.ЮТФильтрацияСлужебный + CommonModule.ЮТЧитательСлужебный + CommonModule.ЮТЧитательСлужебныйВызовСервера DataProcessor.ЮТHTTPServiceRequest DataProcessor.ЮТHTTPСервисЗапрос DataProcessor.ЮТRecordSet + DataProcessor.ЮТКонструкторОбъектаXDTO DataProcessor.ЮТКонструкторТестовыхДанных DataProcessor.ЮТЮнитТесты diff --git a/exts/yaxunit/src/Configuration/ManagedApplicationModule.bsl b/exts/yaxunit/src/Configuration/ManagedApplicationModule.bsl index d58d435c5..e037eab6d 100644 --- a/exts/yaxunit/src/Configuration/ManagedApplicationModule.bsl +++ b/exts/yaxunit/src/Configuration/ManagedApplicationModule.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -43,7 +43,7 @@ &After("OnStart") Procedure ЮТOnStart() - ЮТИсполнительКлиент.ВыполнитьМодульноеТестирование(); + ЮТИсполнительСлужебныйКлиент.ВыполнитьМодульноеТестирование(); EndProcedure diff --git a/exts/yaxunit/src/Configuration/OrdinaryApplicationModule.bsl b/exts/yaxunit/src/Configuration/OrdinaryApplicationModule.bsl index 612644921..8e0de7a6e 100644 --- a/exts/yaxunit/src/Configuration/OrdinaryApplicationModule.bsl +++ b/exts/yaxunit/src/Configuration/OrdinaryApplicationModule.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ &После("ПриНачалеРаботыСистемы") Процедура ЮТПриНачалеРаботыСистемы() - ЮТИсполнительКлиент.ВыполнитьМодульноеТестирование(); + ЮТИсполнительСлужебныйКлиент.ВыполнитьМодульноеТестирование(); КонецПроцедуры diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242HTTPServiceRequest/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242HTTPServiceRequest/ObjectModule.bsl" index f371f2d92..11b54c9a5 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242HTTPServiceRequest/ObjectModule.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242HTTPServiceRequest/ObjectModule.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -44,9 +44,9 @@ Var Body; // Возвращаемое значение: // ДвоичныеДанные - Тело Function GetBodyAsBinaryData() Export - + BodyType = TypeOf(Body); - + If Body = Undefined Then Return GetBinaryDataFromBase64String(""); ElsIf BodyType = Type("BinaryData") Then @@ -54,7 +54,7 @@ Function GetBodyAsBinaryData() Export ElsIf BodyType = Type("String") Then Return GetBinaryDataFromString(Body); EndIf; - + EndFunction // Возвращает тело как поток. @@ -62,22 +62,22 @@ EndFunction // Возвращаемое значение: // Поток - Тело Function GetBodyAsStream() Export - + Return GetBodyAsBinaryData().OpenStreamForRead(); - + EndFunction // Возвращает тело как строку. // // Параметры: -// Кодировка - КодировкаТекста, Строка - Кодировка +// Encoding - КодировкаТекста, Строка - Кодировка // // Возвращаемое значение: // Строка - Тело Function GetBodyAsString(Encoding = Undefined) Export - + BodyType = TypeOf(Body); - + If Body = Undefined Then Return ""; ElsIf BodyType = Тип("BinaryData") Then @@ -85,37 +85,37 @@ Function GetBodyAsString(Encoding = Undefined) Export ElsIf BodyType = Тип("String") Then Return Body; EndIf; - + EndFunction // Устанавливает тело как двоичные данные. // При получении тела в другом формате происходит конвертация // // Параметры: -// Данные - ДвоичныеДанные +// Data - ДвоичныеДанные // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function УстановитьТелоКакДвоичныеДанные(Data) Export - + Body = Data; Return ThisObject; - + EndFunction // Устанавливает тело как строку. // При получении тела в другом формате происходит конвертация // // Параметры: -// Строка - Строка +// String - Строка // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function УстановитьТелоКакСтроку(String) Export - + Body = String; Return ThisObject; - + EndFunction // Устанавливает тело как строку JSON. @@ -123,107 +123,107 @@ EndFunction // При получении тела в другом формате происходит конвертация // // Параметры: -// Данные - Произвольный +// Data - Произвольный // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function УстановитьТелоКакСтрокуJSON(Data) Export - + JSONWriter = Новый JSONWriter(); JSONWriter.SetString(); WriteJSON(JSONWriter, Data); - + Body = JSONWriter.Close(); - + Return ThisObject; - + EndFunction // Добавляет заголовок. // // Параметры: -// ИмяЗаголовка - Строка -// Значение - Строка +// HeaderName - Строка +// Value - Строка // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function ДобавитьЗаголовок(HeaderName, Value) Export - + Headers.Insert(HeaderName, Value); Return ThisObject; - + EndFunction // Добавляет параметр запроса. // // Параметры: -// ИмяПараметра - Строка -// Значение - Строка +// ParameterName - Строка +// Value - Строка // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function ДобавитьПараметрЗапроса(ParameterName, Value) Export - + QueryOptions.Insert(ParameterName, Value); Return ThisObject; - + EndFunction // Добавляет параметр URL. // // Параметры: -// ИмяПараметра - Строка -// Значение - Строка +// ParameterName - Строка +// Value - Строка // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function ДобавитьПараметрURL(ParameterName, Value) Export - + URLParameters.Insert(ParameterName, Value); Return ThisObject; - + EndFunction // Устанавливает HTTP метод // // Параметры: -// Значение - Строка - Имя http метода +// Value - Строка - Имя http метода // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function Метод(Value) Export - + HTTPMethod = Value; Return ThisObject; - + EndFunction // Устанавливает базовый URL. // // Параметры: -// Значение - Строка - базовый URL +// Value - Строка - базовый URL // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function БазовыйURL(Value) Export - + BaseURL = Value; Return ThisObject; - + EndFunction // Устанавливает относительный URL. // // Параметры: -// Значение - Строка - относительный URL +// Value - Строка - относительный URL // // Возвращаемое значение: -// ОбработкаОбъект.ЮТHTTPСервисЗапрос - Мок +// ОбработкаОбъект.ЮТHTTPServiceRequest - Мок Function ОтносительныйURL(Value) Export - + RelativeURL = Value; Return ThisObject; - + EndFunction #КонецОбласти @@ -231,14 +231,14 @@ EndFunction #Область СлужебныеПроцедурыИФункции Процедура Initialize() - + HTTPMethod = "GET"; BaseURL = ""; Headers = New Map(); RelativeURL = ""; URLParameters = New Map(); QueryOptions = New Map(); - + КонецПроцедуры #КонецОбласти @@ -249,4 +249,4 @@ Initialize(); #КонецОбласти -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242RecordSet/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242RecordSet/ObjectModule.bsl" index 256fba8a0..e51812f44 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242RecordSet/ObjectModule.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242RecordSet/ObjectModule.bsl" @@ -151,7 +151,7 @@ Данные = Новый ТаблицаЗначений(); - Колонки = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Колонки, ","); + Колонки = ЮТСтроки.РазделитьСтроку(Колонки, ","); Для Каждого Колонка Из Колонки Цикл Данные.Колонки.Добавить(Колонка); diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/ObjectModule.bsl" new file mode 100644 index 000000000..7ebf637ca --- /dev/null +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/ObjectModule.bsl" @@ -0,0 +1,375 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда + +#Область ОписаниеПеременных + +Перем ТекущийОбъект; +Перем ТекущийТип; +Перем СтекОбъектов; +Перем Фабрика; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Устанавливает значение реквизита объекта. +// +// Параметры: +// ИмяРеквизита - Строка - Имя реквизита объекта +// Значение - Произвольный - Значение реквизита объекта +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор +Функция Установить(ИмяРеквизита, Значение) Экспорт + + ТекущийОбъект[ИмяРеквизита] = Значение; + + Возврат ЭтотОбъект; + +КонецФункции + +// Устанавливает значения реквизитов объекта. +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор +Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт + + Для Каждого ЗначениеРеквизита Из ЗначенияРеквизитов Цикл + ТекущийОбъект[ЗначениеРеквизита.Ключ] = ЗначениеРеквизита.Значение; + КонецЦикла; + + Возврат ЭтотОбъект; + +КонецФункции + +// Устанавливает фиктивное значение реквизита объекта. +// +// На основании типа реквизита генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для объектных типов создается новый объект +// * Для коллекций - генерируется случайно количество случайных элементов (на основании типа) +// +// Параметры: +// ИмяРеквизита - Строка - Имя реквизита объекта +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор +Функция Фикция(ИмяРеквизита) Экспорт + + Свойство = Свойство(ИмяРеквизита); + Значение = СлучайноеЗначениеСвойства(Свойство, 0); + Установить(ИмяРеквизита, Значение); + + Возврат ЭтотОбъект; + +КонецФункции + +// Заполняет обязательные реквизиты объекта фиктивными значениями +// +// На основании типа объекта определяются обязательные поля. +// Для них генерируются и устанавливаются фиктивные значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для объектных типов создается новый объект +// * Для коллекций - генерируется случайно количество случайных элементов (на основании типа) +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор +Функция ФикцияОбязательныхПолей() Экспорт + + Для Каждого Свойство Из ТекущийТип.Свойства Цикл + + Если НЕ Свойство.ВозможноПустое И НеЗаполнено(Свойство, ТекущийОбъект[Свойство.Имя]) Тогда + УстановитьСлучайноеЗначениеСвойства(ТекущийОбъект, Свойство, 0); + КонецЕсли; + + КонецЦикла; + + Возврат ЭтотОбъект; + +КонецФункции + +// Заполняет неустановленные реквизиты объекта фиктивными значениями +// +// На основании типа объекта определяются обязательные поля. +// Для них генерируются и устанавливаются фиктивные значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для объектных типов создается новый объект +// * Для коллекций - генерируется случайно количество случайных элементов (на основании типа) +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор +Функция ФикцияНезаполненных() Экспорт + + Для Каждого Свойство Из ТекущийТип.Свойства Цикл + + Если НеЗаполнено(Свойство, ТекущийОбъект[Свойство.Имя]) Тогда + УстановитьСлучайноеЗначениеСвойства(ТекущийОбъект, Свойство, 0); + КонецЕсли; + + КонецЦикла; + + Возврат ЭтотОбъект; + +КонецФункции + +// Возвращает основной объект XDTO +// +// Возвращаемое значение: +// ОбъектXDTO +Функция ДанныеОбъекта() Экспорт + + Возврат СтекОбъектов[0]; + +КонецФункции + +// Добавляет новый объект в реквизит-коллекцию +// +// Параметры: +// ИмяРеквизита - Строка - Имя реквизиты коллекции +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Добавить новый +Функция ДобавитьНовый(ИмяРеквизита) Экспорт + + Свойство = Свойство(ИмяРеквизита); + + Если НЕ ЭтоТипОбъектаXDTO(Свойство.Тип) Тогда + ВызватьИсключение СтрШаблон("Метод применяется только для свойств-объектов. Реквизит: %1 имеет тип %2", ИмяРеквизита, Свойство.Тип); + КонецЕсли; + + Коллекция = ТекущийОбъект[Свойство.Имя]; + ДобавитьНовыйОбъектВСтек(Свойство.Тип); + + Коллекция.Добавить(ТекущийОбъект); + + Возврат ЭтотОбъект; + +КонецФункции + +// Переходит на уровень выше по стеку. +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Перейти к владельцу +Функция ПерейтиКВладельцу() Экспорт + + УдалитьПоследнийИзСтека(); + + Возврат ЭтотОбъект; + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура Инициализировать(ИмяТипаОбъекта, ПространствоИмен, ФабрикаОбъектов = Неопределено) Экспорт + + Если ФабрикаОбъектов = Неопределено Тогда + Фабрика = ФабрикаXDTO; + Иначе + Фабрика = ФабрикаОбъектов; + КонецЕсли; + + СтекОбъектов = Новый Массив(); + ТипОбъекта = Фабрика.Тип(ПространствоИмен, ИмяТипаОбъекта); + ДобавитьНовыйОбъектВСтек(ТипОбъекта); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция Свойство(ИмяСвойства) + + Свойство = ТекущийТип.Свойства.Получить(ИмяСвойства); + + Если Свойство = Неопределено Тогда + Сообщение = СтрШаблон("Тип XDTO `%1` не содержит свойства `%2`", ТекущийТип.Имя, ИмяСвойства); + ВызватьИсключение Сообщение; + КонецЕсли; + + Возврат Свойство; + +КонецФункции + +Процедура ДобавитьНовыйОбъектВСтек(Тип) + + Объект = НовыйОбъект(Тип); + СтекОбъектов.Добавить(Объект); + ТекущийОбъект = Объект; + ТекущийТип = Тип; + +КонецПроцедуры + +Процедура УдалитьПоследнийИзСтека() + + ИндексПоследнего = СтекОбъектов.ВГраница(); + + ТекущийОбъект = СтекОбъектов[ИндексПоследнего - 1]; + ТекущийТип = ТекущийОбъект.Тип(); + + СтекОбъектов.Удалить(ИндексПоследнего); + +КонецПроцедуры + +Функция СлучайноеЗначениеСвойства(Свойство, Уровень = 0) + + ТипСвойства = Свойство.Тип; + Если ТипЗнч(ТипСвойства) = Тип("ТипЗначенияXDTO") Тогда + Возврат СлучайноеЗначениеПримитипа(Свойство); + ИначеЕсли Уровень < 3 Тогда + Возврат СлучайноеЗначениеОбъекта(Свойство, Уровень + 1); + КонецЕсли; + +КонецФункции + +Функция СлучайноеЗначениеПримитипа(Свойство) + + Тип = Свойство.Тип; + + Если Тип.Имя = "string" И СтрНайти(НРег(Свойство.Имя), "uid") Тогда + Возврат ЮТест.Данные().УникальнаяСтрока(); + ИначеЕсли Тип.Имя = "string" Тогда + Возврат ЮТест.Данные().СлучайнаяСтрока(); + ИначеЕсли Тип.Имя = "boolean" Тогда + Возврат ЮТест.Данные().СлучайноеБулево(); + ИначеЕсли Тип.Имя = "integer" Тогда + Возврат ЮТест.Данные().СлучайноеЧисло(); + ИначеЕсли Тип.Имя = "decimal" Тогда + Возврат ЮТест.Данные().СлучайноеЧисло(, , 3); + ИначеЕсли Тип.Имя = "time" Тогда + Возврат ЮТест.Данные().СлучайноеВремя(); + ИначеЕсли Тип.Имя = "date" Тогда + Возврат НачалоДня(ЮТест.Данные().СлучайнаяДата()); + ИначеЕсли Тип.Имя = "dateTime" Тогда + Возврат ЮТест.Данные().СлучайнаяДата(); + ИначеЕсли Тип.БазовыйТип.Имя = "AnyRef" Тогда + Возврат ЮТест.Данные().УникальнаяСтрока(); + ИначеЕсли ЗначениеЗаполнено(Тип.Фасеты) И Тип.Фасеты[0].Вид = ВидФасетаXDTO.Перечисление Тогда + Возврат СлучайноеЗначениеПеречисления(Тип); + Иначе + ВызватьИсключение "Неподдерживаемый тип примитива XDTO: " + Тип; + КонецЕсли; + +КонецФункции + +Функция СлучайноеЗначениеОбъекта(Свойство, Уровень) + + Пакет = НовыйОбъект(Свойство.Тип); + ЗаполнитьПакетСлучайнымиЗначениями(Пакет, Уровень); + + Возврат Пакет; + +КонецФункции + +Процедура ЗаполнитьПакетСлучайнымиЗначениями(Пакет, Уровень = 0) + + Тип = Пакет.Тип(); + Для Каждого Свойство Из Тип.Свойства Цикл + + Если НеЗаполнено(Свойство, Пакет[Свойство.Имя]) Тогда + УстановитьСлучайноеЗначениеСвойства(Пакет, Свойство, Уровень); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура УстановитьСлучайноеЗначениеСвойства(Пакет, Свойство, Уровень) + + ЭтоСписок = ЭтоСписок(Свойство); + + Если ЭтоСписок Тогда + СписокСлучайныхЗначений(Пакет[Свойство.Имя], Свойство, Уровень); + Иначе + Пакет[Свойство.Имя] = СлучайноеЗначениеСвойства(Свойство, Уровень); + КонецЕсли; + +КонецПроцедуры + +Функция НеЗаполнено(Свойство, Значение) + + ЭтоСписок = ЭтоСписок(Свойство); + + Если ЭтоСписок И Значение.Количество() Тогда + Возврат Значение.Количество() = 0; + Иначе + Возврат НЕ ЗначениеЗаполнено(Значение); + КонецЕсли; + +КонецФункции + +Функция ЭтоСписок(Свойство) + + Возврат Свойство.ВерхняяГраница = -1 ИЛИ Свойство.ВерхняяГраница > 1; + +КонецФункции + +Процедура СписокСлучайныхЗначений(Список, Свойство, Уровень) + + Если Свойство.ВерхняяГраница = -1 Тогда + Количество = ЮТест.Данные().СлучайноеЧисло(Свойство.НижняяГраница, 10); + Иначе + Количество = ЮТест.Данные().СлучайноеЧисло(Свойство.НижняяГраница, Свойство.ВерхняяГраница); + КонецЕсли; + + Для Инд = 0 По Количество Цикл + Значение = СлучайноеЗначениеСвойства(Свойство, Уровень); + Список.Добавить(Значение); + КонецЦикла; + +КонецПроцедуры + +Функция НовыйОбъект(Тип) + + Возврат Фабрика.Создать(Тип); + +КонецФункции + +Функция ЭтоТипОбъектаXDTO(ТипСвойства) + + Возврат ТипЗнч(ТипСвойства) = Тип("ТипОбъектаXDTO"); + +КонецФункции + +Функция СлучайноеЗначениеПеречисления(Тип) + + Значения = Новый Массив(); + + Для Каждого Фасет Из Тип.Фасеты Цикл + Если Фасет.Вид = ВидФасетаXDTO.Перечисление Тогда + Значения.Добавить(Фасет.Значение); + КонецЕсли; + КонецЦикла; + + Возврат ЮТест.Данные().СлучайноеЗначениеИзСписка(Значения); + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO.mdo" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO.mdo" new file mode 100644 index 000000000..c8450bc17 --- /dev/null +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO.mdo" @@ -0,0 +1,13 @@ + + + + + + + ЮТКонструкторОбъектаXDTO + + ru + Конструктор объекта XDTO + + true + diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" index adec115e8..bc1f2d7b3 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -46,6 +46,23 @@ КонецФункции +// Устанавливает значения реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов +// +// Возвращаемое значение: +// ОбщийМодуль - Установить реквизиты +&НаКлиенте +Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.УстановитьРеквизиты(Контекст, ЗначенияРеквизитов); + Возврат ЭтотОбъект; + +КонецФункции + // Устанавливает фиктивное значение реквизита создаваемого объекта. // // Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части. @@ -122,13 +139,17 @@ КонецФункции // Добавляет новую строку табличной части объекта. +// При необходимости можно выполнить установку реквизитов новой строки +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов новой строки // // Возвращаемое значение: // ОбщийМодуль - Конструктор &НаКлиенте -Функция ДобавитьСтроку() Экспорт +Функция ДобавитьСтроку(ЗначенияРеквизитов = Неопределено) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст); + ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст, ЗначенияРеквизитов); Возврат ЭтотОбъект; КонецФункции diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" index 8f338cd26..978555fff 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ // Значение - Произвольный - Значение реквизита объекта или табличной части // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция Установить(ИмяРеквизита, Значение) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.Установить(Контекст, ИмяРеквизита, Значение); @@ -44,6 +44,22 @@ КонецФункции +// Устанавливает значения реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Установить реквизиты +Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.УстановитьРеквизиты(Контекст, ЗначенияРеквизитов); + Возврат ЭтотОбъект; + +КонецФункции + // Устанавливает фиктивное значение реквизита создаваемого объекта. // // Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части. @@ -62,7 +78,7 @@ // - Неопределено - Будет сгенерировано значение, на основании типа реквизита, если реквизит составной, то будет использован случайный тип // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено, ОграничениеТипа = Неопределено) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, ОграничениеТипа); @@ -82,7 +98,7 @@ // * Для перечислений (в том числе системных) выбирается случайно значение перечисления // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция ФикцияОбязательныхПолей() Экспорт ЮТКонструкторТестовыхДанныхСлужебный.ФикцияОбязательныхПолей(Контекст); @@ -96,7 +112,7 @@ // ИмяТабличнойЧасти - Строка - Имя табличной части // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция ТабличнаяЧасть(ИмяТабличнойЧасти) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти); @@ -107,7 +123,7 @@ // Переключает конструктор на заполнение объекта. // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция Объект() Экспорт ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, Неопределено); @@ -116,12 +132,16 @@ КонецФункции // Добавляет новую строку табличной части объекта. +// При необходимости можно выполнить установку реквизитов новой строки +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов новой строки // // Возвращаемое значение: -// ОбщийМодуль - Конструктор -Функция ДобавитьСтроку() Экспорт +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор +Функция ДобавитьСтроку(ЗначенияРеквизитов = Неопределено) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст); + ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст, ЗначенияРеквизитов); Возврат ЭтотОбъект; КонецФункции @@ -133,7 +153,7 @@ // Значение - Произвольный - Значение дополнительного свойства // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение = Неопределено) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение); @@ -167,7 +187,7 @@ // ОбменДаннымиЗагрузка - Булево - Записать объект с признаком `ОбменДанными.Загрузка = Истина` // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция ДобавитьЗапись(ОбменДаннымиЗагрузка = Ложь) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.Записать(Контекст, Ложь, ОбменДаннымиЗагрузка); diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Form.form" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Form.form" index d6a021287..706a639eb 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Form.form" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Form.form" @@ -75,7 +75,7 @@ ЗапуститьВсеТесты - 126 + 21 <key>ru</key> <value>Все тесты</value> @@ -87,7 +87,7 @@ </userVisible> <extendedTooltip> <name>ЗапуститьВсеТестыРасширеннаяПодсказка</name> - <id>127</id> + <id>22</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -148,7 +148,7 @@ </userVisible> <extendedTooltip> <name>ЗамерВремениВыполненияРасширеннаяПодсказка</name> - <id>129</id> + <id>23</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -823,7 +823,7 @@ <id>31</id> <items xsi:type="form:Button"> <name>ДеревоТестовКонтекстноеМенюЗапуститьВыделенныеТесты</name> - <id>130</id> + <id>28</id> <title> <key>ru</key> <value>Запустить выбранные тесты</value> @@ -889,6 +889,56 @@ <items xsi:type="form:FormGroup"> <name>ГруппаДанныеОшибок</name> <id>83</id> + <items xsi:type="form:FormField"> + <name>ФорматВыводаОшибки</name> + <id>26</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>ФорматВыводаОшибки</segments> + </dataPath> + <handlers> + <event>OnChange</event> + <name>ФорматВыводаОшибкиПриИзменении</name> + </handlers> + <extendedTooltip> + <name>ФорматВыводаОшибкиРасширеннаяПодсказка</name> + <id>24</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ФорматВыводаОшибкиКонтекстноеМеню</name> + <id>25</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <autoFill>true</autoFill> + </contextMenu> + <type>RadioButtonField</type> + <groupHorizontalAlign>Right</groupHorizontalAlign> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:RadioButtonsFieldExtInfo"> + <radioButtonsType>Tumbler</radioButtonsType> + </extInfo> + </items> <items xsi:type="form:Table"> <name>ДеревоТестовОшибки</name> <id>59</id> @@ -967,10 +1017,6 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> - <handlers> - <event>OnActivateRow</event> - <name>ДеревоТестовОшибкиПриАктивизацииСтроки</name> - </handlers> <searchStringAddition> <visible>true</visible> <enabled>true</enabled> @@ -1129,7 +1175,6 @@ <items xsi:type="form:FormField"> <name>ДеревоТестовОшибкиСтек</name> <id>75</id> - <visible>true</visible> <enabled>true</enabled> <userVisible> <common>true</common> @@ -1179,6 +1224,59 @@ </borderColor> </extInfo> </items> + <items xsi:type="form:FormField"> + <name>ОтображениеОшибки</name> + <id>144</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>ОтображениеОшибки</segments> + </dataPath> + <titleLocation>None</titleLocation> + <extendedTooltip> + <name>ОтображениеОшибкиРасширеннаяПодсказка</name> + <id>146</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ОтображениеОшибкиКонтекстноеМеню</name> + <id>145</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + </contextMenu> + <type>HTMLDocumentField</type> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:HtmlFieldExtInfo"> + <width>50</width> + <autoMaxWidth>true</autoMaxWidth> + <height>10</height> + <autoMaxHeight>true</autoMaxHeight> + <horizontalStretch>true</horizontalStretch> + <verticalStretch>true</verticalStretch> + <borderColor xsi:type="core:ColorRef"> + <color>Style.FormBackColor</color> + </borderColor> + </extInfo> + </items> <items xsi:type="form:FormGroup"> <name>РаботаСОшибкой</name> <id>110</id> @@ -1344,7 +1442,7 @@ <autoMaxHeight>true</autoMaxHeight> <verticalStretch>false</verticalStretch> <font xsi:type="core:FontDef"> - <height>16.0</height> + <height>12.0</height> </font> <extInfo xsi:type="form:LabelDecorationExtInfo"> <horizontalAlign>Left</horizontalAlign> @@ -1370,6 +1468,7 @@ <event>OnOpen</event> <name>ПриОткрытии</name> </handlers> + <autoSaveDataInSettings>Use</autoSaveDataInSettings> <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> <group>Vertical</group> @@ -1664,6 +1763,41 @@ <common>true</common> </edit> </columns> + <columns> + <name>Лог</name> + <title> + <key>ru</key> + <value>Лог</value> + + 129 + + ValueList + + + true + + + true + + + + ТипОшибки + + <key>ru</key> + <value>Тип ошибки</value> + + 130 + + String + + + + true + + + true + + @@ -1685,17 +1819,32 @@ - СтатистикаВыполненияВеса + ЗагрузитьТестыПриОткрытии + + <key>ru</key> + <value>Загрузить тесты при открытии</value> + + 125 + + Boolean + + + true + + + true + + + + ОтображениеОшибки <key>ru</key> - <value>Статистика выполнения веса</value> + <value>Отображение ошибки</value> - 118 + 27 String - - 10 - + true @@ -1705,14 +1854,15 @@ - ЗагрузитьТестыПриОткрытии + ФорматВыводаОшибки <key>ru</key> - <value>Загрузить тесты при открытии</value> + <value>Формат вывода ошибки</value> - 125 + 126 - Boolean + String + true @@ -1720,6 +1870,10 @@ true + + ФорматВыводаОшибки + + true Сравнить @@ -1732,7 +1886,7 @@ true - StdPicture.QueryWizardReplaceTable + CommonPicture.ЮТСравнить @@ -1774,7 +1928,7 @@ true - StdPicture.GenerateReport + CommonPicture.ЮТЗапустить @@ -1816,7 +1970,7 @@ true - StdPicture.GenerateReport + CommonPicture.ЮТЗапустить @@ -1837,7 +1991,7 @@ true - CommonPicture.ЮТУпал + CommonPicture.ЮТПерезапуститьУпавшие diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Form.suppress" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Form.suppress" deleted file mode 100644 index 4ec4b2b7c..000000000 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Form.suppress" +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Module.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Module.bsl" index d86639e43..e8942f913 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Module.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -37,6 +37,10 @@ Параметры.Свойство("ЗагрузитьТесты", ЗагрузитьТестыПриОткрытии); + Для Каждого Формат Из ФорматыВыводаОшибки() Цикл + Элементы.ФорматВыводаОшибки.СписокВыбора.Добавить(Формат.Ключ, Формат.Ключ); + КонецЦикла; + КонецПроцедуры &НаКлиенте @@ -49,6 +53,19 @@ ЗагрузитьТесты(); КонецЕсли; + ПереключитьВыводОшибки(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ФорматВыводаОшибкиПриИзменении(Элемент) + + ПереключитьВыводОшибки(); + КонецПроцедуры #КонецОбласти @@ -68,17 +85,7 @@ Элементы.ДеревоТестовОшибки.ТекущаяСтрока = Данные.Ошибки[0].ПолучитьИдентификатор(); КонецЕсли; - ОбновитьДоступностьСравнения(); - -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоТестовОшибки - -&НаКлиенте -Процедура ДеревоТестовОшибкиПриАктивизацииСтроки(Элемент) - + ОтобразитьДанныеОшибки(); ОбновитьДоступностьСравнения(); КонецПроцедуры @@ -90,13 +97,14 @@ &НаКлиенте Процедура Сравнить(Команда) - Данные = Элементы.ДеревоТестовОшибки.ТекущиеДанные; + Данные = ДанныеТекущейОшибки(); - Если Данные = Неопределено Или ПустаяСтрока(Данные.ОжидаемоеЗначение) И ПустаяСтрока(Данные.ФактическоеЗначение) Тогда + Если Данные = Неопределено ИЛИ ПустаяСтрока(Данные.ОжидаемоеЗначение) И ПустаяСтрока(Данные.ФактическоеЗначение) Тогда Возврат; КонецЕсли; ПараметрыФормы = Новый Структура("ОжидаемоеЗначение, ФактическоеЗначение", Данные.ОжидаемоеЗначение, Данные.ФактическоеЗначение); + ОткрытьФорму("Обработка.ЮТЮнитТесты.Форма.Сравнение", ПараметрыФормы, ЭтотОбъект, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры @@ -127,7 +135,7 @@ Процедура ПерезапуститьУпавшиеТесты(Команда) СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); - Статусы = ЮТОбщий.ЗначениеВМассиве(СтатусыИсполненияТеста.Ошибка, СтатусыИсполненияТеста.Сломан); + Статусы = ЮТКоллекции.ЗначениеВМассиве(СтатусыИсполненияТеста.Ошибка, СтатусыИсполненияТеста.Сломан); Модули = МодулиСоответствующиеСтатусу(Статусы); ВыполнитьТестовыеМодули(Модули); @@ -223,7 +231,7 @@ КонецЦикла; Элементы.СтатистикаВыполнения.Заголовок = ПредставлениеСтатистики(ОбщаяСтатистика); - + КонецПроцедуры &НаКлиенте @@ -246,13 +254,14 @@ &НаКлиентеНаСервереБезКонтекста Процедура ЗаполнитьОшибки(СтрокаДерева, ОписаниеОбъекта) + СтрокаДерева.Ошибки.Очистить(); Для Каждого Ошибка Из ОписаниеОбъекта.Ошибки Цикл СтрокаОшибки = СтрокаДерева.Ошибки.Добавить(); - СтрокаОшибки.Сообщение = Ошибка.Сообщение; - СтрокаОшибки.Стек = Ошибка.Стек; - СтрокаОшибки.ОжидаемоеЗначение = ЮТОбщий.ЗначениеСтруктуры(Ошибка, "ОжидаемоеЗначение"); - СтрокаОшибки.ФактическоеЗначение = ЮТОбщий.ЗначениеСтруктуры(Ошибка, "ПроверяемоеЗначение"); + ЗаполнитьЗначенияСвойств(СтрокаОшибки, Ошибка); + СтрокаОшибки.Лог.ЗагрузитьЗначения(Ошибка.Лог); + СтрокаОшибки.ОжидаемоеЗначение = ЮТКоллекции.ЗначениеСтруктуры(Ошибка, "ОжидаемоеЗначение"); + СтрокаОшибки.ФактическоеЗначение = ЮТКоллекции.ЗначениеСтруктуры(Ошибка, "ПроверяемоеЗначение"); КонецЦикла; @@ -457,12 +466,12 @@ ПараметрыЗапуска = ПараметрыЗапуска(); - ПараметрыЗагрузки = ЮТИсполнительКлиент.ПараметрыИсполнения(); + ПараметрыЗагрузки = ЮТИсполнительСлужебныйКлиент.ПараметрыИсполнения(); ПараметрыЗагрузки.Цепочка.Добавить(Новый ОписаниеОповещения("ПослеЗагрузкиТестов", ЭтотОбъект, ПараметрыЗапуска)); ПараметрыЗагрузки.ПараметрыЗапуска = ПараметрыЗапуска; - ЮТСобытия.Инициализация(ПараметрыЗагрузки.ПараметрыЗапуска); - ЮТИсполнительКлиент.ОбработчикЗагрузитьТесты(Неопределено, ПараметрыЗагрузки); + ЮТИсполнительСлужебныйКлиент.ВыполнитьИнициализацию(ПараметрыЗагрузки.ПараметрыЗапуска); + ЮТИсполнительСлужебныйКлиент.ОбработчикЗагрузитьТесты(Неопределено, ПараметрыЗагрузки); КонецПроцедуры @@ -504,7 +513,7 @@ ОбновитьОбщуюСтатистику(Истина); - ЮТКонтекст.УдалитьКонтекст(); + ЮТКонтекстСлужебный.УдалитьКонтекст(); КонецПроцедуры @@ -516,19 +525,21 @@ Процедура ВыполнитьТестовыеМодули(Модули) Если Модули.Количество() = 0 Тогда - ПоказатьПредупреждение(, "Нет тестов для запуска"); + ПоказатьПредупреждение( , "Нет тестов для запуска"); Возврат; КонецЕсли; ОповещениеПользователю("Прогон тестов", "Запушено выполнение тестов"); - ЮТСобытия.Инициализация(ПараметрыЗапускаТестирования); - ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(Модули); - ЮТСобытия.ПередВыполнениемТестов(Модули); + ЮТИсполнительСлужебныйКлиент.ВыполнитьИнициализацию(ПараметрыЗапускаТестирования); + ЮТСобытияСлужебный.ПослеФормированияИсполняемыхНаборовТестов(Модули); + ЮТСобытияСлужебный.ПередВыполнениемТестов(Модули); Для Каждого Модуль Из Модули Цикл - Результат = ЮТИсполнительКлиент.ВыполнитьТестыМодуля(Модуль); + СброситьСостояниеТестирования(Модуль); + + Результат = ЮТИсполнительСлужебныйКлиент.ВыполнитьТестыМодуля(Модуль); Для Каждого Набор Из Результат.НаборыТестов Цикл @@ -548,12 +559,31 @@ ОбновитьОбщуюСтатистику(Ложь); - ЮТКонтекст.УдалитьКонтекст(); + ЮТКонтекстСлужебный.УдалитьКонтекст(); ОповещениеПользователю("Прогон тестов завершен", "Завершено выполнение тестов"); КонецПроцедуры +&НаКлиенте +Процедура СброситьСостояниеТестирования(Модуль) + + Статусы = ЮТФабрика.СтатусыИсполненияТеста(); + + Модуль.Ошибки.Очистить(); + + Для Каждого Набор Из Модуль.НаборыТестов Цикл + Набор.Ошибки.Очистить(); + Набор.Выполнять = Истина; + + Для Каждого Тест Из Набор.Тесты Цикл + Тест.Ошибки.Очистить(); + Тест.Статус = Статусы.Ожидание; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + &НаКлиенте Функция ВыделенныеТестовыеМодули() @@ -585,7 +615,7 @@ КонецЦикла; Если ТестыКЗапуску.Количество() Тогда - ЗапускаемыйНабор = ЮТОбщий.СкопироватьСтруктуру(Набор); + ЗапускаемыйНабор = ЮТКоллекции.СкопироватьСтруктуру(Набор); ЗапускаемыйНабор.Тесты = ТестыКЗапуску; НаборыКЗапуску.Добавить(ЗапускаемыйНабор); КонецЕсли; @@ -594,7 +624,7 @@ Если НаборыКЗапуску.Количество() Тогда - ЗапускаемыйМодуль = ЮТОбщий.СкопироватьСтруктуру(Модуль); + ЗапускаемыйМодуль = ЮТКоллекции.СкопироватьСтруктуру(Модуль); ЗапускаемыйМодуль.НаборыТестов = НаборыКЗапуску; МодулиКЗапуску.Добавить(ЗапускаемыйМодуль); @@ -611,12 +641,6 @@ МодулиКЗапуску = Новый Массив(); - ВыделенныеСтроки = Элементы.ДеревоТестов.ВыделенныеСтроки; - - Если ВыделенныеСтроки.Количество() = 0 Тогда - Возврат МодулиКЗапуску; - КонецЕсли; - Для Каждого Модуль Из ИсполняемыеТестовыеМодули Цикл НаборыКЗапуску = Новый Массив(); @@ -632,7 +656,7 @@ КонецЦикла; Если ТестыКЗапуску.Количество() Тогда - ЗапускаемыйНабор = ЮТОбщий.СкопироватьСтруктуру(Набор); + ЗапускаемыйНабор = ЮТКоллекции.СкопироватьСтруктуру(Набор); ЗапускаемыйНабор.Тесты = ТестыКЗапуску; НаборыКЗапуску.Добавить(ЗапускаемыйНабор); КонецЕсли; @@ -641,7 +665,7 @@ Если НаборыКЗапуску.Количество() Тогда - ЗапускаемыйМодуль = ЮТОбщий.СкопироватьСтруктуру(Модуль); + ЗапускаемыйМодуль = ЮТКоллекции.СкопироватьСтруктуру(Модуль); ЗапускаемыйМодуль.НаборыТестов = НаборыКЗапуску; МодулиКЗапуску.Добавить(ЗапускаемыйМодуль); @@ -656,7 +680,7 @@ &НаКлиенте Процедура ВыполнитьЗапускТестовПоПараметрам(ПараметрыЗапуска, Обработчик) - ЮТИсполнительКлиент.ВыполнитьМодульноеТестированиеПоНастройке(ПараметрыЗапуска, Обработчик); + ЮТИсполнительСлужебныйКлиент.ВыполнитьМодульноеТестированиеПоНастройке(ПараметрыЗапуска, Обработчик); КонецПроцедуры @@ -677,14 +701,32 @@ КонецФункции #КонецОбласти + &НаКлиенте Процедура ОбновитьДоступностьСравнения() - Данные = Элементы.ДеревоТестовОшибки.ТекущиеДанные; - Элементы.Сравнить.Доступность = Данные <> Неопределено И (НЕ ПустаяСтрока(Данные.ОжидаемоеЗначение) Или НЕ ПустаяСтрока(Данные.ФактическоеЗначение)); + Данные = ДанныеТекущейОшибки();; + Элементы.Сравнить.Доступность = Данные <> Неопределено И (НЕ ПустаяСтрока(Данные.ОжидаемоеЗначение) ИЛИ НЕ ПустаяСтрока(Данные.ФактическоеЗначение)); КонецПроцедуры +&НаКлиенте +Функция ДанныеТекущейОшибки() + + Данные = Элементы.ДеревоТестовОшибки.ТекущиеДанные; + + Если Данные <> Неопределено Или ФорматВыводаОшибки = ФорматыВыводаОшибки().Текст Тогда + Возврат Данные; + КонецЕсли; + + ДанныеТеста = Элементы.ДеревоТестов.ТекущиеДанные; + + Если ДанныеТеста <> Неопределено И ЗначениеЗаполнено(ДанныеТеста.Ошибки) Тогда + Возврат ДанныеТеста.Ошибки[0]; + КонецЕсли; + +КонецФункции + &НаКлиенте Процедура ПослеВодаКоличестваИтерацийЗамера(Результат, ДополнительныеПараметры) Экспорт @@ -733,9 +775,9 @@ МедианноеВремя = Окр(Список[Цел(Список.Количество() / 2) + 1].Значение / 1000, 2); Сообщение = СтрШаблон("Количество итераций: %1 - |Общее время: %2 сек - |Среднее время: %3 сек - |Медианное время: %4 сек", ПараметрыЗамера.Замеры.Количество(), ОбщееВремя, СреднееВремя, МедианноеВремя); + |Общее время: %2 сек + |Среднее время: %3 сек + |Медианное время: %4 сек", ПараметрыЗамера.Замеры.Количество(), ОбщееВремя, СреднееВремя, МедианноеВремя); ЮТОбщий.СообщитьПользователю(Сообщение); @@ -755,4 +797,190 @@ КонецПроцедуры +#Область ВыводОшибки + +&НаКлиенте +Процедура ПереключитьВыводОшибки() + + Форматы = ФорматыВыводаОшибки(); + Если НЕ ЗначениеЗаполнено(ФорматВыводаОшибки) Тогда + ФорматВыводаОшибки = Форматы.HTML; + КонецЕсли; + + Элементы.ДеревоТестовОшибки.Видимость = ФорматВыводаОшибки = Форматы.Текст; + Элементы.ДеревоТестовОшибкиСтек.Видимость = ФорматВыводаОшибки = Форматы.Текст; + Элементы.ОтображениеОшибки.Видимость = ФорматВыводаОшибки = Форматы.HTML; + + Если ФорматВыводаОшибки = Форматы.HTML Тогда + ОтобразитьДанныеОшибки(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ФорматыВыводаОшибки() + + Форматы = Новый Структура(); + Форматы.Вставить("Текст", "Текст"); + Форматы.Вставить("HTML", "HTML"); + + Возврат Форматы; + +КонецФункции + +&НаКлиенте +Процедура ОтобразитьДанныеОшибки(); + + ДанныеТеста = Элементы.ДеревоТестов.ТекущиеДанные; + Если ДанныеТеста = Неопределено Или НЕ ЗначениеЗаполнено(ДанныеТеста.Ошибки) Тогда + Если ЭтоАдресВременногоХранилища(ОтображениеОшибки) Тогда + УдалитьИзВременногоХранилища(ОтображениеОшибки); + КонецЕсли; + ОтображениеОшибки = Неопределено; + Возврат; + КонецЕсли; + + ОтображениеОшибки = ДеревоОшибкиHTML(ОтображениеОшибки, ДанныеТеста.Ошибки); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДеревоОшибкиHTML(Знач АдресХранилища, Знач Ошибки) + + Если ЭтоАдресВременногоХранилища(АдресХранилища) Тогда + УдалитьИзВременногоХранилища(АдресХранилища); + КонецЕсли; + + Блоки = Новый Массив(); + + Для Каждого Ошибка Из Ошибки Цикл + ВывестиДанныеОшибки(Блоки, Ошибка); + КонецЦикла; + + ШаблонПредставленияОшибки = ЮТОбщий.Макет("ОбщийМакет.ЮТИнформацияОбОшибке").ПолучитьТекст(); + ПредставленияОшибки = СтрЗаменить(ШаблонПредставленияОшибки, "TREE_CONTENT", СтрСоединить(Блоки, Символы.ПС)); + + Возврат ПолучитьНавигационнуюСсылкуИнформационнойБазы() + "/"+ ПоместитьВоВременноеХранилище(ПредставленияОшибки, Новый УникальныйИдентификатор); + +КонецФункции + +&НаСервереБезКонтекста +Процедура ВывестиДанныеОшибки(Блоки, Ошибка) + + ТипыОшибок = ЮТФабрикаСлужебный.ТипыОшибок(); + Если Ошибка.ТипОшибки = ТипыОшибок.Утверждений Тогда + Класс = "failure"; + ИначеЕсли Ошибка.ТипОшибки = ТипыОшибок.Пропущен Тогда + Класс = "skipped"; + Иначе + Класс = "error"; + КонецЕсли; + + Блоки.Добавить(СтрШаблон("
+ |
+ | + | + |
%2
+ |
+ |", Класс, ЗаменитьСпецСимволы(Ошибка.Сообщение))); + Если ЗначениеЗаполнено(Ошибка.Лог) Или ЗначениеЗаполнено(Ошибка.Стек) Тогда + Блоки.Добавить("
"); + ВывестиЛог(Блоки, Ошибка.Лог); + ВывестиСтек(Блоки, Ошибка.Стек, Класс); + Блоки.Добавить("
"); + КонецЕсли; + Блоки.Добавить("
"); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ВывестиЛог(Блоки, Лог) + + Если НЕ ЗначениеЗаполнено(Лог) Тогда + Возврат; + КонецЕсли; + + Блоки.Добавить("
+ | Лог исполнения + |
"); + Для Каждого Строка Из Лог Цикл + Блоки.Добавить(СтрШаблон("
%1
", ЗаменитьСпецСимволы(Строка))); + КонецЦикла; + Блоки.Добавить("
"); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ВывестиСтек(Блоки, ПредставлениеСтека, Класс) + + Если НЕ ЗначениеЗаполнено(ПредставлениеСтека) Тогда + Возврат; + КонецЕсли; + + Стек = Стек(ПредставлениеСтека); + + Блоки.Добавить(СтрШаблон("
+ |
+ | + | + |
%2
+ |
+ |
+ |", Класс, ЗаменитьСпецСимволы(Стек.Сообщение))); + + Для Каждого Линия Из Стек.Линии Цикл + Блоки.Добавить(СтрШаблон("
+ |
%1
+ |
+ |", ЗаменитьСпецСимволы(Линия))); + КонецЦикла; + + Блоки.Добавить("
"); + +КонецПроцедуры +&НаСервереБезКонтекста +Функция ЗаменитьСпецСимволы(Знач Стр) + + Стр = СтрЗаменить(Стр, "&", "&"); + Стр = СтрЗаменить(Стр, """", """); + Стр = СтрЗаменить(Стр, "<", "<"); + Стр = СтрЗаменить(Стр, ">", ">"); + Стр = СтрЗаменить(Стр, "‘", "'"); + + Возврат СокрЛП(Стр); + +КонецФункции + +&НаСервереБезКонтекста +Функция Стек(Стек) + + Разделитель = Символы.ПС; + Строки = СтрРазделить(Стек, Разделитель); + + Корень = Новый Структура("Сообщение, Линии", Неопределено, Новый Массив()); + + Для Инд = 0 По Строки.ВГраница() Цикл + + Строка = Строки[Инд]; + Если СтрНачинаетсяС(Строка, "{") И СтрНайти(Строка, ")}") Тогда + НомерСтроки = Инд; + Прервать; + КонецЕсли; + + Корень.Сообщение = ЮТСтроки.ДобавитьСтроку(Корень.Сообщение, Строка, Разделитель); + КонецЦикла; + + Для Инд = НомерСтроки По Строки.ВГраница() Цикл + Строка = Строки[Инд]; + Если СтрНачинаетсяС(Строка, "{") И СтрНайти(Строка, ")}") Тогда + Корень.Линии.Добавить(Строка); + КонецЕсли; + КонецЦикла; + + Возврат Корень; + +КонецФункции + +#КонецОбласти + #КонецОбласти diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form.form" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form.form" index 04a3d1e56..70e3150f5 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form.form" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Form.form" @@ -709,33 +709,6 @@ true true true - - - ru - Отладка - - - debug - - - - - ru - Информация - - - info - - - - - ru - Ошибки - - - error - -
diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Module.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Module.bsl" index 0d3ce3bcb..013789fbd 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Module.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/Forms/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270/Module.bsl" @@ -26,6 +26,10 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Для Каждого УровеньЛог Из ЮТЛогирование.УровниЛога() Цикл + Элементы.УровеньЛога.СписокВыбора.Добавить(УровеньЛог.Значение, УровеньЛог.Ключ); + КонецЦикла; + Конфигурация = ЮТФабрика.ПараметрыЗапуска(); ФорматОтчета = Конфигурация.reportFormat; УровеньЛога = Конфигурация.logging.level; @@ -40,7 +44,7 @@ ЗаполнитьДеревоТестов(); - ПоддерживаемыеФорматыОтчетов = ЮТОтчет.ПоддерживаемыеФорматыОтчетов(); + ПоддерживаемыеФорматыОтчетов = ЮТОтчетСлужебный.ПоддерживаемыеФорматыОтчетов(); Для Каждого Формат Из ПоддерживаемыеФорматыОтчетов Цикл Элементы.ФорматОтчета.СписокВыбора.Добавить(Формат.Ключ, Формат.Значение.Представление); КонецЦикла; @@ -163,9 +167,9 @@ &НаКлиенте Процедура ЗаполнитьДеревоТестов() - ЮТКонтекст.ИнициализироватьКонтекст(); - ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Новый Структура("filter", Новый Структура)); - ЮТКонтекст.УдалитьКонтекст(); + ЮТКонтекстСлужебный.ИнициализироватьКонтекст(); + ТестовыеМодули = ЮТЧитательСлужебный.ЗагрузитьТесты(Новый Структура("filter", Новый Структура)); + ЮТКонтекстСлужебный.УдалитьКонтекст(); СтрокиРасширений = Новый Соответствие(); @@ -248,7 +252,7 @@ &НаКлиентеНаСервереБезКонтекста Функция ДобавитьСтрокуТеста(Владелец, Тест) - Представление = ЮТФабрика.ПредставлениеТеста(Тест); + Представление = ЮТФабрикаСлужебный.ПредставлениеТеста(Тест); Если Владелец.ТипОбъекта = 1 Тогда СтрокаМодуля = Владелец; @@ -329,7 +333,7 @@ &НаКлиенте Процедура ОбновитьСтрокуЗапуска() - ПараметрыЗапускаЮнитТестов = СтрШаблон("%1=%2", ЮТПараметрыЗапуска.КлючЗапуска(), ФайлКонфигурации); + ПараметрыЗапускаЮнитТестов = СтрШаблон("%1=%2", ЮТПараметрыЗапускаСлужебный.КлючЗапуска(), ФайлКонфигурации); Если ЗапускИзКонфигуратор Тогда diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213.mdo" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213.mdo" index 943d35224..c5f111e5f 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213.mdo" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213/\320\256\320\242\320\256\320\275\320\270\321\202\320\242\320\265\321\201\321\202\321\213.mdo" @@ -62,7 +62,7 @@ NavigationPanelImportant PictureAndText - CommonPicture.ЮТПодсистема + CommonPicture.ЮТЗапустить diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214.mdo" index 6b30b5377..fc20d748a 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214.mdo" @@ -10,13 +10,14 @@ ru Функциональность запуска тестирования - CommonModule.ЮТИсполнительГлобальный - CommonModule.ЮТИсполнительКлиент - CommonModule.ЮТИсполнительКлиентСервер - CommonModule.ЮТИсполнительСервер - CommonModule.ЮТЧитатель - CommonModule.ЮТЧитательСервер - CommonModule.ЮТФильтрация - CommonModule.ЮТПараметрыЗапуска + CommonModule.ЮТИсполнительСлужебныйВызовСервера + CommonModule.ЮТИсполнительСлужебныйГлобальный + CommonModule.ЮТИсполнительСлужебныйКлиент + CommonModule.ЮТИсполнительСлужебныйКлиентСервер + CommonModule.ЮТПараметрыЗапускаСлужебный + CommonModule.ЮТТестыСлужебный + CommonModule.ЮТФильтрацияСлужебный + CommonModule.ЮТЧитательСлужебный + CommonModule.ЮТЧитательСлужебныйВызовСервера Subsystem.ЮТДвижок diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.mdo" index 59fbb6222..e3df6c51c 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202/\320\256\320\242\320\232\320\276\320\275\321\202\320\265\320\272\321\201\321\202.mdo" @@ -10,9 +10,9 @@ ru Функциональность работы с контекстами - CommonModule.ЮТКонтекст - CommonModule.ЮТКонтекстКлиент + CommonModule.ЮТКонтекстСлужебный + CommonModule.ЮТКонтекстСлужебныйВызовСервера + CommonModule.ЮТКонтекстСлужебныйКлиент CommonModule.ЮТКонтекстТеста - CommonModule.ЮТКонтекстСервер Subsystem.ЮТДвижок diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" index 377ee3c6f..820d5e445 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" @@ -10,18 +10,27 @@ ru Сервисная функциональность работы движка - CommonModule.ЮТЛогированиеВызовСервера CommonModule.ЮТАсинхроннаяОбработкаСлужебныйКлиент - CommonModule.ЮТФабрика - CommonModule.ЮТФайлы - CommonModule.ЮТТипыДанныхСлужебный - CommonModule.ЮТСообщенияСлужебный - CommonModule.ЮТСобытия - CommonModule.ЮТРегистрацияОшибок - CommonModule.ЮТРасширения + CommonModule.ЮТИсключения + CommonModule.ЮТКомпоненты + CommonModule.ЮТКомпонентыСлужебныйВызовСервера + CommonModule.ЮТКомпонентыСлужебныйКлиент + CommonModule.ЮТЛогированиеСлужебныйВызовСервера + CommonModule.ЮТЛокальСлужебный + CommonModule.ЮТМетаданныеСлужебныйВызовСервера + CommonModule.ЮТМетаданныеСлужебныйПовтИсп + CommonModule.ЮТНастройкиВыполнения + CommonModule.ЮТОбщийСлужебныйВызовСервера + CommonModule.ЮТОтчетСлужебный CommonModule.ЮТПроверкиСлужебный - CommonTemplate.ЮТRegEx1CAddin - CommonTemplate.ЮТYaxUnitAddIn + CommonModule.ЮТРасширенияСлужебный + CommonModule.ЮТРегистрацияОшибокСлужебный + CommonModule.ЮТСлужебныйПовторногоИспользования + CommonModule.ЮТСобытияСлужебный + CommonModule.ЮТСообщенияСлужебный + CommonModule.ЮТТипыДанныхСлужебный + CommonModule.ЮТФабрикаСлужебный + CommonModule.ЮТФайлы CommonPicture.ЮТНеизвестный CommonPicture.ЮТОшибка CommonPicture.ЮТПодсистема @@ -29,16 +38,8 @@ CommonPicture.ЮТУпал CommonPicture.ЮТУспешно CommonPicture.ЮТЭлементыТестов - CommonModule.ЮТКомпоненты - CommonModule.ЮТКомпонентыВызовСервера - CommonModule.ЮТКомпонентыКлиент - CommonModule.ЮТЛокальСлужебный - CommonModule.ЮТМетаданныеПовтИсп - CommonModule.ЮТМетаданныеСервер - CommonModule.ЮТОбщийВызовСервера - CommonModule.ЮТПовторногоИспользования + CommonTemplate.ЮТRegEx1CAddin + CommonTemplate.ЮТYaxUnitAddIn CommonTemplate.ЮТОписаниеМетаданных - CommonModule.ЮТНастройкиВыполнения - CommonModule.ЮТОтчет Subsystem.ЮТДвижок diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Subsystems/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Subsystems/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214.mdo" index 493a7a04b..318df51af 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Subsystems/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Subsystems/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214/\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214.mdo" @@ -10,9 +10,9 @@ CommonModule.ЮТПодражатель_Банки CommonModule.ЮТПодражатель_Компании CommonModule.ЮТПодражатель_Люди - CommonModule.ЮТПодражательВызовСервера - CommonModule.ЮТПодражательПовтИсп CommonModule.ЮТПодражательСлужебный + CommonModule.ЮТПодражательСлужебныйВызовСервера + CommonModule.ЮТПодражательСлужебныйПовтИсп CommonTemplate.ЮТ_СловарьПодражателя_Компании_Наименования_ru CommonTemplate.ЮТ_СловарьПодражателя_Компании_ПрефиксыНаименований_ru CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеИмена_ru diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" index 65cbcd3f4..64b093691 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" @@ -10,15 +10,15 @@ ru Реализация генерации и работы с тестовыми данными + CommonModule.ЮТКонструкторВариантов CommonModule.ЮТКонструкторТестовыхДанныхСлужебный + CommonModule.ЮТПреобразованияСлужебный + CommonModule.ЮТСтроки CommonModule.ЮТТестовыеДанные - CommonModule.ЮТТестовыеДанные_ТаблицыЗначений - CommonModule.ЮТТестовыеДанныеВызовСервера CommonModule.ЮТТестовыеДанныеСлужебный + CommonModule.ЮТТестовыеДанныеСлужебныйВызовСервера + CommonModule.ЮТТестовыеДанныеСлужебныйТаблицыЗначений DataProcessor.ЮТКонструкторТестовыхДанных - CommonModule.ЮТСтроки - CommonModule.ЮТПреобразования - CommonModule.ЮТКонструкторВариантов ЮТПодражатель Subsystem.ЮТДвижок diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.mdo" index 6d5974624..ee51e8980 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217.mdo" @@ -10,13 +10,13 @@ ru Реализация утверждений для проверки результатов при тестировании + CommonModule.ЮТЗапросыСлужебныйВызовСервера + CommonModule.ЮТЗапросыСлужебныйКлиентСервер + CommonModule.ЮТПредикаты + CommonModule.ЮТПредикатыСлужебныйКлиентСервер + CommonModule.ЮТСравнениеСлужебныйВызовСервера + CommonModule.ЮТСравнениеСлужебныйКлиентСервер CommonModule.ЮТУтверждения CommonModule.ЮТУтвержденияИБ - CommonModule.ЮТПредикаты - CommonModule.ЮТПредикатыКлиентСервер - CommonModule.ЮТЗапросыВызовСервера - CommonModule.ЮТЗапросыКлиентСервер - CommonModule.ЮТСравнениеСервер - CommonModule.ЮТСравнениеКлиентСервер Subsystem.ЮТДвижок diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.mdo" index cf120167b..fb20ea619 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/\320\256\320\242\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.mdo" @@ -11,8 +11,8 @@ Подключаемые обработчики событий тестов CommonModule.МокитоСлужебный - CommonModule.ЮТИсполнительКлиент - CommonModule.ЮТЛогирование + CommonModule.ЮТИсполнительСлужебныйКлиент + CommonModule.ЮТЛогированиеСлужебный CommonModule.ЮТТестовыеДанныеСлужебный CommonModule.ЮТУтверждения Subsystem.ЮТДинамическиПодключаемые diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260.mdo" index 0914fa457..da86b8b76 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265/Subsystems/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260/\320\256\320\242\320\244\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\236\321\202\321\207\320\265\321\202\320\260.mdo" @@ -10,8 +10,8 @@ ru Функциональность формирования отчетов - CommonModule.ЮТОтчетAllure - CommonModule.ЮТОтчетJSON - CommonModule.ЮТОтчетJUnit + CommonModule.ЮТОтчетAllureСлужебный + CommonModule.ЮТОтчетJSONСлужебный + CommonModule.ЮТОтчетJUnitСлужебный Subsystem.ЮТДинамическиПодключаемые diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271.mdo" index a898a25a8..56ec76599 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271/\320\256\320\242\320\237\321\203\320\261\320\273\320\270\321\207\320\275\321\213\320\271.mdo" @@ -14,13 +14,35 @@ CommonPicture.ЮТПодсистема - CommonModule.ЮТест - CommonModule.ЮТОбщий - CommonModule.ЮТТесты CommonModule.Мокито + CommonModule.МокитоОбучение + CommonModule.МокитоПроверки + CommonModule.ЮТест CommonModule.ЮТЗапросы - CommonModule.ЮТМетаданные + CommonModule.ЮТИсключения + CommonModule.ЮТКоллекции + CommonModule.ЮТКомпоненты + CommonModule.ЮТКонструкторВариантов + CommonModule.ЮТКонтекстТеста CommonModule.ЮТЛогирование - DataProcessor.ЮТЮнитТесты + CommonModule.ЮТМетаданные + CommonModule.ЮТНастройкиВыполнения + CommonModule.ЮТОбщий + CommonModule.ЮТПодражатель + CommonModule.ЮТПодражатель_Банки + CommonModule.ЮТПодражатель_Компании + CommonModule.ЮТПодражатель_Люди + CommonModule.ЮТПредикаты + CommonModule.ЮТСтроки + CommonModule.ЮТТестовыеДанные + CommonModule.ЮТТесты CommonModule.ЮТУтверждения + CommonModule.ЮТУтвержденияИБ + CommonModule.ЮТФабрика + CommonModule.ЮТФайлы + DataProcessor.ЮТHTTPServiceRequest + DataProcessor.ЮТHTTPСервисЗапрос + DataProcessor.ЮТRecordSet + DataProcessor.ЮТКонструкторТестовыхДанных + DataProcessor.ЮТЮнитТесты diff --git "a/fixtures/demo-configuration/src/CommonAttributes/\320\236\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\321\217/\320\236\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\321\217.mdo" "b/fixtures/demo-configuration/src/CommonAttributes/\320\236\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\321\217/\320\236\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\321\217.mdo" new file mode 100644 index 000000000..d14787c9e --- /dev/null +++ "b/fixtures/demo-configuration/src/CommonAttributes/\320\236\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\321\217/\320\236\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\321\217.mdo" @@ -0,0 +1,25 @@ + + + Организация + + ru + Организация + + + CatalogRef.Организации + + + + Use + + + Catalog.Склады + Use + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + diff --git a/fixtures/demo-configuration/src/Configuration/Configuration.mdo b/fixtures/demo-configuration/src/Configuration/Configuration.mdo index 9d802d5d2..27e86a9f3 100644 --- a/fixtures/demo-configuration/src/Configuration/Configuration.mdo +++ b/fixtures/demo-configuration/src/Configuration/Configuration.mdo @@ -132,6 +132,7 @@ CommonModule.ИнтеграцияМагазин CommonModule.ОбменМобильныеОбщее CommonModule.ОбменМобильныеПереопределяемый + CommonModule.ПодпискиНаСобытия CommonModule.Пользователи CommonModule.Помощник CommonModule.ПомощникКлиент @@ -147,14 +148,14 @@ CommonModule.СервисныеМеханизмы CommonModule.УведомленияКлиент CommonModule.УведомленияСервер - CommonModule.ПодпискиНаСобытия + CommonAttribute.Организация ExchangePlan.Мобильные XDTOPackage.ОбменСМобильнымУстройством WebService.MAExchange HTTPService.ОписанияТоваров HTTPService.Товары - EventSubscription.ПередЗаписьюСправочника EventSubscription.ПередЗаписьюДокумента + EventSubscription.ПередЗаписьюСправочника ScheduledJob.ОбновлениеАгрегатовПродаж ScheduledJob.ОбновлениеИндексаППД ScheduledJob.ОбновлениеИсторииДанных diff --git "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo" "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo" index 3deb618f1..13aebb088 100644 --- "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo" +++ "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo" @@ -23,7 +23,7 @@ Active - Use + DontUse @@ -33,7 +33,7 @@ LineNumber - Use + DontUse @@ -43,7 +43,7 @@ Recorder - Use + DontUse @@ -54,7 +54,7 @@ ShowError - Use + DontUse @@ -96,7 +96,6 @@ 10 2 - true @@ -106,13 +105,10 @@ - DontUse Use - Use + DontUse Use - - 0 - + Товар @@ -133,7 +129,7 @@ ShowError true - Use + DontUse Use true @@ -156,7 +152,7 @@ ShowError - Use + DontUse Use Catalog.ВидыЦен.EmptyRef diff --git "a/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ManagerModule.bsl" "b/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ManagerModule.bsl" index 4643d85fe..c2a7ce9eb 100644 --- "a/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ManagerModule.bsl" +++ "b/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ManagerModule.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ ПараметрыМетода = Мокито.МассивПараметров(ОбрабатываемыеЭлементы); ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(Справочники.Встречи, "СохранитьИзменения", ПараметрыМетода, ПрерватьВыполнение); + Результат = МокитоПерехват.АнализВызова(Справочники.Встречи, "СохранитьИзменения", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда Возврат ПродолжитьВызов(ОбрабатываемыеЭлементы); @@ -38,7 +38,7 @@ ПараметрыМетода = Мокито.МассивПараметров(Объект, ОбрабатываемыйЭлемент); ПрерватьВыполнение = Ложь; - Мокито.АнализВызова(Справочники.Встречи, "ЗаполнитьОбъект", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(Справочники.Встречи, "ЗаполнитьОбъект", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(Объект, ОбрабатываемыйЭлемент); diff --git "a/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ObjectModule.bsl" "b/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ObjectModule.bsl" index f56f56e71..b4238820d 100644 --- "a/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ObjectModule.bsl" +++ "b/tests/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\270/ObjectModule.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ ПараметрыМетода = Новый Массив(); ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(ЭтотОбъект, "УказанКорректныйПериод", ПараметрыМетода, ПрерватьВыполнение); + Результат = МокитоПерехват.АнализВызова(ЭтотОбъект, "УказанКорректныйПериод", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда Возврат ПродолжитьВызов(); @@ -38,7 +38,7 @@ ПараметрыМетода = Мокито.МассивПараметров(Отказ); ПрерватьВыполнение = Ложь; - Мокито.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(Отказ); diff --git "a/tests/src/Catalogs/\320\242\320\276\320\262\320\260\321\200\321\213/ObjectModule.bsl" "b/tests/src/Catalogs/\320\242\320\276\320\262\320\260\321\200\321\213/ObjectModule.bsl" index 6bb311c9d..958f0846f 100644 --- "a/tests/src/Catalogs/\320\242\320\276\320\262\320\260\321\200\321\213/ObjectModule.bsl" +++ "b/tests/src/Catalogs/\320\242\320\276\320\262\320\260\321\200\321\213/ObjectModule.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ ПараметрыМетода = Мокито.МассивПараметров(ТабличныйДокумент); ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(ЭтотОбъект, "ПечатнаяФормаШтрихкода", ПараметрыМетода, ПрерватьВыполнение); + Результат = МокитоПерехват.АнализВызова(ЭтотОбъект, "ПечатнаяФормаШтрихкода", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда Возврат ПродолжитьВызов(ТабличныйДокумент); diff --git "a/tests/src/CommonModules/\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\321\217/Module.bsl" "b/tests/src/CommonModules/\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\321\217/Module.bsl" index daacd19d4..39c2b26b4 100644 --- "a/tests/src/CommonModules/\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\321\217/Module.bsl" +++ "b/tests/src/CommonModules/\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\321\217/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ ПараметрыМетода = Мокито.МассивПараметров(Адрес, ФорматОтвета, Авторизация); ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(Интеграция, "ВыполнитьЗапрос", ПараметрыМетода, ПрерватьВыполнение); + Результат = МокитоПерехват.АнализВызова(Интеграция, "ВыполнитьЗапрос", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда Возврат ПродолжитьВызов(Адрес, ФорматОтвета, Авторизация); @@ -38,7 +38,7 @@ ПараметрыМетода = Новый Массив; ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(Интеграция, "Методы", ПараметрыМетода, ПрерватьВыполнение); + Результат = МокитоПерехват.АнализВызова(Интеграция, "Методы", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда Возврат ПродолжитьВызов(); diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" index 9b8f0f68e..172a6d0be 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -47,9 +47,9 @@ Мокито.Обучение(Интеграция) .Когда(Интеграция.ВыполнитьЗапрос(ЛюбойПараметр, ЛюбойПараметр, ЛюбойПараметр)) - .Вернуть(1) + .Вернуть(1) .Когда(Интеграция.ВыполнитьЗапрос(Адрес, ЛюбойПараметр, ЛюбойПараметр)) - .Вернуть(2) + .Вернуть(2) .Прогон(); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Неопределено, 2), Описание + ". Кейс 1") @@ -61,9 +61,9 @@ Мокито.Обучение(Интеграция) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЛюбойПараметр)) - .Вернуть(20) + .Вернуть(20) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(Адрес, 2)) - .Вернуть(2) + .Вернуть(2) .Прогон(); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, 2), Описание + ". Кейс 1") @@ -82,7 +82,7 @@ .Когда(Интеграция.ВыполнитьЗапрос(Адрес)).Вернуть(2) .Когда(Интеграция.ВыполнитьЗапрос(Адрес)).Вернуть(3) .Прогон(); - + ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес), "Вызов 1").Равно(1); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес), "Вызов 2").Равно(2); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес), "Вызов 3").Равно(3); @@ -97,10 +97,8 @@ Адрес = "service.com"; Мокито.Обучение(Интеграция) - .Когда(Интеграция.ВыполнитьЗапрос(ЛюбойПараметр, ЛюбойПараметр)) - .Вернуть(1) - .Когда(Интеграция.ВыполнитьЗапрос(Адрес, 2)) - .Вернуть(10) + .Когда(Интеграция.ВыполнитьЗапрос(ЛюбойПараметр, ЛюбойПараметр)).Вернуть(1) + .Когда(Интеграция.ВыполнитьЗапрос(Адрес, 2)).Вернуть(10) .Прогон(); Интеграция.ВыполнитьЗапрос("Адрес", Неопределено); @@ -114,7 +112,7 @@ .КоличествоВызовов(Интеграция.ВыполнитьЗапрос(1, 2)).Равно(1) .КоличествоВызовов(Интеграция.ВыполнитьЗапрос(ЛюбойПараметр, ЛюбойПараметр)).Равно(3) .КоличествоВызовов(Интеграция.ВыполнитьЗапрос(Мокито.ТипизированныйПараметр(Тип("Строка")), ЛюбойПараметр)).Равно(2) - ; + ; ВызовыМетода = Мокито.Проверить(Интеграция).Вызовы("ВыполнитьЗапрос"); ЮТест.ОжидаетЧто(ВызовыМетода, "Вызовы метода ВыполнитьЗапрос") @@ -226,10 +224,10 @@ ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки()) // Проверка сформированных настроек .Свойство("Перехват").ИмеетСвойство(Справочники.Встречи) - .Свойство("ТипыПерехватываемыхОбъектов") - .ИмеетДлину(2); + .Свойство("ТипыПерехватываемыхОбъектов").ИмеетДлину(2) + ; - Успешно = Справочники.Встречи.СохранитьИзменения(ЮТОбщий.ЗначениеВМассиве(Запись)); + Успешно = Справочники.Встречи.СохранитьИзменения(ЮТКоллекции.ЗначениеВМассиве(Запись)); ЮТест.ОжидаетЧто(Успешно).ЭтоИстина(); @@ -252,10 +250,8 @@ .Записать(); Мокито.Обучение(Встреча) - .Когда("УказанКорректныйПериод") - .Вернуть(Истина) - .Когда("УказанКорректныйПериод") - .Вернуть(Ложь) + .Когда("УказанКорректныйПериод").Вернуть(Истина) + .Когда("УказанКорректныйПериод").Вернуть(Ложь) .Прогон(); Объект = Встреча.ПолучитьОбъект(); @@ -264,11 +260,11 @@ .ЭтоИстина() .Что(Объект.ПроверитьЗаполнение(), "Вторая проверка") .ЭтоЛожь() - ; + ; Мокито.Проверить(Встреча) .КоличествоВызовов("УказанКорректныйПериод").Равно(2) - ; + ; КонецПроцедуры @@ -284,13 +280,10 @@ Объект2 = Встреча.ПолучитьОбъект(); Мокито.Обучение(Объект1) - .Когда("УказанКорректныйПериод") - .Вернуть(Истина) - .Когда("УказанКорректныйПериод") - .Вернуть(Ложь) - .Обучение(Объект2) - .Когда("УказанКорректныйПериод") - .Вернуть(Ложь) + .Когда("УказанКорректныйПериод").Вернуть(Истина) + .Когда("УказанКорректныйПериод").Вернуть(Ложь) + .Обучение(Объект2) + .Когда("УказанКорректныйПериод").Вернуть(Ложь) .Прогон(); ЮТест.ОжидаетЧто(Объект1.ПроверитьЗаполнение(), "Первая проверка") @@ -311,12 +304,10 @@ Мокито.Обучение(РегистрыСведений.ЦеныТоваров) .Наблюдать("ОбработкаПроверкиЗаполнения") - .Когда("ЗаполненоКорректно") - .Пропустить() - .Когда("ЗаполненоКорректно") - .ВыброситьИсключение("Цена товара не может быть отрицательной") + .Когда("ЗаполненоКорректно").Пропустить() + .Когда("ЗаполненоКорректно").ВыброситьИсключение("Цена товара не может быть отрицательной") .Прогон() - ; + ; НаборЗаписей = РегистрыСведений.ЦеныТоваров.СоздатьНаборЗаписей(); ЮТест.ОжидаетЧто(НаборЗаписей) @@ -415,12 +406,11 @@ Процедура ОшибкаПодбораРеакции() Экспорт Мокито.Обучение(Интеграция) - .Когда("ВыполнитьЗапрос") - .ВыброситьИсключение("Не установлен ответ") + .Когда("ВыполнитьЗапрос").ВыброситьИсключение("Не установлен ответ") .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров("api/versions")) - .Вернуть(200) + .Вернуть(200) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров("sessions")) - .Вернуть(200) + .Вернуть(200) .Прогон(); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("api/versions")).Равно(200); @@ -428,7 +418,7 @@ Мокито.Обучение(Интеграция, Ложь) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров("sessions")) - .Вернуть(403) + .Вернуть(403) .Прогон(); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("api/versions")).Равно(200); @@ -449,20 +439,20 @@ .Когда("ВыполнитьЗапрос") .ВыброситьИсключение("Не отработал перехват") .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, УсловиеСтруктура)) - .Вернуть(1) + . Вернуть(1) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЮТест.Предикат().Реквизит("Флаг").Равно(2))) - .Вернуть(2) + .Вернуть(2) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЮТест.Предикат().ИмеетТип("Массив").Реквизит(0).Равно(3))) - .Вернуть(3) + .Вернуть(3) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, ЮТест.Предикат().Равно(4))) - .Вернуть(4) + .Вернуть(4) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЮТест.Предикат().Содержит("com"), ЮТест.Предикат().Равно(4))) - .Вернуть(5) + .Вернуть(5) .Когда("ВыполнитьЗапрос", Мокито.МассивПараметров(ЮТест.Предикат().Содержит("org").Получить(), ЮТест.Предикат().Равно(4))) - .Вернуть(6) + .Вернуть(6) .Прогон() ; - + ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, Новый Структура("Флаг", 1))) .Равно(1); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, 4)) @@ -470,8 +460,8 @@ ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("service.com", 4)) .Равно(4); // Не вернет 5, потому что если несколько предиктов в условиях параметров, нужно использовать Получить ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("service.org", 4)) - .Равно(6); // - ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, ЮТОбщий.ЗначениеВМассиве(3))) + .Равно(6); // + ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, ЮТКоллекции.ЗначениеВМассиве(3))) .Равно(3); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(Адрес, Новый Структура("Флаг", 2))) .Равно(2); @@ -480,15 +470,15 @@ .КоличествоВызовов("ВыполнитьЗапрос").Равно(6) .КоличествоВызовов("ВыполнитьЗапрос", Мокито.МассивПараметров(ЮТест.Предикат().Содержит("ru"))).Равно(4) .КоличествоВызовов("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, Новый Структура("Флаг", 2))).Равно(1) -КонецПроцедуры - -Процедура МокированиеЦепочкиВызовов() Экспорт + КонецПроцедуры - Мокито.Обучение(Интеграция) +Процедура МокированиеЦепочкиВызовов() Экспорт + + Мокито.Обучение(Интеграция) .Когда("ВыполнитьЗапрос") - .Вернуть(1) - .Вернуть(2) - .Вернуть(3) + .Вернуть(1) + .Вернуть(2) + .Вернуть(3) .Прогон(); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("")) @@ -499,6 +489,7 @@ .Равно(3); ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос("")) .Равно(3); + КонецПроцедуры #КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276.mdo" index 4a86e2a5e..c7e7e7e19 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276.mdo" @@ -3,7 +3,7 @@ ОМ_Мокито ru - О м мокито + Мокито true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 52786c60e..15c13e32b 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -3,7 +3,7 @@ ОМ_МокитоСлужебный ru - О м мокито служебный + Мокито служебный true
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl" index e5f7de340..311c0a5f3 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,15 +21,11 @@ Процедура ИсполняемыеСценарии() Экспорт ЮТТесты - .ДобавитьТест("ДобавитьСтроку") - .ДобавитьТест("ОбъединитьВСтруктуру") - .ДобавитьТест("СформироватьСтрокуСимволов") - .ДобавитьТест("ДанныеСовпадают") .ДобавитьТест("Пауза") .ДобавитьТест("ВывестиВКонсоль") .ДобавитьСерверныйТест("Менеджер") .ДобавитьТест("ЗначениеСвойства") - ; + ; КонецПроцедуры @@ -42,7 +38,7 @@ Дельта = ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало; ЮТест.ОжидаетЧто(Дельта) - .МеждуИсключаяГраницы(3000, 3200); + .МеждуИсключаяГраницы(3000, 3999); КонецПроцедуры @@ -52,88 +48,6 @@ КонецПроцедуры -Процедура ДобавитьСтроку() Экспорт - - Варианты = ЮТест.Варианты("Исходная, Дополнение, Разделитель, Результат") - .Добавить("1", "2", "+", "1+2") - .Добавить("", "2", "+", "2") - .Добавить("1", "", "+", "1") - .Добавить(Неопределено, "2", "+", "2") - .Добавить("1", "2", Неопределено, "12") - .СписокВариантов(); - - Для Каждого Вариант Из Варианты Цикл - - Результат = ЮТОбщий.ДобавитьСтроку(Вариант.Исходная, Вариант.Дополнение, Вариант.Разделитель); - - Сообщение = СтрШаблон("ДобавитьСтроку(%1, %2, %3)", Вариант.Исходная, Вариант.Дополнение, Вариант.Разделитель); - ЮТест.ОжидаетЧто(Результат, Сообщение).Равно(Вариант.Результат); - - КонецЦикла; - -КонецПроцедуры - -Процедура ОбъединитьВСтруктуру() Экспорт - - Варианты = ЮТест.Варианты("Описание, Исходная, Добавляемая, Результат") - .Добавить("Структуры без пересечения", "Строка, Число", "Дата", "Строка, Число, Дата") - .Добавить("Структуры с пересечением", "Строка, Число", "Дата, Число", "Строка, Число, Дата") - .Добавить("Добавление пустой структуры", "Строка, Число", "", "Строка, Число") - .Добавить("Добавление в пустую структуру", "", "Строка, Число", "Строка, Число") - .СписокВариантов(); - - Для Каждого Вариант Из Варианты Цикл - - Для Режим = 1 По 3 Цикл - - ИсходнаяЭтоСоответствие = Режим = 1 ИЛИ Режим = 3; - ДобавляемаяЭтоСоответствие = Режим = 2 ИЛИ Режим = 3; - - Исходная = СтруктураДляОбъединения(Вариант.Исходная, ИсходнаяЭтоСоответствие); - Добавляемая = СтруктураДляОбъединения(Вариант.Добавляемая, ДобавляемаяЭтоСоответствие); - - Результат = ЮТОбщий.ОбъединитьВСтруктуру(Исходная, Добавляемая); - - ЮТест.ОжидаетЧто(Результат, Вариант.Описание) - .Заполнено() - .ИмеетТип("Структура"); - - Для Каждого Ключ Из СтрРазделить(Вариант.Результат, ", ", Ложь) Цикл - - ЕстьКлюч = ДобавляемаяЭтоСоответствие И Добавляемая[Ключ] <> Неопределено - ИЛИ НЕ ДобавляемаяЭтоСоответствие И Добавляемая.Свойство(Ключ); - Если ЕстьКлюч Тогда - ЮТУтверждения.Свойство(Ключ).Равно(Добавляемая[Ключ]); - Иначе - ЮТУтверждения.Свойство(Ключ).Равно(Исходная[Ключ]); - КонецЕсли; - - КонецЦикла; - - КонецЦикла; - - КонецЦикла; - -КонецПроцедуры - -Процедура СформироватьСтрокуСимволов() Экспорт - - Варианты = ЮТест.Варианты("Символ, Количество, Результат") - .Добавить("1", 1, "1") - .Добавить("12", 0, "") - .Добавить("12", 2, "1212") - .СписокВариантов(); - - Для Каждого Вариант Из Варианты Цикл - - Результат = ЮТОбщий.СформироватьСтрокуСимволов(Вариант.Символ, Вариант.Количество); - ЮТест.ОжидаетЧто(Результат, СтрШаблон("%1 * %2", Вариант.Символ, Вариант.Количество)) - .Равно(Вариант.Результат); - - КонецЦикла; - -КонецПроцедуры - #Если Сервер Тогда Процедура Менеджер() Экспорт @@ -146,7 +60,7 @@ .Добавить(Тип("СправочникСсылка.Товары"), Справочники.Товары) .Добавить(ЮТМетаданные.ОписаниеОбъектаМетаданных("Справочник.Товары"), Справочники.Товары) .Добавить("РегистрыНакопления.Взаиморасчеты", РегистрыНакопления.Взаиморасчеты) - ; + ; Для Каждого Вариант Из Варианты.СписокВариантов() Цикл @@ -161,7 +75,7 @@ Процедура ЗначениеСвойства() Экспорт - Массив = ЮТОбщий.ЗначениеВМассиве(1, 2, 3); + Массив = ЮТКоллекции.ЗначениеВМассиве(1, 2, 3); Структура = Новый Структура("Число, Массив", 1, Массив); Варианты = ЮТест.Варианты("Значение, Свойство, Результат") @@ -171,7 +85,7 @@ .Добавить(Массив, 1, 2) .Добавить(Структура, "Число", 1) .Добавить(Структура, "Массив[0]", 1) - ; + ; КонецПроцедуры @@ -179,63 +93,4 @@ #Область СлужебныеПроцедурыИФункции -Функция СтруктураДляОбъединения(КлючиСтрокой, Соответствие) - - Ключи = СтрРазделить(КлючиСтрокой, ", ", Ложь); - - Если Соответствие Тогда - Результат = Новый Соответствие(); - Иначе - Результат = Новый Структура(); - КонецЕсли; - - Для Каждого Ключ Из Ключи Цикл - - Если СтрСравнить(Ключ, "Число") Тогда - Значение = ЮТест.Данные().СлучайноеЧисло(); - ИначеЕсли СтрСравнить(Ключ, "Дата") Тогда - Значение = ЮТест.Данные().СлучайнаяДата(); - Иначе - Значение = ЮТест.Данные().СлучайнаяСтрока(); - КонецЕсли; - - Результат.Вставить(Ключ, Значение); - - КонецЦикла; - - Возврат Результат; - -КонецФункции - -Процедура ДанныеСовпадают() Экспорт - - Массив = ЮТОбщий.ЗначениеВМассиве(1, 2, "3"); - Структура = Новый Структура("Строка, Число, Массив", "1", 1, Массив); - Соответствие = Новый Соответствие(); - Соответствие.Вставить("Строка", "1"); - Соответствие.Вставить(2, "Число"); - Соответствие.Вставить("Массив", Массив); - - Варианты = ЮТест.Варианты("Значение") - .Добавить(Массив) - .Добавить(Структура) - .Добавить(Соответствие) - .Добавить(Новый ФиксированныйМассив(Массив)) - .Добавить(Новый ФиксированнаяСтруктура(Структура)) - .Добавить(Новый ФиксированноеСоответствие(Соответствие)) - .СписокВариантов(); - - Для Каждого Вариант Из Варианты Цикл - - Описание = Строка(ТипЗнч(Вариант.Значение)); - - ЮТест.ОжидаетЧто( - ЮТОбщий.ДанныеСовпадают(Вариант.Значение, Вариант.Значение), - Описание) - .ЭтоИстина(); - - КонецЦикла; - -КонецПроцедуры - #КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271.mdo" index 9215cba58..4fe6752c0 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271.mdo" @@ -3,7 +3,7 @@ ОМ_Общий ru - О м общий + Общий true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" index 0be077783..e5bc450b1 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ .ДобавитьТест("ЗначенияРеквизитовЗаписи") .ДобавитьТест("ЗначениеРеквизитаЗаписи") .ДобавитьТест("ДвиженияДокумента") + .ДобавитьТест("Записи_Условие_ВСписке") ; КонецПроцедуры @@ -117,23 +118,19 @@ Процедура РезультатЗапроса() Экспорт - Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") - .Фикция("Наименование") - .Фикция("Поставщик"); - Ссылка = Конструктор.Записать(); - ДанныеСправочника = Конструктор.ДанныеОбъекта(); + Товар = НовыйТовар(); ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса(); ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары"; ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления"); - ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка); - ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Наименование"); + ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Товар); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Ссылка"); ОписаниеЗапроса.ВыбираемыеПоля.Добавить("1+1 КАК Число"); ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса)) .ИмеетДлину(1) - .Свойство("[0].Наименование").Равно(ДанныеСправочника.Наименование) + .Свойство("[0].Ссылка").Равно(Товар) .Свойство("[0].Число").Равно(2); КонецПроцедуры @@ -395,4 +392,49 @@ КонецПроцедуры +Процедура Записи_Условие_ВСписке() Экспорт + + ИмяТаблицы = "Справочник.Товары"; + ВидТовар = ПредопределенноеЗначение("Перечисление.ВидыТоваров.Товар"); + ВидУслуга = ПредопределенноеЗначение("Перечисление.ВидыТоваров.Услуга"); + Товар = НовыйТовар(ВидТовар); + Услуга = НовыйТовар(ВидУслуга); + + Результат = ЮТЗапросы.Записи(ИмяТаблицы, ЮТест.Предикат() + .Свойство("Вид").ВСписке(ЮТКоллекции.ЗначениеВМассиве(ВидТовар, ВидУслуга))); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетДлину(2) + .ЛюбойЭлементСодержитСвойствоСоЗначением("Ссылка", Товар) + .ЛюбойЭлементСодержитСвойствоСоЗначением("Ссылка", Услуга); + + Результат = ЮТЗапросы.Записи(ИмяТаблицы, ЮТест.Предикат() + .Свойство("Вид").ВСписке(ЮТКоллекции.ЗначениеВМассиве(ВидТовар))); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетДлину(1) + .Свойство("[0].Ссылка", Товар); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция НовыйТовар(ВидТовара = Неопределено) + + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Фикция("Наименование") + .Фикция("Поставщик"); + + Если ЗначениеЗаполнено(ВидТовара) Тогда + Конструктор.Установить("Вид", ВидТовара); + Иначе + Конструктор.Фикция("Вид"); + КонецЕсли; + + Возврат Конструктор.Записать(); + +КонецФункции + #КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213.mdo" index 47e37a97c..f645b9a02 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТЗапросы ru - О м ЮТЗапросы + ЮТЗапросы true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" similarity index 86% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" index 7d3217afc..f38dbaa4a 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" @@ -30,12 +30,12 @@ ФайлРезультата = ЮТест.Данные().НовоеИмяВременногоФайла("txt"); ДополнительныеПараметры = ДополнительныеПараметрыТестирования(ФайлРезультата, МассивОшибок()); - ЮТИсполнительКлиент.ОбработчикСохранитьКодВозврата(Неопределено, ДополнительныеПараметры); + ЮТИсполнительСлужебныйКлиент.ОбработчикСохранитьКодВозврата(Неопределено, ДополнительныеПараметры); ПроверитьРезультатВыполнения(ФайлРезультата, "0"); ДополнительныеПараметры = ДополнительныеПараметрыТестирования(ФайлРезультата, МассивОшибок(Истина)); - ЮТИсполнительКлиент.ОбработчикСохранитьКодВозврата(Неопределено, ДополнительныеПараметры); + ЮТИсполнительСлужебныйКлиент.ОбработчикСохранитьКодВозврата(Неопределено, ДополнительныеПараметры); ПроверитьРезультатВыполнения(ФайлРезультата, "1"); КонецПроцедуры @@ -49,7 +49,7 @@ НаборыТестов = НаборыТестов(Тесты); ОписаниеРезультата = ОписаниеРезультатаТестирования(НаборыТестов); - ДополнительныеПараметры = ЮТИсполнительКлиент.ПараметрыИсполнения(); + ДополнительныеПараметры = ЮТИсполнительСлужебныйКлиент.ПараметрыИсполнения(); ДополнительныеПараметры.Цепочка.Добавить(ЮТАсинхроннаяОбработкаСлужебныйКлиент.НовыйПустойОбработчик(2)); ДополнительныеПараметры.АргументыЗапуска = ""; ДополнительныеПараметры.ИсполняемыеТестовыеМодули = Новый Массив; @@ -66,13 +66,13 @@ Функция МассивОшибок(ДобавлятьУпавшийТест = Ложь) Ошибки = Новый Массив; - ОписаниеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки("Метод пропущен"); - ОписаниеОшибки.ТипОшибки = ЮТФабрика.ТипыОшибок().Пропущен; + ОписаниеОшибки = ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки("Метод пропущен"); + ОписаниеОшибки.ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().Пропущен; Ошибки.Добавить(ОписаниеОшибки); Если ДобавлятьУпавшийТест Тогда - ОписаниеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки("Ошибка исполнения"); - ОписаниеОшибки.ТипОшибки = ЮТФабрика.ТипыОшибок().Исполнения; + ОписаниеОшибки = ЮТФабрикаСлужебный.ОписаниеВозникшейОшибки("Ошибка исполнения"); + ОписаниеОшибки.ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().Исполнения; Ошибки.Добавить(ОписаниеОшибки); КонецЕсли; diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" similarity index 84% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" index bdaaeafe1..17d1edf3e 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" @@ -1,6 +1,6 @@ - ОМ_ЮТИсполнительКлиент + ОМ_ЮТИсполнительСлужебныйКлиент ru ЮТИсполнительКлиент diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 90% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index c93d5f06c..073c741ee 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -31,7 +31,7 @@ Процедура ЛомающийКонтекстТест() Экспорт - ЮТест.ОжидаетЧто(ЮТКонтекст.ДанныеКонтекста()) + ЮТест.ОжидаетЧто(ЮТКонтекстСлужебный.ДанныеКонтекста()) .ЭтоНеНеопределено(); НачатьТранзакцию(); @@ -40,7 +40,7 @@ ЗафиксироватьТранзакцию(); Исключение ОбновитьПовторноИспользуемыеЗначения(); - Если ЮТКонтекст.ДанныеКонтекста() <> Неопределено Тогда + Если ЮТКонтекстСлужебный.ДанныеКонтекста() <> Неопределено Тогда ВызватьИсключение "Контекст не сломан"; КонецЕсли; ОтменитьТранзакцию(); diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 78% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index 3d91f1e88..9b2b68dad 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,6 +1,6 @@ - ОМ_ЮТИсполнительКлиентСервер + ОМ_ЮТИсполнительСлужебныйКлиентСервер ru ЮТИсполнитель клиент сервер diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl" new file mode 100644 index 000000000..8b626e5d9 --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl" @@ -0,0 +1,451 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .ДобавитьТест("ДополнитьСтруктуру") + .ДобавитьТест("ЗначениеСтруктуры") + .ДобавитьТест("ДополнитьМассив") + .ДобавитьТест("СкопироватьРекурсивно") + .ДобавитьТест("СкопироватьСтруктуру") + .ДобавитьТест("СкопироватьСоответствие") + .ДобавитьТест("СкопироватьМассив") + .ДобавитьТест("СкопироватьСписокЗначений") + .ДобавитьТест("ВыгрузитьЗначения") + .ДобавитьТест("ПересечениеМассивов") + .ДобавитьТест("ЗначениеВМассиве") + .ДобавитьТест("ВСоответствие") + .ДобавитьТест("ВСтруктуру") + .ДобавитьТест("ПредставлениеМассива") + ; + +КонецПроцедуры + +Процедура ДополнитьСтруктуру() Экспорт + + Варианты = ЮТест.Варианты("Описание, Исходная, Добавляемая, Результат") + .Добавить("Структуры без пересечения", "Строка, Число", "Дата", "Строка, Число, Дата") + .Добавить("Структуры с пересечением", "Строка, Число", "Дата, Число", "Строка, Число, Дата") + .Добавить("Добавление пустой структуры", "Строка, Число", "", "Строка, Число") + .Добавить("Добавление в пустую структуру", "", "Строка, Число", "Строка, Число") + .СписокВариантов(); + + Для Каждого Вариант Из Варианты Цикл + + Для Режим = 1 По 3 Цикл + + ИсходнаяЭтоСоответствие = Режим = 1 ИЛИ Режим = 3; + ДобавляемаяЭтоСоответствие = Режим = 2 ИЛИ Режим = 3; + + Исходная = СтруктураДляОбъединения(Вариант.Исходная, ИсходнаяЭтоСоответствие); + Добавляемая = СтруктураДляОбъединения(Вариант.Добавляемая, ДобавляемаяЭтоСоответствие); + + ЮТКоллекции.ДополнитьСтруктуру(Исходная, Добавляемая); + + Ожидание = ЮТест.ОжидаетЧто(Исходная, Вариант.Описание) + .Заполнено(); + + Для Каждого Ключ Из СтрРазделить(Вариант.Результат, ", ", Ложь) Цикл + + ЕстьКлюч = ДобавляемаяЭтоСоответствие И Добавляемая[Ключ] <> Неопределено + ИЛИ НЕ ДобавляемаяЭтоСоответствие И Добавляемая.Свойство(Ключ); + Если ЕстьКлюч Тогда + Ожидание.Свойство(Ключ).Равно(Добавляемая[Ключ]); + Иначе + Ожидание.Свойство(Ключ).Равно(Исходная[Ключ]); + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +Процедура ЗначениеСтруктуры() Экспорт + + ИсходнаяСтруктура = Новый Структура; + ИсходнаяСтруктура.Вставить("Поле1", "Значение1"); + ИсходнаяСтруктура.Вставить("Поле2", 4242); + + Результат = ЮТКоллекции.ЗначениеСтруктуры(ИсходнаяСтруктура, "Поле1", "ЗначениеПоУмолчанию"); + ЮТест.ОжидаетЧто(Результат, "Проверка существующего поля").Равно("Значение1"); + + Результат = ЮТКоллекции.ЗначениеСтруктуры(ИсходнаяСтруктура, "Поле2", "ЗначениеПоУмолчанию"); + ЮТест.ОжидаетЧто(Результат, "Проверка числового поля").Равно(4242); + + Результат = ЮТКоллекции.ЗначениеСтруктуры(ИсходнаяСтруктура, "Поле3", "ЗначениеПоУмолчанию"); + ЮТест.ОжидаетЧто(Результат, "Проверка несуществующего поля").Равно("ЗначениеПоУмолчанию"); + + Результат = ЮТКоллекции.ЗначениеСтруктуры(Неопределено, "Поле", "ЗначениеПоУмолчанию"); + ЮТест.ОжидаетЧто(Результат, "Проверка вызова функции со значение Неопределено").Равно("ЗначениеПоУмолчанию"); + +КонецПроцедуры + +Процедура ДополнитьМассив() Экспорт + + Приемник = Новый Массив; + Источник = Новый Массив; + + // Генерируем случайные значения для источника + Для Счетчик = 1 По ЮТест.Данные().СлучайноеЧисло( , 10) Цикл + Источник.Добавить(ЮТест.Данные().СлучайноеЧисло( , 100)); + КонецЦикла; + + ЮТКоллекции.ДополнитьМассив(Приемник, Источник); + + // Проверяем, что все элементы источника были добавлены в приемник + ЮТест.ОжидаетЧто(Приемник).ИмеетДлину(Источник.Количество()); + Для Каждого Элемент Из Источник Цикл + ЮТест.ОжидаетЧто(Приемник).Содержит(Элемент); + КонецЦикла; + +КонецПроцедуры + +Процедура СкопироватьРекурсивно() Экспорт + + // Генерируем случайные значения для источника + Источник = Новый Структура; + Источник.Вставить("Число", ЮТест.Данные().СлучайноеЧисло(100)); + Источник.Вставить("Строка", ЮТест.Данные().СлучайнаяСтрока()); + Источник.Вставить("Дата", ЮТест.Данные().СлучайнаяДата()); + + // Сохраняем копию источника для последующей проверки + ИсточникКопия = Новый ФиксированнаяСтруктура(Источник); + + Приемник = ЮТКоллекции.СкопироватьРекурсивно(Источник); + + // Проверяем, что все элементы источника были скопированы в приемник + ЮТест.ОжидаетЧто(Приемник).ИмеетТип("Структура"); + Для Каждого Элемент Из ИсточникКопия Цикл + ЮТест.ОжидаетЧто(Приемник).Свойство(Элемент.Ключ).Равно(Элемент.Значение); + КонецЦикла; + + // Проверяем, что приемник и источник не ссылаются на один и тот же объект + Источник.Вставить("НовоеЗначение", ЮТест.Данные().СлучайнаяСтрока()); + ЮТест.ОжидаетЧто(Приемник).НеСодержит("НовоеЗначение"); + + // Проверяем работу функции с массивами + ИсточникМассив = Новый Массив; + Для Счетчик = 1 По ЮТест.Данные().СлучайноеЧисло(, 10) Цикл + ИсточникМассив.Добавить(ЮТест.Данные().СлучайноеЧисло(100)); + КонецЦикла; + ПриемникМассив = ЮТКоллекции.СкопироватьРекурсивно(ИсточникМассив); + ЮТест.ОжидаетЧто(ПриемникМассив).ИмеетТип("Массив"); + Для Каждого Элемент Из ИсточникМассив Цикл + ЮТест.ОжидаетЧто(ПриемникМассив).Содержит(Элемент); + КонецЦикла; + + // Проверяем, что приемник и источник не ссылаются на один и тот же объект + ИсточникМассив.Добавить(ЮТест.Данные().СлучайноеЧисло(100)); + ЮТест.ОжидаетЧто(ПриемникМассив).НеСодержит(ИсточникМассив[ИсточникМассив.Количество() - 1]);КонецПроцедуры + +Процедура СкопироватьСтруктуру() Экспорт + + // Генерируем случайные значения для источника + Источник = Новый Структура; + Источник.Вставить("Число", ЮТест.Данные().СлучайноеЧисло(100)); + Источник.Вставить("Строка", ЮТест.Данные().СлучайнаяСтрока()); + Источник.Вставить("Дата", ЮТест.Данные().СлучайнаяДата()); + + // Сохраняем копию источника для последующей проверки + ИсточникКопия = Новый ФиксированнаяСтруктура(Источник); + + Приемник = ЮТКоллекции.СкопироватьСтруктуру(Источник); + + // Проверяем, что все элементы источника были скопированы в приемник + ЮТест.ОжидаетЧто(Приемник).ИмеетТип("Структура"); + Для Каждого Элемент Из ИсточникКопия Цикл + ЮТест.ОжидаетЧто(Приемник).Свойство(Элемент.Ключ).Равно(Элемент.Значение); + КонецЦикла; + + // Проверяем, что источник не изменился после вызова функции + ЮТест.ОжидаетЧто(Источник).ИмеетТип("Структура"); + Для Каждого Элемент Из ИсточникКопия Цикл + ЮТест.ОжидаетЧто(Источник).Свойство(Элемент.Ключ).Равно(Элемент.Значение); + КонецЦикла; + + // Проверяем, что приемник и источник не ссылаются на один и тот же объект + Источник.Вставить("НовоеЗначение", ЮТест.Данные().СлучайнаяСтрока()); + ЮТест.ОжидаетЧто(Приемник).НеСодержит("НовоеЗначение"); + + // Проверяем работу функции со вложенными структурами + ВложеннаяСтруктура = Новый Структура; + ВложеннаяСтруктура.Вставить("ВложенноеЧисло", ЮТест.Данные().СлучайноеЧисло(100)); + Источник.Вставить("ВложеннаяСтруктура", ВложеннаяСтруктура); + + Приемник = ЮТКоллекции.СкопироватьСтруктуру(Источник); + + ЮТест.ОжидаетЧто(Приемник).Свойство("ВложеннаяСтруктура").ИмеетТип("Структура"); + ЮТест.ОжидаетЧто(Приемник.ВложеннаяСтруктура).Свойство("ВложенноеЧисло").Равно(ВложеннаяСтруктура.ВложенноеЧисло); + + // Проверяем, что приемник и источник не ссылаются на один и тот же объект + ВложеннаяСтруктура.Вставить("НовоеВложенноеЗначение", ЮТест.Данные().СлучайнаяСтрока()); + ЮТест.ОжидаетЧто(Приемник.ВложеннаяСтруктура).НеСодержит("НовоеВложенноеЗначение"); + +КонецПроцедуры + +Процедура СкопироватьСоответствие() Экспорт + + Источник = Новый Соответствие; + Источник.Вставить(ЮТест.Данные().СлучайнаяСтрока(), ЮТест.Данные().СлучайнаяСтрока()); + Источник.Вставить(ЮТест.Данные().СлучайнаяСтрока(), ЮТест.Данные().СлучайнаяСтрока()); + Источник.Вставить(ЮТест.Данные().СлучайнаяСтрока(), ЮТест.Данные().СлучайнаяСтрока()); + + Результат = ЮТКоллекции.СкопироватьСоответствие(Источник); + + ЮТест.ОжидаетЧто(Результат) + .Равно(Источник) + .ИмеетТип("Соответствие") + .ИмеетДлину(3); +КонецПроцедуры + +Процедура СкопироватьМассив() Экспорт + + Источник = Новый Массив; + Источник.Добавить(ЮТест.Данные().СлучайнаяСтрока()); + Источник.Добавить(ЮТест.Данные().СлучайноеЧисло()); + Источник.Добавить(ЮТест.Данные().СлучайнаяДата()); + + Результат = ЮТКоллекции.СкопироватьМассив(Источник); + + ЮТест.ОжидаетЧто(Результат) + .Равно(Источник) + .ИмеетТип("Массив") + .ИмеетДлину(Источник.Количество()); + +КонецПроцедуры + +Процедура СкопироватьСписокЗначений() Экспорт + + Источник = Новый СписокЗначений; + Источник.Добавить(ЮТест.Данные().СлучайнаяСтрока(), "Представление Строка"); + Источник.Добавить(ЮТест.Данные().СлучайноеЧисло(), "Представление Число"); + Источник.Добавить(ЮТест.Данные().СлучайнаяДата(), "Представление Дата"); + + Результат = ЮТКоллекции.СкопироватьСписокЗначений(Источник); + + ЮТест.ОжидаетЧто(Результат, "Список значений после копирования") + .Равно(Источник) + .ИмеетТип("СписокЗначений") + .ИмеетДлину(Источник.Количество()); + + Для Инд = 0 По Результат.Количество() - 1 Цикл + ЮТест.ОжидаетЧто(Результат[Инд], "Элемент списка значений после копирования") + .Свойство("Значение").Равно(Источник[Инд].Значение) + .Свойство("Представление").Заполнено(); + КонецЦикла; + +КонецПроцедуры + +Процедура ВыгрузитьЗначения() Экспорт + + Коллекция = Новый Массив; + Коллекция.Добавить(Новый Структура("ИмяРеквизита", ЮТест.Данные().СлучайнаяСтрока())); + Коллекция.Добавить(Новый Структура("ИмяРеквизита", ЮТест.Данные().СлучайнаяСтрока())); + Коллекция.Добавить(Новый Структура("ИмяРеквизита", ЮТест.Данные().СлучайнаяСтрока())); + + Результат = ЮТКоллекции.ВыгрузитьЗначения(Коллекция, "ИмяРеквизита"); + + ЮТест.ОжидаетЧто(Результат, "Массив значений после выгрузки") + .ИмеетТип("Массив") + .ИмеетДлину(Коллекция.Количество()); + + Для Инд = 0 По Результат.Количество() - 1 Цикл + ЮТест.ОжидаетЧто(Результат).Элемент(Инд).Равно(Коллекция[Инд].ИмяРеквизита); + КонецЦикла; + +КонецПроцедуры + +Процедура ПересечениеМассивов() Экспорт + + Коллекция1 = Новый Массив; + Коллекция1.Добавить(ЮТест.Данные().СлучайнаяСтрока()); + Коллекция1.Добавить(ЮТест.Данные().СлучайнаяСтрока()); + Коллекция1.Добавить(ЮТест.Данные().СлучайнаяСтрока()); + + Коллекция2 = Новый Массив; + Коллекция2.Добавить(Коллекция1[0]); + Коллекция2.Добавить(ЮТест.Данные().СлучайнаяСтрока()); + Коллекция2.Добавить(ЮТест.Данные().СлучайнаяСтрока()); + + Результат = ЮТКоллекции.ПересечениеМассивов(Коллекция1, Коллекция2); + + ЮТест.ОжидаетЧто(Результат, "Массив значений после пересечения") + .ИмеетТип("Массив") + .ИмеетДлину(1) + .Элемент(0).Равно(Коллекция1[0]); +КонецПроцедуры + +Процедура ЗначениеВМассиве() Экспорт + + Значение1 = ЮТест.Данные().СлучайнаяСтрока(); + Значение2 = ЮТест.Данные().СлучайнаяСтрока(); + Значение3 = ЮТест.Данные().СлучайнаяСтрока(); + Значение4 = ЮТест.Данные().СлучайнаяСтрока(); + Значение5 = ЮТест.Данные().СлучайнаяСтрока(); + Значение6 = ЮТест.Данные().СлучайнаяСтрока(); + Значение7 = ЮТест.Данные().СлучайнаяСтрока(); + Значение8 = ЮТест.Данные().СлучайнаяСтрока(); + Значение9 = ЮТест.Данные().СлучайнаяСтрока(); + Значение10 = ЮТест.Данные().СлучайнаяСтрока(); + + Результат = ЮТКоллекции.ЗначениеВМассиве(Значение1, Значение2, Значение3, Значение4, Значение5, Значение6, Значение7, Значение8, Значение9, Значение10); + + ЮТест.ОжидаетЧто(Результат, "Массив значений после добавления") + .ИмеетТип("Массив") + .ИмеетДлину(10) + .Элемент(0).Равно(Значение1) + .Элемент(1).Равно(Значение2) + .Элемент(2).Равно(Значение3) + .Элемент(3).Равно(Значение4) + .Элемент(4).Равно(Значение5) + .Элемент(5).Равно(Значение6) + .Элемент(6).Равно(Значение7) + .Элемент(7).Равно(Значение8) + .Элемент(8).Равно(Значение9) + .Элемент(9).Равно(Значение10); + +КонецПроцедуры + +Процедура ВСоответствие() Экспорт + + Коллекция = Новый Массив; + Ключ1 = ЮТест.Данные().СлучайнаяСтрока(); + Значение1 = ЮТест.Данные().СлучайнаяСтрока(); + Ключ2 = ЮТест.Данные().СлучайнаяСтрока(); + Значение2 = ЮТест.Данные().СлучайнаяСтрока(); + Ключ3 = ЮТест.Данные().СлучайнаяСтрока(); + Значение3 = ЮТест.Данные().СлучайнаяСтрока(); + + Коллекция.Добавить(Новый Структура("Ключ, Значение", Ключ1, Значение1)); + Коллекция.Добавить(Новый Структура("Ключ, Значение", Ключ2, Значение2)); + Коллекция.Добавить(Новый Структура("Ключ, Значение", Ключ3, Значение3)); + + Результат = ЮТКоллекции.ВСоответствие(Коллекция, "Ключ", "Значение"); + + ЮТест.ОжидаетЧто(Результат, "Соответствие после преобразования") + .ИмеетТип("Соответствие") + .ИмеетДлину(Коллекция.Количество()) + .Элемент(Ключ1).Равно(Значение1) + .Элемент(Ключ2).Равно(Значение2) + .Элемент(Ключ3).Равно(Значение3); + + // Проверка когда последний параметр не указан + Результат = ЮТКоллекции.ВСоответствие(Коллекция, "Ключ"); + ЮТест.ОжидаетЧто(Результат, "Соответствие после преобразования без указания последнего параметра") + .ИмеетТип("Соответствие") + .ИмеетДлину(Коллекция.Количество()) + .Элемент(Ключ1).Равно(Коллекция[0]) + .Элемент(Ключ2).Равно(Коллекция[1]) + .Элемент(Ключ3).Равно(Коллекция[2]); + +КонецПроцедуры + +Процедура ВСтруктуру() Экспорт + + Коллекция = Новый Массив; + Ключ1 = ЮТест.Данные().СлучайныйИдентификатор(); + Значение1 = ЮТест.Данные().СлучайнаяСтрока(); + Ключ2 = ЮТест.Данные().СлучайныйИдентификатор(); + Значение2 = ЮТест.Данные().СлучайнаяСтрока(); + Ключ3 = ЮТест.Данные().СлучайныйИдентификатор(); + Значение3 = ЮТест.Данные().СлучайнаяСтрока(); + + Коллекция.Добавить(Новый Структура("Ключ, Значение", Ключ1, Значение1)); + Коллекция.Добавить(Новый Структура("Ключ, Значение", Ключ2, Значение2)); + Коллекция.Добавить(Новый Структура("Ключ, Значение", Ключ3, Значение3)); + + Результат = ЮТКоллекции.ВСтруктуру(Коллекция, "Ключ", "Значение"); + + ЮТест.ОжидаетЧто(Результат, "Структура после преобразования") + .ИмеетТип("Структура") + .ИмеетДлину(Коллекция.Количество()) + .Свойство(Ключ1).Равно(Значение1) + .Свойство(Ключ2).Равно(Значение2) + .Свойство(Ключ3).Равно(Значение3); + + // Проверка когда последний параметр не указан + Результат = ЮТКоллекции.ВСтруктуру(Коллекция, "Ключ"); + + ЮТест.ОжидаетЧто(Результат, "Структура после преобразования без указания последнего параметра") + .ИмеетТип("Структура") + .ИмеетДлину(Коллекция.Количество()) + .Свойство(Ключ1).Равно(Коллекция[0]) + .Свойство(Ключ2).Равно(Коллекция[1]) + .Свойство(Ключ3).Равно(Коллекция[2]); + +КонецПроцедуры + +Процедура ПредставлениеМассива() Экспорт + + Данные = Новый Массив; + Значение1 = ЮТест.Данные().СлучайнаяСтрока(); + Значение2 = ЮТест.Данные().СлучайнаяСтрока(); + Значение3 = ЮТест.Данные().СлучайнаяСтрока(); + + Данные.Добавить(Значение1); + Данные.Добавить(Значение2); + Данные.Добавить(Значение3); + + Результат = ЮТКоллекции.ПредставлениеМассива(Данные); + + ОжидаемоеПредставление = СтрШаблон("[%1, %2, %3]", Значение1, Значение2, Значение3); + + ЮТест.ОжидаетЧто(Результат, "Представление массива") + .Равно(ОжидаемоеПредставление); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СтруктураДляОбъединения(КлючиСтрокой, Соответствие) + + Ключи = СтрРазделить(КлючиСтрокой, ", ", Ложь); + + Если Соответствие Тогда + Результат = Новый Соответствие(); + Иначе + Результат = Новый Структура(); + КонецЕсли; + + Для Каждого Ключ Из Ключи Цикл + + Если СтрСравнить(Ключ, "Число") Тогда + Значение = ЮТест.Данные().СлучайноеЧисло(); + ИначеЕсли СтрСравнить(Ключ, "Дата") Тогда + Значение = ЮТест.Данные().СлучайнаяДата(); + Иначе + Значение = ЮТест.Данные().СлучайнаяСтрока(); + КонецЕсли; + + Результат.Вставить(Ключ, Значение); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270.mdo" new file mode 100644 index 000000000..81d68da77 --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/\320\236\320\234_\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270.mdo" @@ -0,0 +1,7 @@ + + + ОМ_ЮТКоллекции + true + true + true + diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" index b06a342ed..500243aee 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,11 +24,14 @@ .ДобавитьТест("ЗаполнитьСправочник") .ДобавитьТест("ЗаполнитьДокумент") .ДобавитьТест("СоздатьЗаписьРегистраСведений") + .ДобавитьТест("СоздатьЗаписьРегистраСведений_ОбменДанными") .ДобавитьТест("Фикция") .ДобавитьТест("Фикция_Типизированная") + .ДобавитьТест("Фикция_ОбщийРеквизит") .ДобавитьТест("ФикцияОбязательныхПолей") .ДобавитьТест("СоздатьГруппу") - ; + .ДобавитьТест("УстановитьРеквизиты") + ; КонецПроцедуры @@ -96,7 +99,6 @@ .Объект() .Фикция("Валюта") .Фикция("Организация") - .Провести(); #Если НЕ Клиент Тогда @@ -109,18 +111,18 @@ .Свойство("Валюта").Заполнено() .Свойство("Организация").Заполнено() .Свойство("Товары").ИмеетДлину(2) - .Свойство("Товары[0].Товар").Заполнено() - .Свойство("Товары[0].Цена").Заполнено() - .Свойство("Товары[0].Количество").Заполнено() - .Свойство("Товары[0].Сумма").Заполнено() - .Свойство("Товары[1].Товар").Заполнено() - .Свойство("Товары[1].Цена").Заполнено() - .Свойство("Товары[1].Количество").Заполнено() - .Свойство("Товары[1].Сумма").Заполнено() + .Свойство("Товары[0].Товар").Заполнено() + .Свойство("Товары[0].Цена").Заполнено() + .Свойство("Товары[0].Количество").Заполнено() + .Свойство("Товары[0].Сумма").Заполнено() + .Свойство("Товары[1].Товар").Заполнено() + .Свойство("Товары[1].Цена").Заполнено() + .Свойство("Товары[1].Количество").Заполнено() + .Свойство("Товары[1].Сумма").Заполнено() .Свойство("Проведен").ЭтоИстина() - ; + ; #КонецЕсли - + КонецПроцедуры Процедура СоздатьЗаписьРегистраСведений() Экспорт @@ -137,6 +139,29 @@ КонецПроцедуры +Процедура СоздатьЗаписьРегистраСведений_ОбменДанными() Экспорт + + Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрСведений.ЦеныТоваров") + .Фикция("Период") + .Фикция("Товар") + .Фикция("ВидЦен") + .Установить("Цена", -1); + + ДанныеОбъекта = Конструктор.ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Конструктор) + .Метод("Записать").Параметр(Ложь).Параметр(Истина) + .НеВыбрасываетИсключение(); + + ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.ЦеныТоваров") + .СодержитЗаписи(ЮТест.Предикат(ДанныеОбъекта)); + + ЮТест.ОжидаетЧто(Конструктор) + .Метод("Записать") + .ВыбрасываетИсключение("Цена товара не может быть отрицательной"); + +КонецПроцедуры + Процедура Фикция() Экспорт Поставщик = Ютест.Данные().СоздатьЭлемент("Справочники.Контрагенты"); @@ -175,7 +200,7 @@ .Добавить(Тип, Тип, "По типу") .Добавить(Новый ОписаниеТипов(ИмяТипа), Тип, "По описаниею типов") .Добавить("Строка", Тип("Строка"), "Другой тип") - ; + ; Для Каждого Вариант Из Варианты.СписокВариантов() Цикл @@ -188,25 +213,36 @@ .ИмеетТип(Вариант.ОжилаемыйТип); КонецЦикла; -// + // Варианты = ЮТест.Варианты("Тип, Описание") .Добавить("Дата", "Неподходящий тип") .Добавить(Новый ОписаниеТипов("Число, Дата"), "Неподходящее описание типов") .Добавить("Неопределено", "Неопределено") .Добавить(Тип("Неопределено"), "Тип Неопределено") - ; + ; Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочник.МобильныеУстройства"); Для Каждого Вариант Из Варианты.СписокВариантов() Цикл - ЮТест.ОжидаетЧто(Конструктор, Вариант.Описание).Метод("Фикция", ЮТОбщий.ЗначениеВМассиве("Подписчик", Неопределено, Вариант.Тип)) + ЮТест.ОжидаетЧто(Конструктор, Вариант.Описание).Метод("Фикция", ЮТКоллекции.ЗначениеВМассиве("Подписчик", Неопределено, Вариант.Тип)) .ВыбрасываетИсключение("Исправьте ограничение типов для реквизита `Подписчик`"); КонецЦикла; КонецПроцедуры +Процедура Фикция_ОбщийРеквизит() Экспорт + + Склад = ЮТест.Данные().КонструкторОбъекта("Справочник.Склады") + .Фикция("Организация") + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Склад) + .Свойство("Организация").Заполнено(); + +КонецПроцедуры + Процедура ФикцияОбязательныхПолей() Экспорт Данные = ЮТест.Данные().КонструкторОбъекта("Справочники.Контрагенты") @@ -257,4 +293,32 @@ КонецПроцедуры +Процедура УстановитьРеквизиты() Экспорт + + Поставщик = ЮТест.Данные().СоздатьЭлемент("Справочник.Контрагенты"); + Склад = ЮТест.Данные().СоздатьЭлемент("Справочник.Склады"); + Товар = ЮТест.Данные().СоздатьЭлемент("Справочник.Товары"); + Цена = ЮТест.Данные().СлучайноеЧисло(99, 2); + + Реквизиты = Новый Структура("Поставщик, Склад", Поставщик, Склад); + РеквизитыСтроки = Новый Структура("Товар, Цена", Товар, Цена); + + Данные = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара") + .УстановитьРеквизиты(Реквизиты) + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .УстановитьРеквизиты(РеквизитыСтроки) + .ДобавитьСтроку(РеквизитыСтроки) + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Данные) + .Свойство("Поставщик").Равно(Поставщик) + .Свойство("Склад").Равно(Склад) + .Свойство("Товары[0].Товар").Равно(Товар) + .Свойство("Товары[0].Цена").Равно(Цена) + .Свойство("Товары[1].Товар").Равно(Товар) + .Свойство("Товары[1].Цена").Равно(Цена); + +КонецПроцедуры + #КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205.mdo" index e16b5f1d9..df43c27e6 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТКонструкторТестовыхДанных ru - О м конструктор тестовых данных + Конструктор тестовых данных true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" index 4b994aeaf..dea98a664 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" @@ -24,8 +24,8 @@ .ДобавитьТест("ОписаниеОбъектаМетаданных") .ДобавитьТест("РегистрыДвиженийДокумента") .ДобавитьТест("НормализованноеИмяТаблицы") - ; - + ; + КонецПроцедуры Процедура ОписаниеОбъектаМетаданных() Экспорт @@ -46,6 +46,11 @@ КонецЦикла; + Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных("Справочник.Склады"); + ЮТест.ОжидаетЧто(Описание, "Проверка на общий реквизит") + .Свойство("Реквизиты") + .ИмеетСвойство("Организация"); + КонецПроцедуры Процедура РегистрыДвиженийДокумента() Экспорт @@ -74,7 +79,7 @@ Процедура НормализованноеИмяТаблицы() Экспорт - Варианты = ЮТОбщий.ЗначениеВМассиве("Справочник.Банки", "Справочники.Банки", ПредопределенноеЗначение("Справочник.Банки.ПустаяСсылка")); + Варианты = ЮТКоллекции.ЗначениеВМассиве("Справочник.Банки", "Справочники.Банки", ПредопределенноеЗначение("Справочник.Банки.ПустаяСсылка")); #Если Сервер Тогда Варианты.Добавить(Справочники.Банки); diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 84% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 7e544b26d..401f31ba9 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -30,7 +30,7 @@ Процедура ПараметрыГенерацииОтчета() Экспорт - Параметры = ЮТОтчетAllure.ПараметрыГенерацииОтчета(); + Параметры = ЮТОтчетAllureСлужебный.ПараметрыГенерацииОтчета(); ЮТест.ОжидаетЧто(Параметры) .Свойство("Форматы") @@ -44,8 +44,8 @@ РезультатТестирования = ТестовыеДанные.РезультатТестирования(); Каталог = ЮТест.Данные().НовоеИмяВременногоФайла(); СоздатьКаталог(Каталог); - Формат = ЮТОтчетAllure.ПараметрыГенерацииОтчета().Форматы.allure; - ЮТОтчетAllure.ЗаписатьОтчет(РезультатТестирования, Каталог, Формат, Неопределено); + Формат = ЮТОтчетAllureСлужебный.ПараметрыГенерацииОтчета().Форматы.allure; + ЮТОтчетAllureСлужебный.ЗаписатьОтчет(РезультатТестирования, Каталог, Формат, Неопределено); КонецПроцедуры @@ -55,7 +55,7 @@ Набор = ТестовыеДанные.ОписаниеТестовогоНабора(Модуль); Тест = ТестовыеДанные.ОписаниеТеста(Набор); - ОписаниеТеста = ЮТОтчетAllure.ОписаниеТеста(Тест, Набор, Модуль); + ОписаниеТеста = ЮТОтчетAllureСлужебный.ОписаниеТеста(Тест, Набор, Модуль); ЮТест.ОжидаетЧто(ОписаниеТеста) .ИмеетТип("Структура") .Заполнено() @@ -67,7 +67,7 @@ СодержитМетку(ОписаниеТеста, "subSuite", ИмяВложенногоНабора); Набор.Представление = Модуль.МетаданныеМодуля.Имя; - ОписаниеТеста = ЮТОтчетAllure.ОписаниеТеста(Тест, Набор, Модуль); + ОписаниеТеста = ЮТОтчетAllureСлужебный.ОписаниеТеста(Тест, Набор, Модуль); СодержитМетку(ОписаниеТеста, "suite", ИмяТестовогоНабора); ЮТест.ОжидаетЧто(ОписаниеТеста) .Свойство("labels") diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 83% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 295f00018..74f3095ab 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ОМ_ЮТОтчетAllure + ОМ_ЮТОтчетAllureСлужебный true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 91% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 970068c39..1dc11fa09 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -35,7 +35,7 @@ ПараметрыЗапуска = Новый Структура(); ПараметрыЗапуска.Вставить("reportPath", Каталог); ПараметрыЗапуска.Вставить("reportFormat", "allure"); - ЮТОтчет.СформироватьОтчет(РезультатТестирования, ПараметрыЗапуска, Неопределено); + ЮТОтчетСлужебный.СформироватьОтчет(РезультатТестирования, ПараметрыЗапуска, Неопределено); КонецПроцедуры diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 85% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index 5cd63fd08..7cd8bdf26 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\236\321\202\321\207\320\265\321\202\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ОМ_ЮТОтчет + ОМ_ЮТОтчетСлужебный true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270.mdo" index c1dd5b3b9..2cd86f36a 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\221\320\260\320\275\320\272\320\270.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТПодражатель_Банки ru - О м ЮТПодражатель банки + Подражатель банки true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270.mdo" index 178684980..a22664513 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\232\320\276\320\274\320\277\320\260\320\275\320\270\320\270.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТПодражатель_Компании ru - О м ЮТПодражатель компании + Подражатель компании true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" index 1ce8676a3..8de1011d3 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ #Область СлужебныйПрограммныйИнтерфейс Процедура ИсполняемыеСценарии() Экспорт - + ЮТТесты .ДобавитьТестовыйНабор("ИменаЛюдей") .ДобавитьТест("Имя") @@ -34,36 +34,16 @@ .ДобавитьТестовыйНабор("Некорректные параметры") .ДобавитьТест("НереализованныйПолЧеловека") ; - -КонецПроцедуры - -#Область События - -Процедура ПередВсемиТестами() Экспорт - -КонецПроцедуры - -Процедура ПередКаждымТестом() Экспорт - -КонецПроцедуры - -Процедура ПослеКаждогоТеста() Экспорт - + КонецПроцедуры -Процедура ПослеВсехТестов() Экспорт - -КонецПроцедуры - -#КонецОбласти - Процедура Имя() Экспорт Имя = ЮТест.Данные().Подражатель().Люди().Имя(); ЮТест.ОжидаетЧто(Имя) .ИмеетТип("Строка") .Заполнено() ; - + ЮТест.ОжидаетЧто(СтрДлина(Имя)) .Больше(1) ; @@ -75,7 +55,7 @@ .ИмеетТип("Строка") .Заполнено() ; - + ЮТест.ОжидаетЧто(СтрДлина(Фамилия)) .Больше(1) ; @@ -87,7 +67,7 @@ .ИмеетТип("Строка") .Заполнено() ; - + ЮТест.ОжидаетЧто(СтрДлина(Отчество)) .Больше(1) ; @@ -99,7 +79,7 @@ .ИмеетТип("Строка") .Заполнено() ; - + ЮТест.ОжидаетЧто(СтрРазделить(ФИО, " ")) .ИмеетДлину(3) ; @@ -124,17 +104,17 @@ КонецПроцедуры Процедура УстановкаЛокализации() Экспорт - + Подражатель = ЮТест.Данные().Подражатель(); ЮТест.ОжидаетЧто(Подражатель.Локализация()) .Равно("ru") ; Подражатель.УстановитьЛокализацию("en"); - + ЮТест.ОжидаетЧто(Подражатель.Локализация()) .Равно("en") ; - + КонецПроцедуры Процедура НесуществующийСловарьПоЛокализации() Экспорт @@ -149,7 +129,7 @@ Процедура НереализованныйПолЧеловека() Экспорт Подражатель = ЮТест.Данные().Подражатель(); Ютест.ОжидаетЧто(ЮТПодражатель_Люди) - .Метод("Имя", ЮТОбщий.ЗначениеВМассиве("ТрансгендернаяДевушкаОлень")) + .Метод("Имя", ЮТКоллекции.ЗначениеВМассиве("ТрансгендернаяДевушкаОлень")) .ВыбрасываетИсключение("Отсутствует реализация словаря") ; КонецПроцедуры diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270.mdo" index 452461f4b..c75e0f57e 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270/\320\236\320\234_\320\256\320\242\320\237\320\276\320\264\321\200\320\260\320\266\320\260\321\202\320\265\320\273\321\214_\320\233\321\216\320\264\320\270.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТПодражатель_Люди ru - О м ЮТПодражатель люди + Подражатель люди true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 89% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 959556a76..990d59a09 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -34,14 +34,14 @@ Процедура ПроверитьПредикаты() Экспорт - Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(1, ЮТест.Предикат().ИмеетТип("Число").Больше(0).Меньше(2).Равно(1)); + Результат = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(1, ЮТест.Предикат().ИмеетТип("Число").Больше(0).Меньше(2).Равно(1)); ЮТест.ОжидаетЧто(Результат).Свойство("Успешно").ЭтоИстина(); КонецПроцедуры Процедура ЭтоПредикат() Экспорт - СтруктураПредикат = ЮтФабрика.ВыражениеПредиката(ЮТПредикаты.Выражения().Равно); + СтруктураПредикат = ЮТФабрика.ВыражениеПредиката(ЮТПредикаты.Выражения().Равно); ЮТОбщий.УказатьТипСтруктуры(СтруктураПредикат, "Предикат"); Варианты = ЮТест.Варианты("Предикаты, ОжидаемоеЗначение") @@ -53,7 +53,7 @@ .Добавить(Мокито.МассивПараметров(1, 2, 3), Ложь); Для Каждого Вариант Из Варианты.СписокВариантов() Цикл - ЮТест.ОжидаетЧто(ЮТПредикатыКлиентСервер.ЭтоПредикат(Вариант.Предикаты)).Равно(Вариант.ОжидаемоеЗначение); + ЮТест.ОжидаетЧто(ЮТПредикатыСлужебныйКлиентСервер.ЭтоПредикат(Вариант.Предикаты)).Равно(Вариант.ОжидаемоеЗначение); КонецЦикла; КонецПроцедуры @@ -105,8 +105,8 @@ Процедура ПроверитьСообщениеОбработкиПредиката(ПроверяемоеЗначение, Предикат, Сообщение) - ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(); - РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(ПроверяемоеЗначение, Предикат, ПараметрыСообщенийОбОшибке); + ПараметрыСообщенийОбОшибке = ЮТПредикатыСлужебныйКлиентСервер.ПараметрыСообщенийОбОшибке(); + РезультатПроверки = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(ПроверяемоеЗначение, Предикат, ПараметрыСообщенийОбОшибке); Описание = СтрШаблон("Проверка предиката %1 `%2` %3", Предикат.ИмяРеквизита, Предикат.ВидСравнения, Предикат.Значение); ОжидаемоеСообщение = СтрШаблон("Ожидали, что проверяемое значение %1 %2, но это не так.", ЮТСообщенияСлужебный.ПредставлениеЗначения(ПроверяемоеЗначение), Сообщение); diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 69% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index d226ed546..09e27a418 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\237\321\200\320\265\320\264\320\270\320\272\320\260\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,9 +1,9 @@ - ОМ_ЮТПредикатыКлиентСервер + ОМ_ЮТПредикатыСлужебныйКлиентСервер ru - О м ЮТПредикаты клиент сервер + Предикаты служебный клиент сервер true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" new file mode 100644 index 000000000..79cbda8de --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" @@ -0,0 +1,87 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .ДобавитьТест("ДобавитьПояснениеОшибки") + .ДобавитьТест("ВыводЛогаИсполнения") + ; + +КонецПроцедуры + +Процедура ДобавитьПояснениеОшибки() Экспорт + + ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Пояснение"); + + Ошибка = ОшибкаВыполнения(); + ЮТест.ОжидаетЧто(Ошибка) + .Заполнено() + .Свойство("Сообщение") + .Заполнено() + .Содержит("Пояснение"); + +КонецПроцедуры + +Процедура ВыводЛогаИсполнения() Экспорт + + ЮТест.ДобавитьСообщение("Сообщение 1"); + ЮТест.ДобавитьСообщение("Сообщение 2"); + ЮТест.ДобавитьПредупреждение("Предупреждение 1"); + + Ошибка = ОшибкаВыполнения(); + + ЮТест.ОжидаетЧто(Ошибка) + .Заполнено() + .Свойство("Лог") + .Заполнено() + .ИмеетДлину(3) + .Содержит("[INF] Сообщение 1") + .Содержит("[INF] Сообщение 2") + .Содержит("[WRN] Предупреждение 1"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ИмяКонтекстаОшибки() + + Возврат "ДанныеОшибки"; + +КонецФункции + +Функция ОшибкаВыполнения() + + Попытка + //@skip-check module-unused-local-variable + Результат = 1/0; + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + Тест = Новый Структура("Ошибки, ПолноеИмяМетода", Новый Массив(), "Тест"); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка); + Возврат Тест.Ошибки[0]; + +КонецФункции + +#КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272.mdo" new file mode 100644 index 000000000..10b655835 --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/\320\236\320\234_\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272.mdo" @@ -0,0 +1,7 @@ + + + ОМ_ЮТРегистрацияОшибок + true + true + true + diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 77% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 177006956..3b781bb09 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,14 +17,14 @@ //©///////////////////////////////////////////////////////////////////////////©// ///////////////////////////////////////////////////////////////////////////////// -// Экспортные процедуры и функции, предназначенные для использования другими +// Экспортные процедуры и функции, предназначенные для использования другими // объектами конфигурации или другими программами -///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// #Область СлужебныйПрограммныйИнтерфейс Процедура ИсполняемыеСценарии() Экспорт - Массив = ЮТОбщий.ЗначениеВМассиве(1, 2, "3"); + Массив = ЮТКоллекции.ЗначениеВМассиве(1, 2, "3"); Структура = Новый Структура("Строка, Число, Массив", "1", 1, Массив); Соответствие = Новый Соответствие(); Соответствие.Вставить("Строка", "1"); @@ -76,6 +76,7 @@ .СПараметрами(Новый ФиксированноеСоответствие(Соответствие)) .СПараметрами(Новый ФиксированныйМассив(Массив)) .ДобавитьТест("ЗначенияРавны_ТабличныйДокумент") + .ДобавитьТест("ДанныеСовпадают") ; КонецПроцедуры @@ -85,7 +86,7 @@ Описание = Строка(ТипЗнч(Значение)); Копия = СоздатьКопию(Значение); - Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны(Значение, Копия); + Результат = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Значение, Копия); ЮТест.ОжидаетЧто(Результат, Описание) .ЭтоИстина(); @@ -95,11 +96,11 @@ Описание = Строка(ТипЗнч(Значение1)); - Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны(Значение1, Значение2); + Результат = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Значение1, Значение2); ЮТест.ОжидаетЧто(Результат, Описание) .ЭтоЛожь(); - Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны(Значение2, Значение1); + Результат = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Значение2, Значение1); ЮТест.ОжидаетЧто(Результат, Описание + ". Перемена мест") .ЭтоЛожь(); @@ -113,9 +114,8 @@ Копия = СоздатьКопию(Значение); Алгоритм = Новый СжатиеДанных(1); - Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны( - Новый ХранилищеЗначения(Значение, Алгоритм), - Новый ХранилищеЗначения(Копия, Алгоритм)); + Результат = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Новый ХранилищеЗначения(Значение, Алгоритм), + Новый ХранилищеЗначения(Копия, Алгоритм)); ЮТест.ОжидаетЧто(Результат, Описание) .ЭтоИстина(); @@ -145,13 +145,14 @@ КонецЦикла; КонецЦикла; + Варианты.Добавить(СоздатьКопию(Таблица), "Заполненная таблица"); Для Каждого Вариант Из Варианты.СписокВариантов() Цикл Копия = СоздатьКопию(Вариант.Значение); - Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны(Вариант.Значение, Копия); + Результат = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Вариант.Значение, Копия); ЮТест.ОжидаетЧто(Результат, Вариант.Описание) .ЭтоИстина(); @@ -177,6 +178,35 @@ КонецПроцедуры +Процедура ДанныеСовпадают() Экспорт + + Массив = ЮТКоллекции.ЗначениеВМассиве(1, 2, "3"); + Структура = Новый Структура("Строка, Число, Массив", "1", 1, Массив); + Соответствие = Новый Соответствие(); + Соответствие.Вставить("Строка", "1"); + Соответствие.Вставить(2, "Число"); + Соответствие.Вставить("Массив", Массив); + + Варианты = ЮТест.Варианты("Значение") + .Добавить(Массив) + .Добавить(Структура) + .Добавить(Соответствие) + .Добавить(Новый ФиксированныйМассив(Массив)) + .Добавить(Новый ФиксированнаяСтруктура(Структура)) + .Добавить(Новый ФиксированноеСоответствие(Соответствие)) + .СписокВариантов(); + + Для Каждого Вариант Из Варианты Цикл + + Описание = Строка(ТипЗнч(Вариант.Значение)); + + ЮТест.ОжидаетЧто(ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Вариант.Значение, Вариант.Значение), Описание) + .ЭтоИстина(); + + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 83% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index 5cd2ebf3e..4eb5b28dd 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\236\320\234_\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,6 +1,6 @@ - ОМ_ЮТСравнениеКлиентСервер + ОМ_ЮТСравнениеСлужебныйКлиентСервер ru Сравнение клиент сервер diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" new file mode 100644 index 000000000..28e5e21ca --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" @@ -0,0 +1,94 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .ДобавитьТест("ДобавитьСтроку") + .ДобавитьТест("СтрокаСимволов") + .ДобавитьТест("СравнитьВерсии") + ; + +КонецПроцедуры + +Процедура ДобавитьСтроку() Экспорт + + Варианты = ЮТест.Варианты("Исходная, Дополнение, Разделитель, Результат") + .Добавить("1", "2", "+", "1+2") + .Добавить("", "2", "+", "2") + .Добавить("1", "", "+", "1") + .Добавить(Неопределено, "2", "+", "2") + .Добавить("1", "2", Неопределено, "12") + .СписокВариантов(); + + Для Каждого Вариант Из Варианты Цикл + + Результат = ЮТСтроки.ДобавитьСтроку(Вариант.Исходная, Вариант.Дополнение, Вариант.Разделитель); + + Сообщение = СтрШаблон("ДобавитьСтроку(%1, %2, %3)", Вариант.Исходная, Вариант.Дополнение, Вариант.Разделитель); + ЮТест.ОжидаетЧто(Результат, Сообщение).Равно(Вариант.Результат); + + КонецЦикла; + +КонецПроцедуры + +Процедура СтрокаСимволов() Экспорт + + Варианты = ЮТест.Варианты("Символ, Количество, Результат") + .Добавить("1", 1, "1") + .Добавить("12", 0, "") + .Добавить("12", 2, "1212") + .СписокВариантов(); + + Для Каждого Вариант Из Варианты Цикл + + Результат = ЮТСтроки.СтрокаСимволов(Вариант.Символ, Вариант.Количество); + ЮТест.ОжидаетЧто(Результат, СтрШаблон("%1 * %2", Вариант.Символ, Вариант.Количество)) + .Равно(Вариант.Результат); + + КонецЦикла; + +КонецПроцедуры + +Процедура СравнитьВерсии() Экспорт + + Варианты = ЮТест.Варианты("Версия1, Версия2, Результат") + .Добавить("1", "1", 0) + .Добавить("1.2.3.4", "1.3", -1) + .Добавить("1.2.3", "1.2", 1) + .Добавить("1.2.3.999", "1.2.3.1", 1) + .Добавить("1.2.3.1", "1.2.3.999", -1) + .СписокВариантов(); + + Для Каждого Вариант Из Варианты Цикл + + Результат = ЮТСтроки.СравнитьВерсии(Вариант.Версия1, Вариант.Версия2); + ЮТест.ОжидаетЧто(Результат, СтрШаблон("%1 и %2", Вариант.Версия1, Вариант.Версия2)) + .Равно(Вариант.Результат); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270.mdo" new file mode 100644 index 000000000..e11fc26fb --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/\320\236\320\234_\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270.mdo" @@ -0,0 +1,7 @@ + + + ОМ_ЮТСтроки + true + true + true + diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" index b867b0357..897b0ee02 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" @@ -48,8 +48,12 @@ .СПараметрами(Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный))) .СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки, ДокументСсылка.Заказ")) .ДобавитьТест("СлучайноеПредопределенноеЗначение") + .ДобавитьТест("СлучайнаяДата") + .ДобавитьТест("СлучайноеВремя") + .ДобавитьТест("СлучайнаяДатаПосле") + .ДобавитьТест("СлучайнаяДатаДо") ; - + КонецПроцедуры Процедура Удалить() Экспорт @@ -57,11 +61,7 @@ Ссылки = Новый Массив; Ссылки.Добавить(ЮТест.Данные().СоздатьЭлемент("Справочники.Банки")); Ссылки.Добавить(ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара")); - Ссылки.Добавить( - ЮТест.Данные() - .КонструкторОбъекта("Документы.ПриходТовара") - .Провести() - ); + Ссылки.Добавить(ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара").Провести()); Для Каждого Ссылка Из Ссылки Цикл @@ -85,7 +85,7 @@ Ключи = "Числа, Строки"; БазоваяСтруктура = Новый Структура(Ключи); - Значения = Новый Структура(Ключи, ЮТОбщий.ЗначениеВМассиве(1, 2), ЮТОбщий.ЗначениеВМассиве("1", "2")); + Значения = Новый Структура(Ключи, ЮТКоллекции.ЗначениеВМассиве(1, 2), ЮТКоллекции.ЗначениеВМассиве("1", "2")); Результат = ЮТест.Данные().ВариантыПараметров(БазоваяСтруктура, Значения); @@ -145,9 +145,9 @@ ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи(); ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина; ПараметрыЗаписи.ДополнительныеСвойства.Вставить(СлучайноеСвойство, СлучайноеЗначение); - - ПараметрыМетода = ЮТОбщий.ЗначениеВМассиве( - ТестируемыйМенеджер, Неопределено, ПараметрыЗаписи); + + ПараметрыМетода = ЮТКоллекции.ЗначениеВМассиве( + ТестируемыйМенеджер, Неопределено, ПараметрыЗаписи); Если НЕ ЭтоСозданиеДокумента Тогда ПараметрыМетода.Вставить(1, "Тестовое наименование"); @@ -173,7 +173,7 @@ ЮТест.ОжидаетЧто(Проверка) .Метод("Вставить").Параметр(Идентификатор) - .НеВыбрасываетИсключение(, "Сформирован не валидный идентификатор: " + Идентификатор); + .НеВыбрасываетИсключение( , "Сформирован не валидный идентификатор: " + Идентификатор); КонецЦикла; @@ -197,10 +197,9 @@ ЗаменяемыеЗначения.Вставить("Поставщик 1", Поставщик); ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C1:R5C11", - ОписанияТипов, - КэшЗначений, - ЗаменяемыеЗначения - ); + ОписанияТипов, + КэшЗначений, + ЗаменяемыеЗначения); // Проверка поведения и результатов @@ -226,7 +225,7 @@ .Свойство("[2].Товар.Описание").Заполнено() .Свойство("[2].Количество").Равно(1) .Свойство("[2].Цена").Равно(1000000) - ; + ; #Иначе Ютест.ОжидаетЧто(ТаблицаРезультатов) .ИмеетТип("Массив") @@ -243,7 +242,7 @@ .Свойство("[1].Цена").Равно(1500.2) .Свойство("[2].Количество").Равно(1) .Свойство("[2].Цена").Равно(1000000) - ; + ; #КонецЕсли КонецПроцедуры @@ -257,7 +256,7 @@ .Добавить(ИмяМакета, "По имени макета") .Добавить(Макет, "Из текстового документа") .Добавить(Макет.ПолучитьТекст(), "Из строки") - ; + ; Для Каждого Вариант Из Варианты.СписокВариантов() Цикл @@ -269,10 +268,7 @@ // Вызов тестируемого сценария - ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета( - Вариант.Данные, - ОписанияТипов - ); + ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета(Вариант.Данные, ОписанияТипов); // Проверка поведения и результатов @@ -327,8 +323,8 @@ Ютест.ОжидаетЧто(ТаблицаРезультатов) .ИмеетДлину(3) .Свойство("Колонки").ИмеетДлину(2) - .Содержит("Период") - .Содержит("Количество") + .Содержит("Период") + .Содержит("Количество") ; #Иначе Ютест.ОжидаетЧто(ТаблицаРезультатов) @@ -337,8 +333,7 @@ .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() .ИмеетДлину(2) .ИмеетСвойство("Период") - .ИмеетСвойство("Количество") - ) + .ИмеетСвойство("Количество")) ; #КонецЕсли КонецПроцедуры @@ -358,7 +353,9 @@ .ВыбрасываетИсключение("Укажите описание загружаемых колонок (ОписанияТипов)"); ОжидаемоеСообщение = СтрШаблон("Некорректный тип параметра `ОписанияТипов` метода `ЮТТестовыеДанные.ЗагрузитьИзМакета`. Метод принимает `%1, %2`, а получили `%3` (1)", - Тип("Соответствие"), Тип("Структура"), Тип("Число")); + Тип("Соответствие"), + Тип("Структура"), + Тип("Число")); ЮТест.ОжидаетЧто(ЮТест.Данные()) .Метод("ЗагрузитьИзМакета") .Параметр("ОбщийМакет.ЮТ_ТестовыеДанныеMarkdown") @@ -388,7 +385,7 @@ .Метод("ЗагрузитьИзМакета") .Параметр("ОбщийМакет.ЮТ_МакетТестовыхДанных.ОсновнаяТаблица") .Параметр(Новый Структура("Цена", Новый ОписаниеТипов("Дата"))) - .ВыбрасываетИсключение(ОжидаемоеСообщение+ ": ОсновнаяТаблица"); + .ВыбрасываетИсключение(ОжидаемоеСообщение + ": ОсновнаяТаблица"); КонецПроцедуры @@ -403,9 +400,8 @@ КэшЗначений = Неопределено; ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C1:R5C11", - ОписанияТипов, - КэшЗначений - ); + ОписанияТипов, + КэшЗначений); ОписанияТипов = Новый Соответствие; ОписанияТипов.Вставить("Период", Новый ОписаниеТипов("Дата")); @@ -416,9 +412,8 @@ ОписанияТипов.Вставить("Сумма", Новый ОписаниеТипов("Число")); ОжидаемыеЗначения = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных.R8C1:R11C6", - ОписанияТипов, - КэшЗначений - ); + ОписанияТипов, + КэшЗначений); ЮТест.ОжидаетЧто(КэшЗначений).НеРавно(Неопределено); @@ -438,7 +433,7 @@ ПараметрыСозданияОбъектов = ЮТФабрика.ПараметрыСозданияОбъектов(); ПараметрыСозданияОбъектов.ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина; - Параметры = ЮТОбщий.ЗначениеВМассиве("ОбщийМакет.ЮТ_МакетТестовыхДанных.R14C1:R16C3", ОписанияТипов, Неопределено, Неопределено, ПараметрыСозданияОбъектов); + Параметры = ЮТКоллекции.ЗначениеВМассиве("ОбщийМакет.ЮТ_МакетТестовыхДанных.R14C1:R16C3", ОписанияТипов, Неопределено, Неопределено, ПараметрыСозданияОбъектов); ЮТест.ОжидаетЧто(ЮТест.Данные()) .Метод("ЗагрузитьИзМакета", Параметры) .НеВыбрасываетИсключение(); @@ -497,13 +492,13 @@ ЮТест.ОжидаетЧто(ЮТест.Данные().СлучайныйНомерТелефона()) .ИмеетТип("Строка") .ИмеетДлину(16) - ; + ; ЮТест.ОжидаетЧто(ЮТест.Данные().СлучайныйНомерТелефона("997")) .ИмеетТип("Строка") .ИмеетДлину(18) .НачинаетсяС("+997") - ; + ; КонецПроцедуры @@ -531,4 +526,81 @@ КонецПроцедуры +Процедура СлучайнаяДата() Экспорт + + Варианты = ЮТест.Варианты("Начало, Окончание") + .Добавить('20000101', '20000101') + .Добавить('20000101', '20000102') + .Добавить('20000101', '20000101235959') + .Добавить('20000101', '20000101010000') + .Добавить('20000101', '20000101000001'); + + Для Каждого Вариант Из Варианты.СписокВариантов() Цикл + + Результат = ЮТТестовыеДанные.СлучайнаяДата(Вариант.Начало, Вариант.Окончание); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Дата") + .МеждуВключаяГраницы(Вариант.Начало, Вариант.Окончание); + + КонецЦикла; + +КонецПроцедуры + +Процедура СлучайноеВремя() Экспорт + + Для Инд = 1 По 50 Цикл + + Результат = ЮТТестовыеДанные.СлучайноеВремя(); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Дата") + .МеждуВключаяГраницы('00010101000000', '00010101235959'); + + КонецЦикла; + +КонецПроцедуры + +Процедура СлучайнаяДатаПосле() Экспорт + + Варианты = ЮТест.Варианты("Начало, Интервал, ТипИнтервала, Максимум") + .Добавить('20000101', 1, "час", '20000101010000') + .Добавить('20000101', 7, "дней", '20000108') + .Добавить('20000101', 12, "месяцев", '20010101') + .Добавить('20000101', 3, "секунды", '20000101000003') + .Добавить('20000101', Неопределено, Неопределено, '39991231'); + + Для Каждого Вариант Из Варианты.СписокВариантов() Цикл + + Результат = ЮТТестовыеДанные.СлучайнаяДатаПосле(Вариант.Начало, Вариант.Интервал, Вариант.ТипИнтервала); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Дата") + .МеждуВключаяОкончаниеГраницы(Вариант.Начало, Вариант.Максимум); + + КонецЦикла; + +КонецПроцедуры + +Процедура СлучайнаяДатаДо() Экспорт + + Варианты = ЮТест.Варианты("Дата, Интервал, ТипИнтервала, Минимум") + .Добавить('20010101', 1, "час", '20001231230000') + .Добавить('20010101', 7, "дней", '20001225') + .Добавить('20010101', 12, "месяцев", '20000101') + .Добавить('20010101', 3, "секунды", '20001231235957') + .Добавить('20010101', Неопределено, Неопределено, '00010101'); + + Для Каждого Вариант Из Варианты.СписокВариантов() Цикл + + Результат = ЮТТестовыеДанные.СлучайнаяДатаДо(Вариант.Дата, Вариант.Интервал, Вариант.ТипИнтервала); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Дата") + .МеждуВключаяНачалоГраницы(Вариант.Минимум, Вариант.Дата); + + КонецЦикла; + +КонецПроцедуры + #КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" index e97e61ef0..819366972 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТТестовыеДанные ru - О м тестовые данные + Тестовые данные true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index a28f43198..b5bcfd85e 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТТестовыеДанныеСлужебный ru - О м тестовые данные служебный + Тестовые данные служебный true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" index ff7f461dc..dae584987 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,14 +22,21 @@ ЮТТесты .ДобавитьТест("СПараметрами") + .ДобавитьТест("Представление") + .ДобавитьТест("СПараметрамиНаКлиенте") + .ДобавитьТест("СПараметрамиНаСервере") ; КонецПроцедуры Процедура ПередКаждымТестом() Экспорт - ОписаниеМодуля = ЮТФабрика.ОписаниеМодуля(); - ЮТТесты.ПередЧтениемСценариевМодуля(ОписаниеМодуля); + ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля(); + ОписаниеМодуля.КлиентУправляемоеПриложение = Истина; + ОписаниеМодуля.КлиентОбычноеПриложение = Истина; + ОписаниеМодуля.Сервер = Истина; + + ЮТТестыСлужебный.ПередЧтениемСценариевМодуля(ОписаниеМодуля); КонецПроцедуры @@ -44,7 +51,7 @@ .СПараметрами(3) ; - ЮТест.ОжидаетЧто(Контекст().ТекущийНабор.Тесты) + ЮТест.ОжидаетЧто(ТестыТекущегоНабора()) .ИмеетДлину(5) .Свойство("[0].Параметры").ЭтоНеопределено() .Свойство("[1].Параметры").ИмеетДлину(3) @@ -58,13 +65,89 @@ КонецПроцедуры +Процедура Представление() Экспорт + + ЮТТесты + .ДобавитьТестовыйНабор("Набор1").Представление("Представление набора") + .ДобавитьТест("Тест1").Представление("Представление теста") + .ДобавитьТест("Тест2") + .СПараметрами(1).Представление("Представление теста 2", Истина) + .СПараметрами(2).Представление("Представление теста 3") + ; + + ЮТест.ОжидаетЧто(ТекущийНабор()) + .Свойство("Представление").Равно("Представление набора") + .Свойство("Тесты[0].Представление").Равно("Представление теста") + .Свойство("Тесты[1].Представление").Равно("Тест2. Представление теста 2") + .Свойство("Тесты[2].Представление").Равно("Представление теста 3"); + +КонецПроцедуры + +Процедура СПараметрамиНаКлиенте() Экспорт + + КонтекстыВызова = ЮТФабрика.КонтекстыВызова(); + ЮТТесты + .ДобавитьКлиентскийТест("Тест1") + .СПараметрамиНаКлиенте(1) + .ДобавитьТест("Тест2") + .СПараметрамиНаКлиенте(1, 2, 3) + .СПараметрами(2) + ; + + ЮТест.ОжидаетЧто(ТестыТекущегоНабора()) + .ИмеетДлину(3) + .Свойство("[0].Параметры").ИмеетДлину(1) + .Свойство("[0].КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве(КонтекстыВызова.КлиентУправляемоеПриложение, КонтекстыВызова.КлиентОбычноеПриложение)) + .Свойство("[1].Параметры").ИмеетДлину(3) + .Свойство("[1].КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве(КонтекстыВызова.КлиентУправляемоеПриложение, КонтекстыВызова.КлиентОбычноеПриложение)) + .Свойство("[2].КонтекстВызова").ИмеетДлину(3) + ; + + ЮТест.ОжидаетЧто(ЮТТесты.ДобавитьСерверныйТест("Тест3")) + .Метод("СПараметрамиНаКлиенте").Параметр(1) + .ВыбрасываетИсключение("Не пересекаются контексты базового теста [Сервер] и устанавливаемые [КлиентУправляемоеПриложение, КлиентОбычноеПриложение]"); + +КонецПроцедуры + +Процедура СПараметрамиНаСервере() Экспорт + + КонтекстыВызова = ЮТФабрика.КонтекстыВызова(); + ЮТТесты + .ДобавитьСерверныйТест("Тест1") + .СПараметрамиНаСервере(1) + .ДобавитьТест("Тест2") + .СПараметрамиНаСервере(1, 2, 3) + .СПараметрами(2) + ; + + ЮТест.ОжидаетЧто(ТестыТекущегоНабора()) + .ИмеетДлину(3) + .Свойство("[0].Параметры").ИмеетДлину(1) + .Свойство("[0].КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве(КонтекстыВызова.Сервер)) + .Свойство("[1].Параметры").ИмеетДлину(3) + .Свойство("[1].КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве(КонтекстыВызова.Сервер)) + .Свойство("[2].КонтекстВызова").ИмеетДлину(3) + ; + + ЮТест.ОжидаетЧто(ЮТТесты.ДобавитьКлиентскийТест("Тест3")) + .Метод("СПараметрамиНаСервере").Параметр(1) + .ВыбрасываетИсключение("Не пересекаются контексты базового теста [КлиентУправляемоеПриложение, КлиентОбычноеПриложение] и устанавливаемые [Сервер]"); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции -Функция Контекст() +Функция ТекущийНабор() + + Возврат ЮТТестыСлужебный.Контекст().ТекущийНабор; + +КонецФункции + +Функция ТестыТекущегоНабора() - Возврат ЮТКонтекст.ЗначениеКонтекста("КонтекстРегистрацияТестов"); + Возврат ТекущийНабор().Тесты; КонецФункции diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213.mdo" index 68ed1e0c4..d49636f94 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213.mdo" @@ -3,7 +3,7 @@ ОМ_ЮТТесты ru - О м ЮТТесты + Тесты true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 33cd91d17..256023aa8 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -37,8 +37,8 @@ .СПараметрами(Новый ОписаниеТипов("Число, Дата"), Истина) .СПараметрами(Новый ОписаниеТипов("Число, ПеречислениеСсылка.PushУведомления, Дата"), Ложь) .ДобавитьТест("ЭтоКоллекцияПримитивныхТипов") - .СПараметрами(ЮТОбщий.ЗначениеВМассиве(Тип("Строка"), Тип("Дата")), Истина) - .СПараметрами(ЮТОбщий.ЗначениеВМассиве(Тип("Строка"), Тип("Дата"), Тип("ПеречислениеСсылка.PushУведомления")), Ложь) + .СПараметрами(ЮТКоллекции.ЗначениеВМассиве(Тип("Строка"), Тип("Дата")), Истина) + .СПараметрами(ЮТКоллекции.ЗначениеВМассиве(Тип("Строка"), Тип("Дата"), Тип("ПеречислениеСсылка.PushУведомления")), Ложь) .ДобавитьТест("ИдентификаторТипа") .СПараметрами("Дата") .СПараметрами("Строка") @@ -59,7 +59,7 @@ .СПараметрами("ОбъектXDTO") .СПараметрами("ОбъектМетаданных") ; - + КонецПроцедуры Процедура ЭтоСистемноеПеречисление(Тип, ОжидаемыйРезультат) Экспорт diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" index de1400e60..a6403d1e4 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -77,7 +77,15 @@ .ДобавитьТест("ЛюбойЭлементСоответствуетПредикату") .ДобавитьТест("СодержитПредикат") .ДобавитьТест("НеСодержитПредикат") - .ДобавитьТест("ФорматированныеСтроки") + .ДобавитьТест("ФорматированныеСтроки"); + + Массив = ЮТКоллекции.ЗначениеВМассиве(0, 1, "2"); + Список = Новый СписокЗначений(); + Список.ЗагрузитьЗначения(Массив); + + ЮТТесты.ДобавитьТест("ВСписке") + .СПараметрами(Массив) + .СПараметрами(Список) ; КонецПроцедуры @@ -86,12 +94,12 @@ ЮТУтверждения.Что(1, "Проверяемый контекст"); - ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); + ДанныеКонтекста = ЮТКонтекстСлужебный.КонтекстПроверки(); ЮТУтверждения.Что(ДанныеКонтекста, "Контекст утверждений") .Свойство("ПрефиксОшибки").Равно("Проверяемый контекст") .Свойство("ИмяМетода").Равно(""); - + КонецПроцедуры Процедура Свойство() Экспорт @@ -101,22 +109,22 @@ ЮТУтверждения.Что(Объект) .ИмеетТип("Структура"); - - ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); + + ДанныеКонтекста = ЮТКонтекстСлужебный.КонтекстПроверки(); ЮТУтверждения.Что(ДанныеКонтекста, "Свойство не установлено") .Свойство("ОбъектПроверки.ИмяСвойства").Равно(Неопределено); ЮТУтверждения.Что(Объект) .Свойство("Примитив"); - ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); + ДанныеКонтекста = ЮТКонтекстСлужебный.КонтекстПроверки(); ЮТУтверждения.Что(ДанныеКонтекста, "Свойство установлено") .Свойство("ОбъектПроверки.ИмяСвойства").Равно("Примитив"); ЮТУтверждения.Что(Объект) .Свойство("Объект.Первый"); - ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); + ДанныеКонтекста = ЮТКонтекстСлужебный.КонтекстПроверки(); ЮТУтверждения.Что(ДанныеКонтекста, "Составное свойство") .Свойство("ОбъектПроверки.ИмяСвойства").Равно("Объект.Первый"); @@ -179,7 +187,7 @@ КонецПопытки; ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `Структура` содержит свойство `Объект.Нулевой`, но это не так"); - Объект = ЮТОбщий.ЗначениеВМассиве("1", "2", "3"); + Объект = ЮТКоллекции.ЗначениеВМассиве("1", "2", "3"); ЮТУтверждения.Что(Объект, "Проверка элементов массива") .Элемент(0).Равно("1") .Элемент(1).Равно("2") @@ -189,13 +197,13 @@ .Свойство("[-1]").Равно("3") .НетСвойства(3) .НетСвойства("[3]"); - - Объект.Добавить(Новый Структура("Первый, Второй", 1, ЮТОбщий.ЗначениеВМассиве(2))); + + Объект.Добавить(Новый Структура("Первый, Второй", 1, ЮТКоллекции.ЗначениеВМассиве(2))); ЮТУтверждения.Что(Объект, "Проверка свойства элемента массива") .Свойство("[3].Первый").Равно(1) .Свойство("[3].Второй[-1]").Равно(2) .Свойство("[3].Второй[0]").Равно(2); - + Ссылка = Ютест.Данные().СоздатьЭлемент("Справочники.Товары"); Объект = Новый Соответствие(); Объект.Вставить(Ссылка, 1); @@ -217,7 +225,7 @@ .Свойство("Структура").Равно(ВложеннаяСтруктура) .НетСвойства("Число") .Равно(Объект); - + Попытка Ошибка = Неопределено; ЮТест.ОжидаетЧто(Объект) @@ -231,7 +239,7 @@ Процедура ИмеетСвойство() Экспорт - Объект = Новый Структура("Примитив, Объект", 1, Новый Структура("Первый, Второй", 1, ЮТОбщий.ЗначениеВМассиве(2, 3))); + Объект = Новый Структура("Примитив, Объект", 1, Новый Структура("Первый, Второй", 1, ЮТКоллекции.ЗначениеВМассиве(2, 3))); ЮТУтверждения.Что(Объект) .ИмеетСвойство("Примитив") @@ -243,7 +251,7 @@ .ИмеетСвойство("Первый") .ИмеетСвойство("Второй[0]") .ИмеетСвойство("Второй[1]") - ; + ; Попытка Ошибка = Неопределено; @@ -258,7 +266,7 @@ Процедура НеИмеетСвойства() Экспорт - Объект = Новый Структура("Примитив, Объект", 1, Новый Структура("Первый, Второй", 1, ЮТОбщий.ЗначениеВМассиве(2, 3))); + Объект = Новый Структура("Примитив, Объект", 1, Новый Структура("Первый, Второй", 1, ЮТКоллекции.ЗначениеВМассиве(2, 3))); ЮТУтверждения.Что(Объект) .НеИмеетСвойства("Первый") @@ -282,7 +290,7 @@ ЮТУтверждения.Что(ОМ_ЮТУтверждения, "Контекст метода") .Метод("МетодБезИсключение"); - Контекст = ЮТКонтекст.КонтекстПроверки(); + Контекст = ЮТКонтекстСлужебный.КонтекстПроверки(); ЮТУтверждения.Что(Контекст) .Свойство("ПрефиксОшибки").Равно("Контекст метода") .Свойство("ИмяМетода").Равно("МетодБезИсключение") @@ -291,7 +299,7 @@ ЮТУтверждения.Что(ОМ_ЮТУтверждения, "Контекст метода с параметрами") .Метод("МетодБезИсключение", Новый Массив(1)); - Контекст = ЮТКонтекст.КонтекстПроверки(); + Контекст = ЮТКонтекстСлужебный.КонтекстПроверки(); ЮТУтверждения.Что(Контекст) .Свойство("ПрефиксОшибки").Равно("Контекст метода с параметрами") .Свойство("ИмяМетода").Равно("МетодБезИсключение") @@ -515,7 +523,7 @@ // Негативные тесты Попытка - ЮТУтверждения.Что(1=1) + ЮТУтверждения.Что(1 = 1) .НеРавно(Истина); Ошибка = Неопределено; Исключение @@ -547,11 +555,11 @@ .Больше("") .Больше("Слов") .Больше("А"); - + ЮТУтверждения.Что(ТекущаяДата()) .Больше('20200101') .Больше('00010101'); - + // Негативные тесты Попытка Ошибка = Неопределено; @@ -634,16 +642,16 @@ .БольшеИлиРавно("") .БольшеИлиРавно("Слов") .БольшеИлиРавно("Слово"); - + ЮТУтверждения.Что('20200102') .БольшеИлиРавно('20200102') .БольшеИлиРавно('20200101') .БольшеИлиРавно('00010101'); - + // Негативные тесты Попытка Ошибка = Неопределено; - ЮТУтверждения.Что(10) + ЮТУтверждения.Что(10) .БольшеИлиРавно(100) Исключение Ошибка = ИнформацияОбОшибке(); @@ -740,8 +748,8 @@ Попытка Ошибка = Неопределено; - ЮТУтверждения.Что("Б") - .Меньше("Б") + ЮТУтверждения.Что("Б") + .Меньше("Б") Исключение Ошибка = ИнформацияОбОшибке(); КонецПопытки; @@ -749,8 +757,8 @@ Попытка Ошибка = Неопределено; - ЮТУтверждения.Что("В") - .Меньше("Б") + ЮТУтверждения.Что("В") + .Меньше("Б") Исключение Ошибка = ИнформацияОбОшибке(); КонецПопытки; @@ -758,8 +766,8 @@ Попытка Ошибка = Неопределено; - ЮТУтверждения.Что('20200101') - .Меньше('20200101') + ЮТУтверждения.Что('20200101') + .Меньше('20200101') Исключение Ошибка = ИнформацияОбОшибке(); КонецПопытки; @@ -767,8 +775,8 @@ Попытка Ошибка = Неопределено; - ЮТУтверждения.Что('20200102') - .Меньше('20200101') + ЮТУтверждения.Что('20200102') + .Меньше('20200101') Исключение Ошибка = ИнформацияОбОшибке(); КонецПопытки; @@ -1045,7 +1053,7 @@ КонецПопытки; ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `<Пустое значение, Тип: Null>` является неопределено, но это не так"); ПроверитьДанныеОшибкиСравнения(Null, Неопределено); - + Попытка Ошибка = Неопределено; ЮТУтверждения.Что("", "Пустая строка") @@ -1133,7 +1141,7 @@ КонецПопытки; ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `<Пустое значение, Тип: Null>` не является null, но это не так"); ПроверитьДанныеОшибкиСравнения(Null, Null); - + КонецПроцедуры Процедура ИмеетТип() Экспорт @@ -1222,10 +1230,10 @@ Ошибка = ИнформацияОбОшибке(); КонецПопытки; ПроверитьОшибкуИсполнения(Ошибка, СтрШаблон("Не верный тип ожидаемого значения (`%1`), должен быть `%2, %3, %4`", - Тип("Неопределено"), - Тип("Строка"), - Тип("Тип"), - Тип("ОписаниеТипов"))); + Тип("Неопределено"), + Тип("Строка"), + Тип("Тип"), + Тип("ОписаниеТипов"))); Попытка Ошибка = Неопределено; @@ -1247,9 +1255,9 @@ .Содержит(123) .Содержит("1") .Содержит("21"); - ЮТУтверждения.Что(ЮТОбщий.ЗначениеВМассиве("1", "2")) + ЮТУтверждения.Что(ЮТКоллекции.ЗначениеВМассиве("1", "2")) .Содержит("1"); - ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТОбщий.ЗначениеВМассиве("1", "2"))) + ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТКоллекции.ЗначениеВМассиве("1", "2"))) .Содержит("1") .Содержит("2"); ЮТУтверждения.Что(Новый Структура("Ключ", "1")) @@ -1263,7 +1271,7 @@ .Содержит("1"); ЮТУтверждения.Что(Новый ФиксированноеСоответствие(Соответствие)) .Содержит("1"); - + Список = Новый СписокЗначений(); Список.Добавить("1", "2"); ЮТУтверждения.Что(Список) @@ -1284,7 +1292,7 @@ Попытка Ошибка = Неопределено; - ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТОбщий.ЗначениеВМассиве("1", "2"))) + ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТКоллекции.ЗначениеВМассиве("1", "2"))) .Содержит("1+1"); Исключение Ошибка = ИнформацияОбОшибке(); @@ -1326,10 +1334,10 @@ ЮТУтверждения.Что("123321", "Строка") .НеСодержит("0") .НеСодержит(Новый Структура); - ЮТУтверждения.Что(ЮТОбщий.ЗначениеВМассиве("1", "2"), "Массив") + ЮТУтверждения.Что(ЮТКоллекции.ЗначениеВМассиве("1", "2"), "Массив") .НеСодержит(1) .НеСодержит("3"); - ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТОбщий.ЗначениеВМассиве("1", "2")), "ФиксированныйМассив") + ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТКоллекции.ЗначениеВМассиве("1", "2")), "ФиксированныйМассив") .НеСодержит(1) .НеСодержит("3"); ЮТУтверждения.Что(Новый Структура("Ключ", "1"), "Структура") @@ -1347,7 +1355,7 @@ ЮТУтверждения.Что(Новый ФиксированноеСоответствие(Соответствие)) .НеСодержит(1) .НеСодержит("2"); - + Список = Новый СписокЗначений(); Список.Добавить("1", "2"); ЮТУтверждения.Что(Список) @@ -1376,7 +1384,7 @@ Попытка Ошибка = Неопределено; - ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТОбщий.ЗначениеВМассиве("1", "2"))) + ЮТУтверждения.Что(Новый ФиксированныйМассив(ЮТКоллекции.ЗначениеВМассиве("1", "2"))) .НеСодержит("1"); Исключение Ошибка = ИнформацияОбОшибке(); @@ -1400,7 +1408,7 @@ ЮТУтверждения.Что("123321") .СодержитСтрокуПоШаблону("\d{3}") .СодержитСтрокуПоШаблону(".{6}") - ; + ; // Негативные тесты Попытка @@ -1416,12 +1424,12 @@ КонецПроцедуры Процедура НеСодержитСтрокуПоШаблону() Экспорт - + // Позитивные тесты ЮТУтверждения.Что("123321") .НеСодержитСтрокуПоШаблону("\D{3}") .НеСодержитСтрокуПоШаблону(".{7}") - ; + ; // Негативные тесты Попытка @@ -1581,7 +1589,7 @@ МалоПараметров = ?(ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы(), "Not enough actual parameters", "Недостаточно фактических параметров"); ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение", 2)) + .Метод("МетодИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение", 2)) .ВыбрасываетИсключение(МногоПараметров); ЮТУтверждения.Что(ОМ_ЮТУтверждения) @@ -1593,7 +1601,7 @@ .ВыбрасываетИсключение(МетодНеОбнаружен); ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) + .Метод("МетодИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение")) .ВыбрасываетИсключение("Исключение"); ЮТУтверждения.Что(ОМ_ЮТУтверждения) @@ -1650,19 +1658,19 @@ // Позитивные тесты ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодБезИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) + .Метод("МетодБезИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение")) .НеВыбрасываетИсключение() .НеВыбрасываетИсключение("Ожидаемое исключение"); ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) + .Метод("МетодИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение")) .НеВыбрасываетИсключение("Ожидаемое исключение"); // Негативные тесты Попытка Ошибка = Неопределено; ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодИсключение", ЮТОбщий.ЗначениеВМассиве("Ожидаемое исключение")) + .Метод("МетодИсключение", ЮТКоллекции.ЗначениеВМассиве("Ожидаемое исключение")) .НеВыбрасываетИсключение("исключение"); Исключение Ошибка = ИнформацияОбОшибке(); @@ -1697,14 +1705,14 @@ Ошибка = ИнформацияОбОшибке(); КонецПопытки; ПроверитьОшибкуИсполнения(Ошибка, "ИмяМетода не заполнено в контексте. Воспользуйтесь предварительно методом интерфейса `Метод(ИмяМетода)`"); - + КонецПроцедуры Процедура ИмеетМетод() Экспорт ЮТест.ОжидаетЧто(ОМ_ЮТУтверждения) .ИмеетМетод("МетодИсключение"); - + Попытка Ошибка = Неопределено; ЮТУтверждения.Что(ОМ_ЮТУтверждения) @@ -1728,7 +1736,7 @@ ЮТУтверждения.Что(ОМ_ЮТУтверждения) .Метод("ЗаписатьОбъект").Параметр(Объект) - .НеВыбрасываетИсключение(, , Истина); + .НеВыбрасываетИсключение( , , Истина); ЮТест.ОжидаетЧто(Объект) .Свойство("Ссылка").НеЗаполнено(); @@ -1782,7 +1790,7 @@ Процедура СравнениеСложныхОбъектов() Экспорт Варианты = Новый Массив(); - МассивЗначений = ЮТОбщий.ЗначениеВМассиве(1, "2"); + МассивЗначений = ЮТКоллекции.ЗначениеВМассиве(1, "2"); Варианты.Добавить(Новый Структура("Значение, Описание", Новый Структура("Поле1, Поле2, Коллекция", 1, "2", МассивЗначений), "Структура с массивом")); Варианты.Добавить(Новый Структура("Значение, Описание", Новый Структура("Поле1, Поле2", 1, "2"), "Структура примитивов")); Варианты.Добавить(Новый Структура("Значение, Описание", МассивЗначений, "Массив примитивов")); @@ -1805,8 +1813,8 @@ Попытка ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодБезИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) - .НеВыбрасываетИсключение(, , Истина) + .Метод("МетодБезИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение")) + .НеВыбрасываетИсключение( , , Истина) Исключение Ошибка = ИнформацияОбОшибке(); КонецПопытки; @@ -1815,8 +1823,8 @@ Попытка ЮТУтверждения.Что(ОМ_ЮТУтверждения) - .Метод("МетодБезИсключение", ЮТОбщий.ЗначениеВМассиве("Исключение")) - .ВыбрасываетИсключение(, , Истина) + .Метод("МетодБезИсключение", ЮТКоллекции.ЗначениеВМассиве("Исключение")) + .ВыбрасываетИсключение( , , Истина) Исключение Ошибка = ИнформацияОбОшибке(); КонецПопытки; @@ -2088,13 +2096,13 @@ Ключи = "Строка, Число, Дата, Коллекция"; Эталон = Новый Структура(Ключи, ЮТест.Данные().СлучайнаяСтрока(), ЮТест.Данные().СлучайноеЧисло(), ЮТест.Данные().СлучайнаяДата()); - Эталон.Коллекция = ЮТОбщий.ЗначениеВМассиве(1, 2, 3); + Эталон.Коллекция = ЮТКоллекции.ЗначениеВМассиве(1, 2, 3); Объект = Новый Структура(Ключи); ЗаполнитьЗначенияСвойств(Объект, Эталон); ЮТУтверждения.Что(Объект).ИмеетСвойстваРавные(Эталон, "Копия"); - Объект.Коллекция = ЮТОбщий.ЗначениеВМассиве(1, 2, 3); + Объект.Коллекция = ЮТКоллекции.ЗначениеВМассиве(1, 2, 3); ЮТУтверждения.Что(Объект).ИмеетСвойстваРавные(Эталон, "Переопределен массив"); Объект.Коллекция.Добавить(4); @@ -2130,7 +2138,7 @@ КонецПопытки; ПроверитьОшибкуУтверждения(Ошибка, "проверяемое значение `Запрос` не содержат свойство 'Результат'"); #КонецЕсли - + КонецПроцедуры Процедура КаждыйЭлементСодержитСвойство() Экспорт @@ -2225,7 +2233,7 @@ Объект.Вставить("Число", 1); Объект.Вставить("Строка", "1"); Объект.Вставить("Дата", Дата); - Объект.Вставить("Массив", ЮТОбщий.ЗначениеВМассиве(1, "1")); + Объект.Вставить("Массив", ЮТКоллекции.ЗначениеВМассиве(1, "1")); ПроверкаЧисла = ЮТест.Предикат().Реквизит("Число").ИмеетТип(Тип("Число")).БольшеИлиРавно(1).МеньшеИлиРавно(10).Получить(); ПроверкаДаты = ЮТест.Предикат().Реквизит("Дата").ИмеетТип(Новый ОписаниеТипов("Дата")).Равно(Дата).Получить(); @@ -2236,7 +2244,7 @@ .ИмеетТип("Структура")) .СоответствуетПредикату(ПроверкаЧисла) .СоответствуетПредикату(ПроверкаДаты) - ; + ; Попытка Ошибка = Неопределено; @@ -2271,11 +2279,11 @@ Объект.Вставить("Число", 1); Объект.Вставить("Строка", "1"); Объект.Вставить("Дата", Дата); - Объект.Вставить("Массив", ЮТОбщий.ЗначениеВМассиве(1, "1")); + Объект.Вставить("Массив", ЮТКоллекции.ЗначениеВМассиве(1, "1")); Объект2 = ПомощникТестированияВызовСервера.СоздатьКопию(Объект); - Коллекция = ЮТОбщий.ЗначениеВМассиве(Объект, Объект2); + Коллекция = ЮТКоллекции.ЗначениеВМассиве(Объект, Объект2); Предикаты = ЮТест.Предикат() .ИмеетТип("Структура") @@ -2288,8 +2296,8 @@ .Реквизит("Дата").Равно(Дата) .Реквизит("Массив").ИмеетТип("Массив") .Реквизит("Массив").ИмеетДлину(2) - ; - + ; + ЮТест.ОжидаетЧто(Коллекция).КаждыйЭлементСоответствуетПредикату(Предикаты); Попытка @@ -2307,9 +2315,9 @@ Процедура ЛюбойЭлементСоответствуетПредикату() Экспорт Дата = '20200220130001'; - Объект = Новый Структура("Число, Строка, Дата, Массив", 1, "2", Дата, ЮТОбщий.ЗначениеВМассиве(3, "1")); - Объект2 = Новый Структура("Число, Строка, Дата, Массив", 2, "1", Дата, ЮТОбщий.ЗначениеВМассиве(1, "3")); - Коллекция = ЮТОбщий.ЗначениеВМассиве(Объект, Объект2); + Объект = Новый Структура("Число, Строка, Дата, Массив", 1, "2", Дата, ЮТКоллекции.ЗначениеВМассиве(3, "1")); + Объект2 = Новый Структура("Число, Строка, Дата, Массив", 2, "1", Дата, ЮТКоллекции.ЗначениеВМассиве(1, "3")); + Коллекция = ЮТКоллекции.ЗначениеВМассиве(Объект, Объект2); ЮТест.ОжидаетЧто(Коллекция).ЛюбойЭлементСоответствуетПредикату(Ютест.Предикат().Реквизит("Число").Равно(2)); ЮТест.ОжидаетЧто(Коллекция).ЛюбойЭлементСоответствуетПредикату(Ютест.Предикат().Реквизит("Число").Равно(1)); @@ -2337,13 +2345,13 @@ Процедура СодержитПредикат() Экспорт Структура = Новый Структура("Свойство, Свойство2", 1, 2); - Коллекция = ЮТОбщий.ЗначениеВМассиве("1", 1, Структура); + Коллекция = ЮТКоллекции.ЗначениеВМассиве("1", 1, Структура); ЮТест.ОжидаетЧто(Коллекция) .Содержит(ЮТест.Предикат().Равно(1), "Предикат из общего модуля") .Содержит(ЮТест.Предикат().Равно(1).Получить(), "Сохраненный предикат") .Содержит(ЮТест.Предикат().Реквизит("Свойство").Равно(1), "Проверка свойства") - ; + ; Ошибка = ОшибкаУтверждения(Коллекция, "Содержит", ЮТест.Предикат().Равно(2)); ПроверитьОшибкуУтверждения(Ошибка, "проверяемое значение `Массив` содержит элемент, значение которого равно `2`"); @@ -2362,19 +2370,29 @@ Процедура НеСодержитПредикат() Экспорт Структура = Новый Структура("Свойство, Свойство2", 1, 2); - Коллекция = ЮТОбщий.ЗначениеВМассиве("1", 1, Структура); + Коллекция = ЮТКоллекции.ЗначениеВМассиве("1", 1, Структура); ЮТест.ОжидаетЧто(Коллекция) .НеСодержит(ЮТест.Предикат().Равно(2), "Предикат из общего модуля") .НеСодержит(ЮТест.Предикат().Равно(2).Получить(), "Сохраненный предикат") .НеСодержит(ЮТест.Предикат().Реквизит("Свойство").Равно(2), "Проверка свойства") - ; + ; Ошибка = ОшибкаУтверждения(Коллекция, "НеСодержит", ЮТест.Предикат().Равно(1)); ПроверитьОшибкуУтверждения(Ошибка, "проверяемое значение `Массив` не содержит элемент, значение которого равно `1`"); КонецПроцедуры +Процедура ВСписке(Коллекция) Экспорт + + ЮТест.ОжидаетЧто(0) + .ВСписке(Коллекция); + + Ошибка = ОшибкаУтверждения(-1, "ВСписке", Коллекция); + ПроверитьОшибкуУтверждения(Ошибка, СтрШаблон("проверяемое значение `-1` в списке `%1`, но это не так.", Коллекция)); + +КонецПроцедуры + Процедура ФорматированныеСтроки() Экспорт Строка = Новый ФорматированнаяСтрока("Тестовая строка"); @@ -2388,7 +2406,7 @@ .НеСодержит("число") .СодержитСтрокуПоШаблону("[\w\W]+") .НеСодержитСтрокуПоШаблону("\d+") - ; + ; КонецПроцедуры @@ -2398,10 +2416,10 @@ Функция ОшибкаУтверждения(ПроверяемоеЗначение, Утверждение, Параметр) - Параметры = ЮТОбщий.ЗначениеВМассиве(Параметр); - + Параметры = ЮТКоллекции.ЗначениеВМассиве(Параметр); ЮТест.ОжидаетЧто(ПроверяемоеЗначение); - Ошибка = ЮТОбщий.ВыполнитьМетод("ЮТУтверждения." + Утверждение, Параметры); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод("ЮТУтверждения." + Утверждение, Параметры); + Возврат Ошибка; КонецФункции @@ -2411,22 +2429,22 @@ Если ИнформацияОбОшибке = Неопределено Тогда Сообщение = СтрШаблон("Ожидали, что возникнет ошибка утверждений [%1]", ОжидаемоеОписание); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения("", ОжидаемоеОписание); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения("", ОжидаемоеОписание); ИначеЕсли НЕ СтрНачинаетсяС(ИнформацияОбОшибке.Описание, "[Failed]") Тогда Сообщение = СтрШаблон("Ожидали поймать ошибку утверждений [%1], а получили ошибку исполнения [%2]", ОжидаемоеОписание, ИнформацияОбОшибке.Описание); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); ИначеЕсли СтрНайти(ИнформацияОбОшибке.Описание, ОжидаемоеОписание) = 0 Тогда Сообщение = СтрШаблон("Ожидали поймать ошибку [%1], а получили [%2]", ОжидаемоеОписание, ИнформацияОбОшибке.Описание); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); КонецЕсли; Если ЗначениеЗаполнено(Сообщение) Тогда - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(Сообщение); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(Сообщение); КонецЕсли; КонецПроцедуры @@ -2436,22 +2454,22 @@ Если ИнформацияОбОшибке = Неопределено Тогда Сообщение = СтрШаблон("Ожидали, что возникнет ошибка исполнения [%1]", ОжидаемоеОписание); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения("", ОжидаемоеОписание); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения("", ОжидаемоеОписание); ИначеЕсли НЕ СтрНачинаетсяС(ИнформацияОбОшибке.Описание, "[Broken]") Тогда Сообщение = СтрШаблон("Ожидали поймать ошибку исполнения [%1], а получили ошибку без модификатора [%2]", ОжидаемоеОписание, ИнформацияОбОшибке.Описание); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); ИначеЕсли СтрНайти(ИнформацияОбОшибке.Описание, ОжидаемоеОписание) = 0 Тогда Сообщение = СтрШаблон("Ожидали поймать ошибку [%1], а получили [%2]", ОжидаемоеОписание, ИнформацияОбОшибке.Описание); - ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); + ЮТРегистрацияОшибокСлужебный.УстановитьДанныеОшибкиСравнения(ИнформацияОбОшибке.Описание, ОжидаемоеОписание); КонецЕсли; Если ЗначениеЗаполнено(Сообщение) Тогда - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(Сообщение); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(Сообщение); КонецЕсли; КонецПроцедуры @@ -2467,7 +2485,7 @@ ОжидаемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ОжидаемоеЗначение); ПроверяемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ПроверяемоеЗначение); - ДанныеОшибки = ЮТКонтекст.КонтекстОшибки(); + ДанныеОшибки = ЮТРегистрацияОшибокСлужебный.КонтекстОшибки(); Сообщение = Неопределено; @@ -2484,7 +2502,7 @@ КонецЕсли; Если ЗначениеЗаполнено(Сообщение) Тогда - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(Сообщение); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(Сообщение); КонецЕсли; КонецПроцедуры @@ -2492,7 +2510,7 @@ Процедура ПроверитьДанныеОшибкиУтверждения(Знач ПроверяемоеЗначение) ПроверяемоеЗначение = ЮТОбщий.ПредставлениеЗначения(ПроверяемоеЗначение); - ДанныеОшибки = ЮТКонтекст.КонтекстОшибки(); + ДанныеОшибки = ЮТРегистрацияОшибокСлужебный.КонтекстОшибки(); Сообщение = Неопределено; @@ -2507,7 +2525,7 @@ КонецЕсли; Если ЗначениеЗаполнено(Сообщение) Тогда - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(Сообщение); + ЮТРегистрацияОшибокСлужебный.ВызватьОшибкуПроверки(Сообщение); КонецЕсли; КонецПроцедуры diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 68% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 13a7921b5..cc1127ed4 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ .ДобавитьТест("ЭтоПодходящееРасширение") .ДобавитьТест("ЭтоПодходящийМодуль") .ДобавитьТест("ОтфильтроватьТестовыеНаборы") - ; + ; КонецПроцедуры @@ -33,7 +33,7 @@ Варианты = Новый Массив(); Ключи = "ИмяРасширения, Параметры, Результат, Описание"; Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.extensions = ЮТОбщий.ЗначениеВМассиве("test", "тесты"); + Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("test", "тесты"); Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Простой кейс")); Варианты.Добавить(Новый Структура(Ключи, "TeST", Параметры, Истина, "Изменен регистр")); Варианты.Добавить(Новый Структура(Ключи, "тесты", Параметры, Истина, "Второе расширение")); @@ -44,14 +44,14 @@ Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Истина, "Без фильтр по расширениям 2")); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("test.method"); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("test.method"); Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Фильтр по пути")); Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Истина, "Фильтр по пути, отпустствующее расширение")); Для Каждого Вариант Из Варианты Цикл - ЮТФильтрация.УстановитьКонтекст(Вариант.Параметры); - Результат = ЮТФильтрация.ЭтоПодходящееРасширение(Вариант.ИмяРасширения); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Вариант.Параметры); + Результат = ЮТФильтрацияСлужебный.ЭтоПодходящееРасширение(Вариант.ИмяРасширения); ЮТест.ОжидаетЧто(Результат, Вариант.Описание).Равно(Вариант.Результат); КонецЦикла; @@ -65,7 +65,7 @@ РасширениеПоУмолчанию = "__тесты___"; Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.modules = ЮТОбщий.ЗначениеВМассиве("test", "тесты"); + Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("test", "тесты"); Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Простой кейс")); Варианты.Добавить(Новый Структура(Ключи, "TeST", Параметры, Истина, "Изменен регистр")); Варианты.Добавить(Новый Структура(Ключи, "тесты", Параметры, Истина, "Второй модуль")); @@ -76,48 +76,48 @@ Варианты.Добавить(Новый Структура(Ключи, "_module", Параметры, Истина, "Без фильтр по `_module`")); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.modules = ЮТОбщий.ЗначениеВМассиве("module"); - Параметры.filter.extensions = ЮТОбщий.ЗначениеВМассиве(РасширениеПоУмолчанию); + Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("module"); + Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве(РасширениеПоУмолчанию); Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по модулю и по расширению с пересечением")); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.modules = ЮТОбщий.ЗначениеВМассиве("module"); - Параметры.filter.extensions = ЮТОбщий.ЗначениеВМассиве("тесты"); + Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("module"); + Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("тесты"); Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Ложь, "Фильтр по модулю и по расширению без пересечения")); // Фильтрация по именам тестовых методов Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("module.method"); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method"); Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по имени теста")); Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Ложь, "Фильтр по имени теста, отсутствующему модулю")); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("module.method"); - Параметры.filter.extensions = ЮТОбщий.ЗначениеВМассиве(РасширениеПоУмолчанию); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method"); + Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве(РасширениеПоУмолчанию); Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по имени теста и по расширению с пересечением")); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("module.method"); - Параметры.filter.extensions = ЮТОбщий.ЗначениеВМассиве("test"); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method"); + Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("test"); Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Ложь, "Фильтр по имени теста и по расширению без пересечения")); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("module.method"); - Параметры.filter.modules = ЮТОбщий.ЗначениеВМассиве("module"); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method"); + Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("module"); Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по имени теста и по модулю с пересечением")); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("module.method"); - Параметры.filter.modules = ЮТОбщий.ЗначениеВМассиве("test"); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method"); + Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("test"); Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Ложь, "Фильтр по имени теста и по модулю без пересечения")); Для Каждого Вариант Из Варианты Цикл - ЮТФильтрация.УстановитьКонтекст(Вариант.Параметры); - ОписаниеМодуля = ЮТФабрика.ОписаниеМодуля(); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Вариант.Параметры); + ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля(); ОписаниеМодуля.Имя = Вариант.ИмяМодуля; ОписаниеМодуля.Расширение = РасширениеПоУмолчанию; - Результат = ЮТФильтрация.ЭтоПодходящийМодуль(ОписаниеМодуля); + Результат = ЮТФильтрацияСлужебный.ЭтоПодходящийМодуль(ОписаниеМодуля); ЮТест.ОжидаетЧто(Результат, Вариант.Описание + ". Имя модуля:" + Вариант.ИмяМодуля).Равно(Вариант.Результат); КонецЦикла; @@ -131,7 +131,7 @@ РасширениеПоУмолчанию = "__тесты___"; Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.modules = ЮТОбщий.ЗначениеВМассиве("test", "тесты"); + Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("test", "тесты"); Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Простой кейс")); Варианты.Добавить(Новый Структура(Ключи, "TeST", Параметры, Истина, "Изменен регистр")); Варианты.Добавить(Новый Структура(Ключи, "тесты", Параметры, Истина, "Второй модуль")); @@ -139,11 +139,11 @@ Для Каждого Вариант Из Варианты Цикл - ЮТФильтрация.УстановитьКонтекст(Вариант.Параметры); - ОписаниеМодуля = ЮТФабрика.ОписаниеМодуля(); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Вариант.Параметры); + ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля(); ОписаниеМодуля.Имя = Вариант.ИмяМодуля; ОписаниеМодуля.Расширение = РасширениеПоУмолчанию; - Результат = ЮТФильтрация.ЭтоПодходящийМодуль(ОписаниеМодуля); + Результат = ЮТФильтрацияСлужебный.ЭтоПодходящийМодуль(ОписаниеМодуля); ЮТест.ОжидаетЧто(Результат, Вариант.Описание + ". Имя модуля:" + Вариант.ИмяМодуля).Равно(Вариант.Результат); КонецЦикла; @@ -155,23 +155,23 @@ // 1 Контексты = ЮТФабрика.КонтекстыВызова(); - ОписаниеМодуля = ЮТФабрика.ОписаниеМодуля(); + ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля(); ОписаниеМодуля.Имя = "ТестовыйМодуль"; ОписаниеМодуля.Расширение = "ТестовоеРасширение"; ОписаниеМодуля.Сервер = Истина; ОписаниеМодуля.КлиентУправляемоеПриложение = Истина; Наборы = Новый Массив(); - Набор = ЮТФабрика.ОписаниеТестовогоНабора("Тесты"); - Тест = ЮТФабрика.ОписаниеТеста("Тест1", "Тест 1", ЮТОбщий.ЗначениеВМассиве(Контексты.Сервер, Контексты.КлиентУправляемоеПриложение)); + Набор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора("Тесты"); + Тест = ЮТФабрикаСлужебный.ОписаниеТеста("Тест1", "Тест 1", ЮТКоллекции.ЗначениеВМассиве(Контексты.Сервер, Контексты.КлиентУправляемоеПриложение)); Набор.Тесты.Добавить(Тест); Наборы.Добавить(Набор); Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("ТестовыйМодуль.Тест1"); - ЮТФильтрация.УстановитьКонтекст(Параметры); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1"); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры); - Результат = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); + Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); ЮТест.ОжидаетЧто(Результат, "Результат фильтрации") .Заполнено() .ИмеетТип("Массив"); @@ -188,10 +188,10 @@ // 2 Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("ТестовыйМодуль.Тест1.Сервер"); - ЮТФильтрация.УстановитьКонтекст(Параметры); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1.Сервер"); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры); - Результат = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); + Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); ТестРезультата = Результат[0].Тесты[0]; ЮТест.ОжидаетЧто(ТестРезультата, "Тест с указанием контекста") .Свойство("Имя").Равно(Тест.Имя) @@ -199,24 +199,23 @@ // 3 Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("ТестовыйМодуль.Тест1.ВызовСервера"); - ЮТФильтрация.УстановитьКонтекст(Параметры); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1.ВызовСервера"); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры); - Результат = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); + Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); ЮТест.ОжидаетЧто(Результат, "Тест с указаниме недоступного контекста") .ИмеетДлину(1); // 4 Параметры = ЮТФабрика.ПараметрыЗапуска(); - Параметры.filter.tests = ЮТОбщий.ЗначениеВМассиве("ТестовыйМодуль.Тест1.Сервер"); - Параметры.filter.contexts = ЮТОбщий.ЗначениеВМассиве(Контексты.КлиентУправляемоеПриложение); - ЮТФильтрация.УстановитьКонтекст(Параметры); + Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1.Сервер"); + Параметры.filter.contexts = ЮТКоллекции.ЗначениеВМассиве(Контексты.КлиентУправляемоеПриложение); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры); - Результат = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); + Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля); ЮТест.ОжидаетЧто(Результат, "Тест с указаниме контекста и фильтра контекстов") .ИмеетДлину(0); КонецПроцедуры #КонецОбласти - diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 77% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index e21a7d239..1abc0c707 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,9 +1,9 @@ - ОМ_ЮТФильтрация + ОМ_ЮТФильтрацияСлужебный ru - О м фильтрация + Фильтрация true true diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" similarity index 72% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index efab0269e..62c3449ec 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -20,8 +20,8 @@ Процедура ИсполняемыеСценарии() Экспорт - Контекст = ЮТКонтекст.ДанныеКонтекста(); - Если ЮТОбщий.ЗначениеСтруктуры(Контекст, ИмяРеквизитаПроверки(), Ложь) Тогда + Контекст = ЮТКонтекстСлужебный.ДанныеКонтекста(); + Если ЮТКоллекции.ЗначениеСтруктуры(Контекст, ИмяРеквизитаПроверки(), Ложь) Тогда ВызватьИсключение "Проверка чтения состава тестов"; КонецЕсли; @@ -29,10 +29,10 @@ .ДобавитьТест("ИсполняемыеСценарииМодуля") .ДобавитьТестовыйНабор("ЭтоТестовыйМодуль", "Параметризированный, 1,2") .ДобавитьТест("ЭтоТестовыйМодуль") - .СПараметрами("ОМ_ЮТЧитатель", Истина) + .СПараметрами("ОМ_ЮТЧитательСлужебный", Истина) .СПараметрами("ОМ_ЮТУтверждения", Истина) .СПараметрами("ОМ_Мокито", Истина) - .СПараметрами("ЮТЧитатель", Ложь) + .СПараметрами("ЮТЧитательСлужебный", Ложь) .ДобавитьТестовыйНабор("ЗагрузкаТестов") .ДобавитьКлиентскийТест("ЗагрузитьТесты") .ДобавитьТестовыйНабор("ИсполняемыеСценарииМодуляСОшибкойЧтения") @@ -45,16 +45,16 @@ ПараметрыЗапуска = ЮТФабрика.ПараметрыЗапуска(); ПараметрыЗапуска.filter.extensions = Неопределено; - ПараметрыЗапуска.filter.modules = ЮТОбщий.ЗначениеВМассиве("ОМ_ЮТЧитатель"); + ПараметрыЗапуска.filter.modules = ЮТКоллекции.ЗначениеВМассиве("ОМ_ЮТЧитательСлужебный"); - Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска); + Наборы = ЮТЧитательСлужебный.ЗагрузитьТесты(ПараметрыЗапуска); ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы") .ИмеетТип("Массив") .ИмеетДлину(1); НаборМодуля = Наборы[0]; - ЮТест.ОжидаетЧто(НаборМодуля, "Набор тестов ОМ_ЮТЧитатель") + ЮТест.ОжидаетЧто(НаборМодуля, "Набор тестов ОМ_ЮТЧитательСлужебный") .ИмеетТип("Структура") .Свойство("МетаданныеМодуля").ИмеетТип("Структура") .Свойство("НаборыТестов").ИмеетТип("Массив"); @@ -63,11 +63,11 @@ ЮТест.ОжидаетЧто(МетаданныеМодуля, "Метаданные модуля") .Заполнено() .ИмеетТип("Структура") - .Свойство("Имя").Равно("ОМ_ЮТЧитатель") + .Свойство("Имя").Равно("ОМ_ЮТЧитательСлужебный") .Свойство("КлиентОбычноеПриложение").Равно(Истина) .Свойство("КлиентУправляемоеПриложение").Равно(Истина) .Свойство("ВызовСервера").Равно(Ложь) - .Свойство("ПолноеИмя").Равно("tests.ОМ_ЮТЧитатель") + .Свойство("ПолноеИмя").Равно("tests.ОМ_ЮТЧитательСлужебный") .Свойство("Сервер").Равно(Ложь); НаборыТестов = НаборМодуля.НаборыТестов; @@ -78,8 +78,8 @@ ЮТест.ОжидаетЧто(НаборыТестов[0], "Набор тестов по умолчанию") .ИмеетТип("Структура") - .Свойство("Имя").Равно("ОМ_ЮТЧитатель") - .Свойство("Представление").Равно("ОМ_ЮТЧитатель") + .Свойство("Имя").Равно("ОМ_ЮТЧитательСлужебный") + .Свойство("Представление").Равно("ОМ_ЮТЧитательСлужебный") .Свойство("Ошибки").ИмеетТип("Массив").НеЗаполнено() .Свойство("Теги").ИмеетТип("Массив").НеЗаполнено() .Свойство("Тесты").ИмеетТип("Массив").ИмеетДлину(1); @@ -93,29 +93,29 @@ .Свойство("Имя").Равно("ИсполняемыеСценарииМодуля") .Свойство("Представление").НеЗаполнено() .Свойство("Теги").Равно(Новый Массив()) - .Свойство("КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("КлиентУправляемоеПриложение")); + .Свойство("КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве("КлиентУправляемоеПриложение")); ПараметрыЗапуска = ЮТФабрика.ПараметрыЗапуска(); - ПараметрыЗапуска.filter.extensions = ЮТОбщий.ЗначениеВМассиве("tests"); + ПараметрыЗапуска.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("tests"); - Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска); + Наборы = ЮТЧитательСлужебный.ЗагрузитьТесты(ПараметрыЗапуска); ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests") - .ИмеетДлину(29); + .ИмеетДлину(33); КонецПроцедуры Процедура ИсполняемыеСценарииМодуля() Экспорт МетаданныеМодуля = Новый Структура; - МетаданныеМодуля.Вставить("Имя", "ОМ_ЮТЧитатель"); + МетаданныеМодуля.Вставить("Имя", "ОМ_ЮТЧитательСлужебный"); МетаданныеМодуля.Вставить("КлиентУправляемоеПриложение", Истина); МетаданныеМодуля.Вставить("КлиентОбычноеПриложение", Истина); МетаданныеМодуля.Вставить("Клиент", Ложь); МетаданныеМодуля.Вставить("Сервер", Истина); МетаданныеМодуля.Вставить("ВызовСервера", Ложь); - ЮТФильтрация.УстановитьКонтекст(Новый Структура("filter", Новый Структура)); - ОписаниеМодуля = ЮТЧитатель.ИсполняемыеСценарииМодуля(МетаданныеМодуля); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Новый Структура("filter", Новый Структура)); + ОписаниеМодуля = ЮТЧитательСлужебный.ИсполняемыеСценарииМодуля(МетаданныеМодуля); ЮТест.ОжидаетЧто(ОписаниеМодуля, "ОписаниеМодуля") .ИмеетТип("Структура") @@ -132,61 +132,58 @@ НаборЗагрузкаТестов = Сценарии[2]; ЮТест.ОжидаетЧто(НаборПоУмолчанию, "Набор по умолчанию") - .Свойство("Имя").Равно("ОМ_ЮТЧитатель") - .Свойство("Представление").Равно("ОМ_ЮТЧитатель") + .Свойство("Имя").Равно("ОМ_ЮТЧитательСлужебный") + .Свойство("Представление").Равно("ОМ_ЮТЧитательСлужебный") .Свойство("Теги").ИмеетДлину(0) .Свойство("Тесты").ИмеетДлину(1) .Свойство("Тесты[0].Имя").Равно("ИсполняемыеСценарииМодуля") .Свойство("Тесты[0].Представление").НеЗаполнено() .Свойство("Тесты[0].Теги").ИмеетДлину(0) - .Свойство("Тесты[0].КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("Сервер", "КлиентУправляемоеПриложение")) + .Свойство("Тесты[0].КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве("Сервер", "КлиентУправляемоеПриложение")) ; ЮТест.ОжидаетЧто(НаборЗагрузкаТестов, "Набор 'ЗагрузкаТестов'") .Свойство("Имя").Равно("ЗагрузкаТестов") .Свойство("Тесты").ИмеетДлину(1) .Свойство("Тесты[0].Имя").Равно("ЗагрузитьТесты") - .Свойство("Тесты[0].КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("КлиентУправляемоеПриложение")) + .Свойство("Тесты[0].КонтекстВызова").Равно(ЮТКоллекции.ЗначениеВМассиве("КлиентУправляемоеПриложение")) ; ЮТест.ОжидаетЧто(НаборЭтоТестовыйМодуль, "Набор 'ЭтоТестовыйМодуль'") .Свойство("Имя").Равно("ЭтоТестовыйМодуль") .Свойство("Тесты").ИмеетДлину(4) .Свойство("Теги").ИмеетДлину(3) - ; + ; КонецПроцедуры Процедура ИсполняемыеСценарииМодуляСОшибкойЧтения() Экспорт - ОписаниеМодуля = ЮТФабрика.ОписаниеМодуля(); + ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля(); ОписаниеМодуля.Имя = "ОМ_ЮТЧитатель"; ОписаниеМодуля.ПолноеИмя = "tests.ОМ_ЮТЧитатель"; ОписаниеМодуля.Расширение = "tests"; - #Если Клиент Тогда - ОписаниеМодуля.КлиентУправляемоеПриложение = Истина; - ОписаниеМодуля.КлиентОбычноеПриложение = Истина; - #Иначе - ОписаниеМодуля.Сервер = Истина; - #КонецЕсли +#Если Клиент Тогда + ОписаниеМодуля.КлиентУправляемоеПриложение = Истина; + ОписаниеМодуля.КлиентОбычноеПриложение = Истина; +#Иначе + ОписаниеМодуля.Сервер = Истина; +#КонецЕсли - ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяРеквизитаПроверки(), Истина); + ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяРеквизитаПроверки(), Истина); - Результат = ЮТЧитатель.ИсполняемыеСценарииМодуля(ОписаниеМодуля); + Результат = ЮТЧитательСлужебный.ИсполняемыеСценарииМодуля(ОписаниеМодуля); ЮТест.ОжидаетЧто(Результат) .ИмеетТип("Структура") - .Свойство("НаборыТестов") - .ИмеетДлину(1) - .Свойство("НаборыТестов[0].Ошибки") - .ИмеетДлину(1) - .Свойство("НаборыТестов[0].Ошибки[0].ТипОшибки") - .Равно(ЮТФабрика.ТипыОшибок().ЧтенияТестов) + .Свойство("НаборыТестов").ИмеетДлину(1) + .Свойство("НаборыТестов[0].Ошибки").ИмеетДлину(1) + .Свойство("НаборыТестов[0].Ошибки[0].ТипОшибки").Равно(ЮТФабрикаСлужебный.ТипыОшибок().ЧтенияТестов) ; КонецПроцедуры Процедура ЭтоТестовыйМодуль(ИмяМодуля, ЭтоТестовый) Экспорт - ОписаниеМодуля = ЮТМетаданныеСервер.МетаданныеМодуля(ИмяМодуля); - ЮТест.ОжидаетЧто(ЮТЧитатель.ЭтоТестовыйМодуль(ОписаниеМодуля), "Проверка модуля " + ИмяМодуля) + ОписаниеМодуля = ЮТМетаданныеСлужебныйВызовСервера.МетаданныеМодуля(ИмяМодуля); + ЮТест.ОжидаетЧто(ЮТЧитательСлужебный.ЭтоТестовыйМодуль(ОписаниеМодуля), "Проверка модуля " + ИмяМодуля) .Равно(ЭтоТестовый); КонецПроцедуры diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" similarity index 86% rename from "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214.mdo" rename to "tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" index a64df8a18..5c0293bac 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214.mdo" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -1,6 +1,6 @@ - ОМ_ЮТЧитатель + ОМ_ЮТЧитательСлужебный ru Читатель diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl" index 205b96ba4..6e625f3f6 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -77,7 +77,7 @@ Процедура Пропустить() Экспорт - ЮТест.Пропустить(); + ЮТест.Пропустить("Тест пропущен"); ВызватьИсключение "Не отработал пропуск теста"; КонецПроцедуры diff --git "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242HTTP\320\241\320\265\321\200\320\262\320\270\321\201\320\227\320\260\320\277\321\200\320\276\321\201/Module.bsl" "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242HTTP\320\241\320\265\321\200\320\262\320\270\321\201\320\227\320\260\320\277\321\200\320\276\321\201/Module.bsl" index 0a1bd0726..d47a7acf9 100644 --- "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242HTTP\320\241\320\265\321\200\320\262\320\270\321\201\320\227\320\260\320\277\321\200\320\276\321\201/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242HTTP\320\241\320\265\321\200\320\262\320\270\321\201\320\227\320\260\320\277\321\200\320\276\321\201/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,8 +23,8 @@ ЮТТесты .ДобавитьТест("Конструктор") .ДобавитьТест("УстановитьТело") - ; - + ; + КонецПроцедуры Процедура Конструктор() Экспорт @@ -52,7 +52,7 @@ .Метод("ПолучитьТелоКакДвоичныеДанные").НеВыбрасываетИсключение() .Метод("ПолучитьТелоКакПоток").НеВыбрасываетИсключение() .Метод("ПолучитьТелоКакСтроку").НеВыбрасываетИсключение() - .Метод("ПолучитьТелоКакСтроку", ЮТОбщий.ЗначениеВМассиве(КодировкаТекста.UTF8)).НеВыбрасываетИсключение(); + .Метод("ПолучитьТелоКакСтроку", ЮТКоллекции.ЗначениеВМассиве(КодировкаТекста.UTF8)).НеВыбрасываетИсключение(); ЮТест.ОжидаетЧто(Запрос.ПолучитьТелоКакСтроку()).Равно(""); Тело = "Тело"; @@ -61,7 +61,7 @@ Описание = "Тело установлено из двоичных данных"; Запрос = ЮТест.Данные().HTTPСервисЗапрос() .УстановитьТелоКакДвоичныеДанные(ДвоичныеДанные); - + ЮТест.ОжидаетЧто(Запрос.ПолучитьТелоКакДвоичныеДанные(), Описание + ". Получение двоичных данных").Равно(ДвоичныеДанные); ЮТест.ОжидаетЧто(Запрос.ПолучитьТелоКакСтроку(), Описание + ". Получение строки").Равно(Тело); ЮТест.ОжидаетЧто(Запрос.ПолучитьТелоКакСтроку("UTF-8"), Описание + ". Получение строки UTF-8").Равно(Тело); @@ -84,4 +84,3 @@ КонецПроцедуры #КонецОбласти - diff --git "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/Module.bsl" "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/Module.bsl" new file mode 100644 index 000000000..34414c2fd --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/Module.bsl" @@ -0,0 +1,179 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .ДобавитьТест("Установить") + .ДобавитьТест("УстановитьРеквизиты") + .ДобавитьТест("Фикция") + .ДобавитьТест("ФикцияОбязательныхПолей") + .ДобавитьТест("ФикцияНезаполненных") + .ДобавитьТест("ДобавитьНовый") + .ДобавитьТест("ПерейтиКВладельцу") + ; + +КонецПроцедуры + +Процедура Установить() Экспорт + + Номер = ЮТест.Данные().СлучайнаяСтрока(9); + Сумма = ЮТест.Данные().СлучайноеЧисло(); + Покупатель = ЮТест.Данные().СоздатьЭлемент(Справочники.Контрагенты); + + Объект = НовыйКонструктор() + .Установить("Number", Номер) + .Установить("Сумма", Сумма) + .Установить("Покупатель", Покупатель) + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Number").Равно(Номер) + .Свойство("Сумма").Равно(Сумма) + .Свойство("Покупатель").Равно(Покупатель) + ; + +КонецПроцедуры + +Процедура УстановитьРеквизиты() Экспорт + + Номер = ЮТест.Данные().СлучайнаяСтрока(9); + Сумма = ЮТест.Данные().СлучайноеЧисло(); + Реквизиты = Новый Структура("Number, Сумма", Номер, Сумма); + + Объект = НовыйКонструктор() + .УстановитьРеквизиты(Реквизиты) + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Number").Равно(Номер) + .Свойство("Сумма").Равно(Сумма); + +КонецПроцедуры + +Процедура Фикция() Экспорт + + Объект = НовыйКонструктор() + .Фикция("Number") + .Фикция("Сумма") + .Фикция("Покупатель") + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Number").Заполнено() + .Свойство("Сумма").Заполнено() + .Свойство("Покупатель").Заполнено() + ; + +КонецПроцедуры + +Процедура ФикцияОбязательныхПолей() Экспорт + + Дата = ЮТест.Данные().СлучайнаяДата(); + + Объект = НовыйКонструктор() + .Установить("Date", Дата) + .ФикцияОбязательныхПолей() + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Number").Заполнено() + .Свойство("Date").Равно(Дата) + .Свойство("Сумма").Заполнено() + .Свойство("Покупатель").Заполнено() + .Свойство("Товары").Заполнено() + ; + +КонецПроцедуры + +Процедура ФикцияНезаполненных() Экспорт + + Дата = ЮТест.Данные().СлучайнаяДата(); + + Объект = НовыйКонструктор() + .Установить("Date", Дата) + .ФикцияНезаполненных() + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Number").Заполнено() + .Свойство("Date").Равно(Дата) + .Свойство("Сумма").Заполнено() + .Свойство("Покупатель").Заполнено() + .Свойство("Товары").Заполнено() + ; + +КонецПроцедуры + +Процедура ДобавитьНовый() Экспорт + + Объект = НовыйКонструктор() + .ДобавитьНовый("Товары") + .Фикция("Цена") + .Фикция("Количество") + .ПерейтиКВладельцу() + .ДобавитьНовый("Товары") + .Фикция("Цена") + .Фикция("Количество") + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Товары").ИмеетДлину(2) + .Свойство("Товары[0].Цена").Заполнено() + .Свойство("Товары[0].Сумма").НеЗаполнено(); + +КонецПроцедуры + +Процедура ПерейтиКВладельцу() Экспорт + + Объект = НовыйКонструктор() + .ДобавитьНовый("Товары") + .ПерейтиКВладельцу() + .Фикция("Сумма") + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Товары").ИмеетДлину(1) + .Свойство("Товары[0].Сумма").НеЗаполнено() + .Свойство("Сумма").Заполнено() + ; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция НовыйКонструктор() + + Тип = СериализаторXDTO.XMLТип(Тип("ДокументОбъект.Заказ")); + + Возврат ЮТест.Данные().КонструкторОбъектаXDTO(Тип.ИмяТипа, Тип.URIПространстваИмен); + +КонецФункции + +#КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236.mdo" "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236.mdo" new file mode 100644 index 000000000..663eab4e3 --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236.mdo" @@ -0,0 +1,5 @@ + + + Обр_ЮТКонструкторОбъектаXDTO_МО + true + diff --git "a/tests/src/CommonModules/\320\237\320\276\320\264\320\277\320\270\321\201\320\272\320\270\320\235\320\260\320\241\320\276\320\261\321\213\321\202\320\270\321\217/Module.bsl" "b/tests/src/CommonModules/\320\237\320\276\320\264\320\277\320\270\321\201\320\272\320\270\320\235\320\260\320\241\320\276\320\261\321\213\321\202\320\270\321\217/Module.bsl" index 6597ddbaa..5ab296940 100644 --- "a/tests/src/CommonModules/\320\237\320\276\320\264\320\277\320\270\321\201\320\272\320\270\320\235\320\260\320\241\320\276\320\261\321\213\321\202\320\270\321\217/Module.bsl" +++ "b/tests/src/CommonModules/\320\237\320\276\320\264\320\277\320\270\321\201\320\272\320\270\320\235\320\260\320\241\320\276\320\261\321\213\321\202\320\270\321\217/Module.bsl" @@ -1,3 +1,20 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// &Вместо("ПередЗаписьюДокумента") Процедура Расш1_ПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт @@ -7,7 +24,7 @@ // Отправляем данные на анализ ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(ПодпискиНаСобытия, "ПередЗаписьюДокумента", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(ПодпискиНаСобытия, "ПередЗаписьюДокумента", ПараметрыМетода, ПрерватьВыполнение); // Обрабатываем результат анализа Если НЕ ПрерватьВыполнение Тогда @@ -24,7 +41,7 @@ // Отправляем данные на анализ ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(ПодпискиНаСобытия, "ПередЗаписьюСправочника", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(ПодпискиНаСобытия, "ПередЗаписьюСправочника", ПараметрыМетода, ПрерватьВыполнение); // Обрабатываем результат анализа Если НЕ ПрерватьВыполнение Тогда diff --git "a/tests/src/CommonModules/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Module.bsl" "b/tests/src/CommonModules/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Module.bsl" index 7e24fe427..fba4de1bf 100644 --- "a/tests/src/CommonModules/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Module.bsl" +++ "b/tests/src/CommonModules/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ Процедура Расш1_ОпределитьТекущегоПользователя() Экспорт ПрерватьВыполнение = Ложь; - Результат = Мокито.АнализВызова(Пользователи, "ОпределитьТекущегоПользователя", Новый Массив, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(Пользователи, "ОпределитьТекущегоПользователя", Новый Массив, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(); diff --git "a/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" index 012fea530..8e2bcd7db 100644 --- "a/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" +++ "b/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" @@ -35,7 +35,7 @@ Функция ОписаниеТестовогоМодуля(ИмяМодуля = Неопределено) Экспорт Описание = Новый Структура(); - Описание.Вставить("МетаданныеМодуля", ЮТФабрика.ОписаниеМодуля()); + Описание.Вставить("МетаданныеМодуля", ЮТФабрикаСлужебный.ОписаниеМодуля()); Описание.Вставить("НаборыТестов", Новый Массив); Описание.Вставить("Ошибки", Новый Массив); Описание.Вставить("НастройкиВыполнения", Новый Структура); diff --git a/tests/src/Configuration/Configuration.mdo b/tests/src/Configuration/Configuration.mdo index c4a17479b..c233f203e 100644 --- a/tests/src/Configuration/Configuration.mdo +++ b/tests/src/Configuration/Configuration.mdo @@ -27,6 +27,7 @@ CommonModule.Интеграция CommonModule.Обр_ЮТHTTPСервисЗапрос CommonModule.Обр_ЮТRecordSet_МО + CommonModule.Обр_ЮТКонструкторОбъектаXDTO_МО CommonModule.ОМ_Мокито CommonModule.ОМ_МокитоОбучение CommonModule.ОМ_МокитоСлужебный @@ -35,25 +36,28 @@ CommonModule.ОМ_ЮТест CommonModule.ОМ_ЮТестПереопределяемый CommonModule.ОМ_ЮТЗапросы - CommonModule.ОМ_ЮТИсполнительКлиент - CommonModule.ОМ_ЮТИсполнительКлиентСервер + CommonModule.ОМ_ЮТИсполнительСлужебныйКлиент + CommonModule.ОМ_ЮТИсполнительСлужебныйКлиентСервер + CommonModule.ОМ_ЮТКоллекции CommonModule.ОМ_ЮТКонструкторТестовыхДанных CommonModule.ОМ_ЮТМетаданные - CommonModule.ОМ_ЮТОтчет - CommonModule.ОМ_ЮТОтчетAllure + CommonModule.ОМ_ЮТОтчетAllureСлужебный + CommonModule.ОМ_ЮТОтчетСлужебный CommonModule.ОМ_ЮТПодражатель_Банки CommonModule.ОМ_ЮТПодражатель_Компании CommonModule.ОМ_ЮТПодражатель_Люди - CommonModule.ОМ_ЮТПредикатыКлиентСервер - CommonModule.ОМ_ЮТСравнениеКлиентСервер + CommonModule.ОМ_ЮТПредикатыСлужебныйКлиентСервер + CommonModule.ОМ_ЮТРегистрацияОшибок + CommonModule.ОМ_ЮТСравнениеСлужебныйКлиентСервер + CommonModule.ОМ_ЮТСтроки CommonModule.ОМ_ЮТТестовыеДанные CommonModule.ОМ_ЮТТестовыеДанныеСлужебный CommonModule.ОМ_ЮТТесты CommonModule.ОМ_ЮТТипыДанныхСлужебный CommonModule.ОМ_ЮТУтверждения CommonModule.ОМ_ЮТУтвержденияИБ - CommonModule.ОМ_ЮТФильтрация - CommonModule.ОМ_ЮТЧитатель + CommonModule.ОМ_ЮТФильтрацияСлужебный + CommonModule.ОМ_ЮТЧитательСлужебный CommonModule.ПодпискиНаСобытия CommonModule.Пользователи CommonModule.ПомощникТестированияВызовСервера diff --git "a/tests/src/DataProcessors/\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/ObjectModule.bsl" "b/tests/src/DataProcessors/\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/ObjectModule.bsl" index 3336a3f0f..94aa58f90 100644 --- "a/tests/src/DataProcessors/\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/ObjectModule.bsl" +++ "b/tests/src/DataProcessors/\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/ObjectModule.bsl" @@ -1,3 +1,20 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// &Вместо("ЗаполнитьСписок") Процедура Расш1_ЗаполнитьСписок() Экспорт @@ -5,7 +22,7 @@ ПараметрыМетода = Новый Массив();; ПрерватьВыполнение = Ложь; - Мокито.АнализВызова(ЭтотОбъект, "ЗаполнитьСписок", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(ЭтотОбъект, "ЗаполнитьСписок", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(); diff --git "a/tests/src/Documents/\320\237\321\200\320\270\321\205\320\276\320\264\320\242\320\276\320\262\320\260\321\200\320\260/ObjectModule.bsl" "b/tests/src/Documents/\320\237\321\200\320\270\321\205\320\276\320\264\320\242\320\276\320\262\320\260\321\200\320\260/ObjectModule.bsl" index a8507e276..5db6d642a 100644 --- "a/tests/src/Documents/\320\237\321\200\320\270\321\205\320\276\320\264\320\242\320\276\320\262\320\260\321\200\320\260/ObjectModule.bsl" +++ "b/tests/src/Documents/\320\237\321\200\320\270\321\205\320\276\320\264\320\242\320\276\320\262\320\260\321\200\320\260/ObjectModule.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ ПараметрыМетода = Мокито.МассивПараметров(Отказ, Режим); ПрерватьВыполнение = Ложь; - Мокито.АнализВызова(ЭтотОбъект, "ОбработкаПроведения", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(ЭтотОбъект, "ОбработкаПроведения", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(Отказ, Режим); diff --git "a/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/ManagerModule.bsl" "b/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/ManagerModule.bsl" index 1377c3499..ca4460b4f 100644 --- "a/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/ManagerModule.bsl" +++ "b/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/ManagerModule.bsl" @@ -1,3 +1,20 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// &Вместо("ЗаполненоКорректно") Процедура Расш1_ЗаполненоКорректно(НаборЗаписей) Экспорт @@ -5,7 +22,7 @@ ПараметрыМетода = Мокито.МассивПараметров(НаборЗаписей); ПрерватьВыполнение = Ложь; - Мокито.АнализВызова(РегистрыСведений.ЦеныТоваров, "ЗаполненоКорректно", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(РегистрыСведений.ЦеныТоваров, "ЗаполненоКорректно", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(НаборЗаписей); diff --git "a/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/RecordSetModule.bsl" "b/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/RecordSetModule.bsl" index 1da418081..c4786acf4 100644 --- "a/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/RecordSetModule.bsl" +++ "b/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/RecordSetModule.bsl" @@ -1,3 +1,20 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//©///////////////////////////////////////////////////////////////////////////©// &Вместо("ПередЗаписью") Процедура Расш1_ПередЗаписью(Отказ, Замещение) @@ -5,7 +22,7 @@ ПараметрыМетода = Мокито.МассивПараметров(Отказ, Замещение); ПрерватьВыполнение = Ложь; - Мокито.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(Отказ, Замещение); @@ -19,11 +36,10 @@ ПараметрыМетода = Мокито.МассивПараметров(Отказ, ПроверяемыеРеквизиты); ПрерватьВыполнение = Ложь; - Мокито.АнализВызова(ЭтотОбъект, "ОбработкаПроверкиЗаполнения", ПараметрыМетода, ПрерватьВыполнение); + МокитоПерехват.АнализВызова(ЭтотОбъект, "ОбработкаПроверкиЗаполнения", ПараметрыМетода, ПрерватьВыполнение); Если НЕ ПрерватьВыполнение Тогда ПродолжитьВызов(Отказ, ПроверяемыеРеквизиты); КонецЕсли; КонецПроцедуры -