From f93816288237adcc447761903a84ef888c310f7d Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Sun, 16 Jul 2023 16:31:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BD=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20-=20=D0=9F=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D1=82=D1=8C=D0=A2=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BA=D0=BE=D0=98=D0=B7=D0=B1=D1=80=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=B8=20=D0=A2=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE?= =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC=20(#1113)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * новые настройки проведения документов - ПроверятьТолькоИзбранные - ТолькоПроводим --- spec/fixtures/smoke-include.json | 17 ++++++ tests/smoke/readme.md | 15 +++-- tests/smoke/smoke.example.json | 8 ++- .../Ext/ObjectModule.bsl" | 59 ++++++++++++++++++- 4 files changed, 92 insertions(+), 7 deletions(-) diff --git a/spec/fixtures/smoke-include.json b/spec/fixtures/smoke-include.json index e5929fa95..9831f8d27 100644 --- a/spec/fixtures/smoke-include.json +++ b/spec/fixtures/smoke-include.json @@ -90,5 +90,22 @@ "Отчеты1": false, "Обработки1": false, "ВнешниеИсточникиДанных1": false + }, + + "ПроведениеДокументов":{ + "Используется" : true, + "ТолькоПроводим" : false, + "КоличествоДокументов" : 3, + "ПроверятьТолькоИзбранные" : { + "Документы": [ + "*умент2*" + ] + }, + "Исключения" : [ + "Удалить*", + "_ДемоСписаниеТоваров*", + "*еНаОбработку*" + ] } + } diff --git a/tests/smoke/readme.md b/tests/smoke/readme.md index af65cd8c8..57f543d2b 100644 --- a/tests/smoke/readme.md +++ b/tests/smoke/readme.md @@ -41,7 +41,6 @@ - [Тесты печатных форм для БСП-конфигураций](#тесты-печатных-форм-для-бсп-конфигураций) - [Проверка чтения метаданных обычными пользователями, без полных прав](#проверка-чтения-метаданных-обычными-пользователями-без-полных-прав) - [Проверка режима управления блокировкой данных в транзакции по умолчанию](#проверка-режима-управления-блокировкой-данных-в-транзакции-по-умолчанию) - - [Тесты для проверки объектов метаданных на соответствие внутренним стандартам и стандартам 1С (https://its.1c.ru/db/v8std)](./smoke_tests_for_v8std.md) Существующая универсальная реализация дымовых тестов позволяет использовать базовые/«дымовые» проверки, для которых не требуется написание сложных тестов или перестройка схемы разработки конфигурации 1С. @@ -912,12 +911,14 @@ Выполняются следующие проверки: - документ перепроводится -- движения до и после проведения одинаковы, т.е. перепроведение документа не меняет движений +- и либо проверяются движения - движения до и после проведения одинаковы, т.е. перепроведение документа не меняет движений +- либо проверяется только факт проведения документа без ошибок, без доп.проверок Есть возможность настройки проверяемых документов с помощью json-файла настройки. - ключ настройки `ПроведениеДокументов` - вложенный ключ `Используется` типа Булево. Отвечает за включение\выключение теста + - вложенный ключ `ТолькоПроводим` типа Булево. Проверяется только успешность проведения документа, никаких других проверок не выполняется, в т.ч. нет проверки движений. - вложенный ключ `КоличествоДокументов`, отвечающий за количество отбираемых документов - вложенный массив с ключом `Исключения`, отвечающий за исключение конкретных документов по `имени документа`. - во этой коллекции возможен поиск 2х видов @@ -942,7 +943,7 @@ ] ``` в данном примере будут отобраны документы с датами > 17.12.2020 < 15.12.2021. На документ "ЗаявкаНаКассовыйРасход" дополнительно фильтр `Номер ПОДОБНО "000_-000005"`. - Допустимые операторы сравнения: + Допустимые операторы сравнения: * `lt: меньше чем` * `le: меньше или равно` * `eq: равно равно равно` @@ -964,6 +965,10 @@ - Пример настройки есть в файле [tests/smoke/smoke.example.json - строка настройки](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json#L122) + - Можно использовать фильтрацию только по избранным метаданным по ключу `ПроверятьТолькоИзбранные`. См. [Включение тестов по избранным метаданным](#включение-тестов-по-избранным-метаданным) + + Пример файла с опцией `ПроверятьТолькоИзбранные` - [spec\fixtures\smoke-include.json](/spec/fixtures/smoke-include.json) + ## Тесты печатных форм для БСП-конфигураций @@ -1003,7 +1008,7 @@ - в обоих настройках возможен поиск 2х видов - возможен поиск по полному наименованию - `СчетФактура` - возможен поиск по шаблону со звездочкой - `Счет*` или `*Счет` или `*Счет*` или `Счет*Реестр` - - вложенный массив с ключом `ПроверятьТолькоЭтиОбъекты` позволяет ограничить роли для проверки, например, если задать такой массив + - вложенный массив с ключом `ПроверятьТолькоЭтиОбъекты` позволяет ограничить роли для проверки, например, если задать такой массив ```json "ПроверятьТолькоЭтиОбъекты": { "Справочник": [ @@ -1016,7 +1021,7 @@ то будут проверяться все справочники и документы начинающиеся с имени PTG, другие объекты метаданных не будут проверяться. Данная настройка не исключает настройку `ИсключенияПоИмениМетаданных`, т.е. если в списке справочников есть справочник, попадающий под исключение, он будет исключен из проверки. Данная настройка полезна в тех случаях, если у нас есть типовые объекты, которые нет смысла проверять, а все "свои" объекты (т.е. те, которые добавлены в типовую конфигурацию) имеют префикс. - `ДополнятьЗависимымиОбъектами` - Булевый флаг, означающий дополнительную проверку зависимых объектов метаданных. -Есть +Есть возможность настройки прав, которые являются администраторскими, с помощью файла конфигурации. - Пример настройки есть в файле [tests/smoke/smoke.example.json](https://github.com/vanessa-opensource/add/blob/develop/tests/smoke/smoke.example.json) diff --git a/tests/smoke/smoke.example.json b/tests/smoke/smoke.example.json index e1177f2e9..d1dcc4675 100644 --- a/tests/smoke/smoke.example.json +++ b/tests/smoke/smoke.example.json @@ -170,7 +170,13 @@ "ПроведениеДокументов":{ "Используется" : true, - "КоличествоДокументов" : 5, + "КоличествоДокументов" : 3, + "ТолькоПроводим" : false, + "ПроверятьТолькоИзбранные" : { + "Документы": [ + "*умент2*" + ] + }, "Исключения" : [ "Удалить*", "_ДемоСписаниеТоваров*", diff --git "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\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/\321\202\320\265\321\201\321\202\321\213_\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/Ext/ObjectModule.bsl" "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\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/\321\202\320\265\321\201\321\202\321\213_\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/Ext/ObjectModule.bsl" index e4e7fc7d2..6843a89de 100644 --- "a/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\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/\321\202\320\265\321\201\321\202\321\213_\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/Ext/ObjectModule.bsl" +++ "b/tests/smoke/\321\202\320\265\321\201\321\202\321\213_\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/\321\202\320\265\321\201\321\202\321\213_\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/Ext/ObjectModule.bsl" @@ -33,7 +33,19 @@ Для Каждого МетаОбъект Из Метаданные.Документы Цикл Если МетаОбъект.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить - И ПравоДоступа("Проведение", МетаОбъект) Тогда + И ПравоДоступа("Проведение", МетаОбъект) Тогда + + ИмяМетаданного = МетаОбъект.Имя; + + ФильтрМетаданных = НайтиКоллекциюФильтрМетаданныхИзНастроек("Документы", Настройки, "ПроверятьТолькоИзбранные"); + ЕстьОтборТолькоДляВключенияМетаданных = ЗначениеЗаполнено(ФильтрМетаданных ); + + Если ЕстьОтборТолькоДляВключенияМетаданных Тогда + ВключатьТест = НайтиИмяВКоллекции(ИмяМетаданного, ФильтрМетаданных, КонтекстЯдра); + Если Не ВключатьТест Тогда + Продолжить; + КонецЕсли; + КонецЕсли; ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект); КонецЕсли; @@ -59,6 +71,11 @@ ДокументОбъект = ДокументСсылка.ПолучитьОбъект(); + Если Настройки.ТолькоПроводим Тогда + ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); + Возврат; + КонецЕсли; + ДвиженияДо = ПолучитьДвиженияДокумента(ДокументОбъект, Истина); ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); @@ -131,12 +148,14 @@ Результат = Новый Структура; Результат.Вставить("Используется", Истина); + Результат.Вставить("ТолькоПроводим", Ложь); Результат.Вставить("КоличествоДокументов", 2); Результат.Вставить("ВыводитьИсключения", Ложь); Результат.Вставить("Исключения", Новый Массив); Результат.Вставить("Отбор", Новый Массив); Результат.Вставить("СравнениеДвиженийБезНомераСтроки", Истина); Результат.Вставить("ИсключенияИзПроверкиДвижений", Новый Структура()); + Результат.Вставить("ПроверятьТолькоИзбранные", Новый Массив); Возврат Результат; КонецФункции @@ -162,6 +181,44 @@ КонецФункции +Функция НайтиИмяВКоллекции(Знач ЧтоИщем, Знач КоллекцияДляПоиска, Знач КонтекстЯдра) + + Если Не ЗначениеЗаполнено(КоллекцияДляПоиска) Тогда + Возврат Ложь; + КонецЕсли; + + Возврат КонтекстЯдра.ЕстьВИсключаемойКоллекции(ЧтоИщем, КоллекцияДляПоиска); + +КонецФункции + +Функция НайтиКоллекциюФильтрМетаданныхИзНастроек(Знач КлючМетаданных, Знач Настройки, Знач ИмяОбщейКоллекции) + + // TODO использовать метод плагина Настройки.ЕстьНастройка + + ОбщаяКоллекция = ЗначениеИзСтруктуры(Настройки, ИмяОбщейКоллекции, Новый Структура); + + ЗначениеПоУмолчанию = Новый Массив; + + Если Не ЗначениеЗаполнено(ОбщаяКоллекция) Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + Возврат ЗначениеИзСтруктуры(ОбщаяКоллекция, КлючМетаданных, ЗначениеПоУмолчанию); + +КонецФункции + +Функция ЗначениеИзСтруктуры(Знач Структура, Знач ИмяНастройки, Знач ЗначениеПоУмолчанию) + + Результат = Неопределено; + + Если Не Структура.Свойство(ИмяНастройки, Результат) Или Не ЗначениеЗаполнено(Результат) Тогда + Результат = ЗначениеПоУмолчанию; + КонецЕсли; + + Возврат Результат; + +КонецФункции + #КонецОбласти Процедура ДобавитьТестыДляДокумента(НаборТестов, МетаОбъект)