diff --git a/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs b/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs index c634a6bd..67c99dfb 100644 --- a/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs +++ b/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs @@ -1,3 +1,3 @@ -addModuleStrictTypesAnnotation=true +addModuleStrictTypesAnnotation=false createModuleStructure=true eclipse.preferences.version=1 diff --git a/exts/yaxunit/.settings/templates/common_module.bsl b/exts/yaxunit/.settings/templates/common_module.bsl index daedcb22..6b1c2284 100644 --- a/exts/yaxunit/.settings/templates/common_module.bsl +++ b/exts/yaxunit/.settings/templates/common_module.bsl @@ -18,39 +18,6 @@ #Область СлужебныйПрограммныйИнтерфейс -Процедура ИсполняемыеСценарии() Экспорт - - ЮТТесты - .ДобавитьТест("ТестовыйМетод") - .ДобавитьТест("ТестовыйМетод").СПараметрами(1, 2, 3); - ; - -КонецПроцедуры - -#Область События - -Процедура ПередВсемиТестами() Экспорт - -КонецПроцедуры - -Процедура ПередКаждымТестом() Экспорт - -КонецПроцедуры - -Процедура ПослеКаждогоТеста() Экспорт - -КонецПроцедуры - -Процедура ПослеВсехТестов() Экспорт - -КонецПроцедуры - -#КонецОбласти - -Процедура ТестовыйМетод() Экспорт - -КонецПроцедуры - #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl new file mode 100644 index 00000000..aa56287b --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl @@ -0,0 +1,130 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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 + Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, Ложь); + +КонецФункции + +// Возвращает значение реквизита ссылки +// +// Параметры: +// Ссылка - ЛюбаяСсылка +// ИмяРеквизита - Строка - Имя получаемого реквизита, можно указать путь к вложенному реквизиту через точку +// +// Возвращаемое значение: +// Структура Из Произвольный - Значения реквизитов ссылки +Функция ЗначениеРеквизита(Ссылка, ИмяРеквизита) Экспорт + + //@skip-check constructor-function-return-section + Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИмяРеквизита, Истина); + +КонецФункции + +// Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям +// +// Параметры: +// ИмяТаблицы - Строка - Имя таблицы базы +// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить +// - см. ЮТФабрика.ВыражениеПредиката +// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат +// - Неопределено - Проверит, что таблица не пустая +// Возвращаемое значение: +// Булево - Таблица содержит записи +Функция ТаблицаСодержитЗаписи(ИмяТаблицы, Предикат = Неопределено) Экспорт + + ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат); + Возврат НЕ РезультатПустой(ОписаниеЗапроса); + +КонецФункции + +// Возвращает результат выполнения простого запроса. +// +// Параметры: +// ОписаниеЗапроса - см. ОписаниеЗапроса +// +// Возвращаемое значение: +// - ТаблицаЗначений - Результат запроса для сервера +// - Массив из Структура - Результат запроса для клиента +Функция РезультатЗапроса(ОписаниеЗапроса) Экспорт + +#Если Клиент Тогда + Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Истина); +#Иначе + Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Ложь); +#КонецЕсли + +КонецФункции + +// Определяет, есть ли в результате записи +// +// Параметры: +// ОписаниеЗапроса - см. ОписаниеЗапроса +// +// Возвращаемое значение: +// Булево - Результат пустой +Функция РезультатПустой(ОписаниеЗапроса) Экспорт + + Возврат ЮТЗапросыВызовСервера.РезультатПустой(ОписаниеЗапроса); + +КонецФункции + +// Описание простого запроса +// +// Возвращаемое значение: +// Структура - Описание запроса: +// * ИмяТаблицы - Строка - +// * ВыбираемыеПоля - Структура - Выражения выбираемых полей: +// * Ключ - Строка - Имя поля +// * Значение - Строка - выражение поля +// * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей +// * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И` +// * ЗначенияПараметров - Структура - Набор параметров запроса +Функция ОписаниеЗапроса() Экспорт + + Описание = Новый Структура(); + Описание.Вставить("ИмяТаблицы", ""); + Описание.Вставить("ВыбираемыеПоля", Новый Структура); + Описание.Вставить("КоличествоЗаписей", Неопределено); + Описание.Вставить("Условия", Новый Массив()); + Описание.Вставить("ЗначенияПараметров", Новый Структура()); + + //@skip-check constructor-function-return-section + Возврат Описание; + +КонецФункции + +#КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo b/exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo new file mode 100644 index 00000000..892f6961 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo @@ -0,0 +1,11 @@ + + + ЮТЗапросы + + ru + Запросы + + true + true + true + diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl new file mode 100644 index 00000000..931cadad --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl @@ -0,0 +1,162 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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 КАК Поле"); + КонецЕсли; + + Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС)); + Строки.Добавить("ИЗ " + ОписаниеЗапроса.ИмяТаблицы); + + Если ОписаниеЗапроса.Условия.Количество() Тогда + Строки.Добавить("ГДЕ ("); + Строки.Добавить(СтрСоединить(ОписаниеЗапроса.Условия, ") И (" + Символы.ПС)); + Строки.Добавить(")"); + КонецЕсли; + + Запрос = Новый Запрос(СтрСоединить(Строки, Символы.ПС)); + ЮТОбщий.ОбъединитьВСтруктуру(Запрос.Параметры, ОписаниеЗапроса.ЗначенияПараметров); + + Возврат Запрос; + +КонецФункции + +Функция ЗначенияИзЗапроса(Запрос, Реквизиты) + + Результат = Новый Структура(Реквизиты); + Выборка = Запрос.Выполнить().Выбрать(); + + Если Выборка.Следующий() Тогда + ЗаполнитьЗначенияСвойств(Результат, Выборка); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ЗначениеИзЗапроса(Запрос, Реквизит) + + Выборка = Запрос.Выполнить().Выбрать(); + + Если Выборка.Следующий() Тогда + Возврат Выборка[Реквизит]; + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + +#КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/ЮТЗапросыВызовСервера.mdo b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/ЮТЗапросыВызовСервера.mdo new file mode 100644 index 00000000..10fbfd8d --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/ЮТЗапросыВызовСервера.mdo @@ -0,0 +1,10 @@ + + + ЮТЗапросыВызовСервера + + ru + Запросы вызов сервера + + true + true + diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl new file mode 100644 index 00000000..9ee6615b --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl @@ -0,0 +1,96 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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); + Шаблон = ШаблонУсловия(ВыражениеПредиката.ВидСравнения, ВидыСравнения); + + Условие = СтрШаблон(Шаблон, ВыражениеПредиката.ИмяРеквизита, ИмяПараметра); + + КоллекцияУсловий.Добавить(Условие); + ЗначенияПараметров.Вставить(ИмяПараметра, ВыражениеПредиката.Значение); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ШаблонУсловия(Знач Выражение, ВыраженияПредикатов) + + Отрицание = ЮТПредикатыКлиентСервер.ЭтоВыраженияОтрицания(Выражение); + Если Отрицание Тогда + Выражение = ЮТПредикатыКлиентСервер.ВыраженияБезОтрицания(Выражение); + КонецЕсли; + + Если Выражение = ВыраженияПредикатов.Равно Тогда + Шаблон = "%1 = &%2"; + ИначеЕсли Выражение = ВыраженияПредикатов.Больше Тогда + Шаблон = "%1 > &%2"; + ИначеЕсли Выражение = ВыраженияПредикатов.БольшеРавно Тогда + Шаблон = "%1 >= &%2"; + ИначеЕсли Выражение = ВыраженияПредикатов.Меньше Тогда + Шаблон = "%1 < &%2"; + ИначеЕсли Выражение = ВыраженияПредикатов.МеньшеРавно Тогда + Шаблон = "%1 <= &%2"; + ИначеЕсли Выражение = ВыраженияПредикатов.ИмеетТип Тогда + Шаблон = "ТИПЗНАЧЕНИЯ(%1) = &%2"; + ИначеЕсли Выражение = ВыраженияПредикатов.Содержит Тогда + Шаблон = "%1 ПОДОБНО ""%%"" + &%2 + ""%%"""; + ИначеЕсли Выражение = ВыраженияПредикатов.Заполнено Тогда + // TODO Реализовать + ВызватьИсключение "Проверка заполненности пока не поддерживается"; + Иначе + ВызватьИсключение "Неподдерживаемое выражения предикатов " + Выражение; + КонецЕсли; + + Если Отрицание Тогда + Шаблон = СтрШаблон("НЕ (%1)", Шаблон); + КонецЕсли; + + Возврат Шаблон; + +КонецФункции + +#КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/ЮТЗапросыКлиентСервер.mdo b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/ЮТЗапросыКлиентСервер.mdo new file mode 100644 index 00000000..f0a71297 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/ЮТЗапросыКлиентСервер.mdo @@ -0,0 +1,11 @@ + + + ЮТЗапросыКлиентСервер + + ru + Запросы клиент сервер + + true + true + true + diff --git a/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl index 5a3c974c..e7140744 100644 --- a/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl @@ -45,11 +45,20 @@ // Параметр3 - Произвольный // Параметр4 - Произвольный // Параметр5 - Произвольный +// Параметр6 - Произвольный +// Параметр7 - Произвольный // // Возвращаемое значение: // ОбщийМодуль - Этот же модуль, для замыкания -Функция Добавить(Параметр1, Параметр2 = Неопределено, Параметр3 = Неопределено, Параметр4 = Неопределено, Параметр5 = Неопределено) Экспорт - +Функция Добавить(Параметр1, + Параметр2 = Неопределено, + Параметр3 = Неопределено, + Параметр4 = Неопределено, + Параметр5 = Неопределено, + Параметр6 = Неопределено, + Параметр7 = Неопределено) Экспорт +// BSLLS:MagicNumber-off +// BSLLS:NumberOfValuesInStructureConstructor-off Варианты = ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста()); Если Варианты.КоличествоРеквизитов = 1 Тогда @@ -62,8 +71,13 @@ Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4); ИначеЕсли Варианты.КоличествоРеквизитов = 5 Тогда Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5); + ИначеЕсли Варианты.КоличествоРеквизитов = 6 Тогда + Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6); + ИначеЕсли Варианты.КоличествоРеквизитов = 7 Тогда + Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7); КонецЕсли; - +// BSLLS:NumberOfValuesInStructureConstructor-on +// BSLLS:MagicNumber-on Варианты.Варианты.Добавить(Вариант); Возврат ЮТКонструкторВариантов; diff --git a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl index 2457a174..18a26edd 100644 --- a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl @@ -78,24 +78,24 @@ КонецФункции -Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель) Экспорт +Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель, ШаблонСвойства = "содержит свойство `%1`, которое") Экспорт Представления = Новый Массив(); Предикаты = НаборПредикатов(Предикаты); Для Каждого Выражение Из Предикаты Цикл - Представления.Добавить(ПредставлениеПредиката(Выражение)); + Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства)); КонецЦикла; Возврат СтрСоединить(Представления, Разделитель); КонецФункции -Функция ПредставлениеПредиката(ВыражениеПредиката) Экспорт +Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства) Экспорт Если ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда ПроверяемоеЗначение = ""; Иначе - ПроверяемоеЗначение = СтрШаблон("содержит свойство `%1`, которое ", ВыражениеПредиката.ИмяРеквизита); + ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " "; КонецЕсли; Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение); @@ -146,14 +146,26 @@ КонецФункции +Функция ЭтоВыраженияОтрицания(Выражение) Экспорт + + Возврат СтрНачинаетсяС(Выражение, "Не"); + +КонецФункции + +Функция ВыраженияБезОтрицания(Выражение) Экспорт + + Возврат Сред(Выражение, 3); + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции -Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения) +Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) Попытка - ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения); + ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения); Исключение ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке()); КонецПопытки; @@ -166,15 +178,19 @@ // Значение - Произвольный - Значение // Выражение - см. ЮТФабрика.ВыражениеПредиката // СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки -// БазовыеПараметрыПроверки - см. ПараметрыПроверки +// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке // ПараметрыСравнения - Неопределено // - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры -Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения) +Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) // BSLLS:CognitiveComplexity-off ВидыСравнения = ЮТПредикаты.Выражения(); + ПараметрыПроверки = ЮТСравнениеКлиентСервер.ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь); - ЗаполнитьЗначенияСвойств(ПараметрыПроверки, БазовыеПараметрыПроверки, "ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения"); + + ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки; + ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение; + ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения; Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда ПараметрыПроверки.Реверс = Истина; @@ -236,21 +252,21 @@ // // Параметры: // ОписаниеПроверки - Строка - Описание конкретной проверки -// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения +// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения // ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения // // Возвращаемое значение: // Структура - Параметры сообщений об ошибке: -// * ОписаниеПроверки - Строка - Описание конкретной проверки -// * ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения -// * ПредставлениеПроверяемогоЗначения - Неопределено - +// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки +// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения +// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка - Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено, - ОбъектПроверки = "проверяемое значение", + ТекстПроверяемоеЗначение = "проверяемое значение", ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт - Возврат Новый Структура("ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения", + Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения", ОписаниеПроверки, - ОбъектПроверки, + ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения); КонецФункции diff --git a/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl index 57411934..4dcf81b3 100644 --- a/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl @@ -94,12 +94,13 @@ // // Параметры: // ИнформацияОбОшибке - ИнформацияОбОшибке -Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке) Экспорт +// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки +Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке, ОписаниеПроверки = Неопределено) Экспорт СтруктураОшибки = ЮТКонтекст.КонтекстОшибки(); СтруктураОшибки.ОшибкаУтверждения = Ложь; - ВызватьОшибкуИсполнения(ИнформацияОбОшибке); + ВызватьОшибкуИсполнения(ИнформацияОбОшибке, ОписаниеПроверки); КонецПроцедуры @@ -107,16 +108,20 @@ // При этом сохраняет в контекст состояние, для дальнейшей обработки // // Параметры: +// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки // Сообщение - Строка // ПроверяемоеЗначение - Произвольный // ОжидаемоеЗначение - Произвольный // ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения -Процедура СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт +Процедура СгенерироватьОшибкуСравнения(ОписаниеПроверки, + Сообщение, + ПроверяемоеЗначение, + ОжидаемоеЗначение, + ОбъектПроверки = "проверяемое значение") Экспорт УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение); - Контекст = ЮТКонтекст.КонтекстПроверки(); - ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ПроверяемоеЗначение, Сообщение, ОбъектПроверки, Контекст); - ВызватьОшибкуПроверки(ТекстСообщения); + ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки); + ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки); КонецПроцедуры @@ -124,15 +129,15 @@ // При этом сохраняет в контекст состояние, для дальнейшей обработки // // Параметры: +// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки // Сообщение - Строка // ПроверяемоеЗначение - Произвольный // ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения -Процедура СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт +Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение); - Контекст = ЮТКонтекст.КонтекстПроверки(); - ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ПроверяемоеЗначение, Сообщение, ОбъектПроверки, Контекст); - ВызватьОшибкуПроверки(ТекстСообщения); + ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки); + ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки); КонецПроцедуры @@ -160,9 +165,10 @@ // Служебный метод, предварительно нужно самостоятельно настроить контекст (см. ЮТКонтекст.КонтекстОшибки) // Параметры: // ТекстСообщения - Строка -Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения) Экспорт +// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки +Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения, ОписаниеПроверки = Неопределено) Экспорт - СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений()); + СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений(), ОписаниеПроверки); ВызватьИсключение СообщениеОбОшибке; КонецПроцедуры @@ -307,20 +313,27 @@ КонецПроцедуры -Функция ФорматированныйТекстОшибкиУтверждения(Знач ПроверяемоеЗначение, ТекстОжидания, ОбъектПроверки, Контекст) Экспорт +// Форматированный текст ошибки утверждения. +// +// Параметры: +// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки +// ТекстОжидания - Строка - Описание ожидания +// ОбъектПроверки - Строка - Объект проверки +// +// Возвращаемое значение: +// Строка - Форматированный текст ошибки утверждения +Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт - ИмяСвойства = Контекст.ИмяСвойства; - - Если ЗначениеЗаполнено(ИмяСвойства) Тогда - ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ИмяСвойства); + Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда + ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства); Иначе ВставкаСвойство = ""; КонецЕсли; - Если ЗначениеЗаполнено(Контекст.ПредставлениеПроверяемогоЗначения) Тогда - ПредставлениеЗначения = Контекст.ПредставлениеПроверяемогоЗначения; + Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда + ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление; Иначе - ПредставлениеЗначения = СтрШаблон("`%1`", Контекст.ПроверяемоеЗначение); + ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение); КонецЕсли; // Заголовок сообщения @@ -336,6 +349,20 @@ КонецФункции +Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт + + Если ОписаниеПроверки <> Неопределено Тогда + ПрефиксОшибки = ЮТОбщий.ДобавитьСтроку(ОписаниеПроверки.ПрефиксОшибки, ОписаниеПроверки.ОписаниеПроверки, " "); + СообщениеОбОшибке = ЮТОбщий.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": "); + Иначе + СообщениеОбОшибке = ТекстОшибки; + КонецЕсли; + + СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2); + Возврат СообщениеОбОшибке; + +КонецФункции + Процедура ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, Ошибка) Экспорт РезультатПроверки.Успешно = Ложь; @@ -517,21 +544,17 @@ КонецПроцедуры -Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке) +Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке, ОписаниеПроверки) ТекстОшибки = ИнформациюОбОшибкеВСтроку(ИнформацияОбОшибке); - СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения()); + СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения(), ОписаниеПроверки); ВызватьИсключение СообщениеОбОшибке; КонецПроцедуры -Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки) +Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки, ОписаниеПроверки = Неопределено) Экспорт - Контекст = ЮТКонтекст.КонтекстПроверки(); - ПрефиксОшибки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, Контекст.ОписаниеПроверки, " "); - - СообщениеОбОшибке = ЮТОбщий.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": "); - СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2); + СообщениеОбОшибке = ДобавитьОписания(ТекстОшибки, ОписаниеПроверки); Возврат СтрШаблон("%1 <%2>", ПрефиксТипаОшибки, СообщениеОбОшибке); diff --git a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl index 87ffacf6..f7e130db 100644 --- a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl @@ -249,18 +249,33 @@ КонецПроцедуры +// Параметры проверки. +// +// Параметры: +// ВидСравнения - Строка +// ПроверяемоеЗначение - Произвольный +// ИмяСвойства - Строка +// ОжидаемоеЗначение - Произвольный +// Реверс - Булево +// +// Возвращаемое значение: +// Структура - Параметры проверки: +// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения +// * ПрефиксОшибки - Строка, Неопределено - +// * ОписаниеПроверки - Строка, Неопределено - +// * ВидСравнения - Строка +// * ОжидаемоеЗначение - Произвольный +// * Реверс - Булево +// * ТекстПроверяемоеЗначение - Строка Функция ПараметрыПроверки(ВидСравнения, ПроверяемоеЗначение, ИмяСвойства, ОжидаемоеЗначение, Реверс = Ложь) Экспорт - Параметры = Новый Структура(); + Параметры = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение); + Параметры.ОбъектПроверки.ИмяСвойства = ИмяСвойства; Параметры.Вставить("ВидСравнения", ВидСравнения); - Параметры.Вставить("ПроверяемоеЗначение", ПроверяемоеЗначение); Параметры.Вставить("ОжидаемоеЗначение", ОжидаемоеЗначение); - Параметры.Вставить("ИмяСвойства", ИмяСвойства); Параметры.Вставить("Реверс", Реверс); - Параметры.Вставить("ОбъектПроверки", Неопределено); - Параметры.Вставить("ОписаниеПроверки", Неопределено); - Параметры.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено); + Параметры.Вставить("ТекстПроверяемоеЗначение", "проверяемое значение"); Возврат Параметры; @@ -503,22 +518,11 @@ Процедура ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение) ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения); - Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение); - Если ЗначениеЗаполнено(ПараметрыПроверки.ПредставлениеПроверяемогоЗначения) Тогда - ПредставлениеЗначения = ПараметрыПроверки.ПредставлениеПроверяемогоЗначения; - Иначе - ПредставлениеЗначения = СтрШаблон("`%1`", ПараметрыПроверки.ПроверяемоеЗначение); - КонецЕсли; + ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение); + ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки); - ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПредставлениеЗначения, - Сообщение, - ПараметрыПроверки.ОбъектПроверки, - ПараметрыПроверки); - - ТекстОшибки = ЮТОбщий.ДобавитьСтроку(ПараметрыПроверки.ОписаниеПроверки, ТекстОшибки, ": "); - ТекстОшибки = ВРег(Лев(ТекстОшибки, 1)) + Сред(ТекстОшибки, 2); ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ФактическоеЗначение, @@ -535,10 +539,10 @@ // Произвольный Функция ПроверяемоеЗначение(ПараметрыПроверки) - Если ПараметрыПроверки.ИмяСвойства <> Неопределено Тогда - Значение = ЗначениеСвойства(ПараметрыПроверки.ПроверяемоеЗначение, ПараметрыПроверки.ИмяСвойства); + Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда + Значение = ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства); Иначе - Значение = ПараметрыПроверки.ПроверяемоеЗначение; + Значение = ПараметрыПроверки.ОбъектПроверки.Значение; КонецЕсли; Возврат Значение; diff --git a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl index bce8b716..001244d8 100644 --- a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl @@ -39,10 +39,14 @@ // Функция Что(Знач ПроверяемоеЗначение, Знач Сообщение = "") Экспорт - Контекст = ИнициализироватьКонтекстУтверждения(); - Контекст.ПроверяемоеЗначение = ПроверяемоеЗначение; + Контекст = НовыйКонтекстУтверждения(ПроверяемоеЗначение); + + Контекст.ОбъектПроверки.Значение = ПроверяемоеЗначение; Контекст.ПрефиксОшибки = Сообщение; + ЮТКонтекст.УстановитьКонтекстУтверждений(Контекст); + ЮТКонтекст.УстановитьКонтекстОшибки(); + Возврат ЮТУтверждения; КонецФункции @@ -57,8 +61,10 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Метод(Знач ИмяМетода, Знач ПараметрыМетода = Неопределено) Экспорт - ПроверитьТипЗначения(ИмяМетода, "Строка", "имени метода", Истина); - ПроверитьТипЗначения(ПараметрыМетода, "Массив", "параметров метода", Истина); + Контекст = Контекст(); + + ПроверитьТипЗначения(Контекст, ИмяМетода, "Строка", "имени метода", Истина); + ПроверитьТипЗначения(Контекст, ПараметрыМетода, "Массив", "параметров метода", Истина); Контекст = Контекст(); Контекст.ИмяМетода = ИмяМетода; @@ -80,7 +86,7 @@ Контекст = Контекст(); Если НЕ ЗначениеЗаполнено(Контекст.ИмяМетода) Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения("Перед установкой параметров нужно указать метод"); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения("Перед установкой параметров нужно указать метод", Контекст); КонецЕсли; Если Контекст.ПараметрыМетода = Неопределено Тогда @@ -102,7 +108,7 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ИмеющееПредставление(Представление) Экспорт - Контекст().ПредставлениеПроверяемогоЗначения = Представление; + Контекст().ОбъектПроверки.Представление = Представление; Возврат ЮТУтверждения; КонецФункции @@ -121,13 +127,13 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Свойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); Контекст = Контекст(); - Контекст.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + Контекст.ОбъектПроверки.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке - Путь = НормализованныйПутьКСвойству(Контекст.ПроверяемоеЗначение, ИмяСвойства, Истина); + Путь = НормализованныйПутьКСвойству(Контекст.ОбъектПроверки.Значение, ИмяСвойства, Истина); - Контекст.ИмяСвойства = ИмяСвойства; + Контекст.ОбъектПроверки.ИмяСвойства = ИмяСвойства; Контекст.НормализованныйПутьКСвойству = Путь; Возврат ЮТУтверждения; @@ -146,12 +152,12 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); Контекст = Контекст(); - Контекст.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + Контекст.ОбъектПроверки.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке - Если ЗначениеСодержитСвойство(Контекст.ПроверяемоеЗначение, ИмяСвойства) Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства); + Если ЗначениеСодержитСвойство(Контекст.ОбъектПроверки.Значение, ИмяСвойства) Тогда + СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства); КонецЕсли; Возврат ЮТУтверждения; @@ -182,7 +188,7 @@ Функция Объект() Экспорт Контекст = Контекст(); - Контекст.ИмяСвойства = Неопределено; + Контекст.ОбъектПроверки.ИмяСвойства = Неопределено; Возврат ЮТУтверждения; @@ -199,8 +205,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетСвойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); НормализованныйПутьКСвойству(ПроверяемоеЗначение, ИмяСвойства, Истина); Возврат ЮТУтверждения; @@ -219,11 +226,12 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеИмеетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Если ЗначениеСодержитСвойство(ПроверяемоеЗначение, ИмяСвойства) Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства); + СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства); КонецЕсли; Возврат ЮТУтверждения; @@ -240,8 +248,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетСвойстваРавные(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ОбъектыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение); Возврат ЮТУтверждения; @@ -258,8 +267,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоИстина(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Истина, Ложь, "является истиной"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Истина, Ложь, "является истиной"); Возврат ЮТУтверждения; КонецФункции @@ -274,8 +284,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоНеИстина(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Истина, Истина, "является истиной"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Истина, Истина, "является истиной"); Возврат ЮТУтверждения; КонецФункции @@ -290,8 +301,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Ложь, Ложь, "является ложью"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Ложь, Ложь, "является ложью"); Возврат ЮТУтверждения; КонецФункции @@ -306,8 +318,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоНеЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Ложь, Истина, "является ложью"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Ложь, Истина, "является ложью"); Возврат ЮТУтверждения; КонецФункции @@ -325,8 +338,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Равно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(ОжидаемоеЗначение, Ложь, СтрШаблон("равно `%1`", ОжидаемоеЗначение)); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, ОжидаемоеЗначение, Ложь, СтрШаблон("равно `%1`", ОжидаемоеЗначение)); Возврат ЮТУтверждения; КонецФункции @@ -344,8 +358,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(ОжидаемоеЗначение, Истина, СтрШаблон("равно `%1`", ОжидаемоеЗначение)); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, ОжидаемоеЗначение, Истина, СтрШаблон("равно `%1`", ОжидаемоеЗначение)); Возврат ЮТУтверждения; КонецФункции @@ -360,16 +375,17 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Больше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ПроверяемоеЗначение > ОжидаемоеЗначение; Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Не Результат Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("больше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение); + СгенерироватьОшибкуСравнения(СтрШаблон("больше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение); КонецЕсли; Возврат ЮТУтверждения; @@ -386,16 +402,17 @@ // ОбщийМодуль - Этот модуль для замыкания Функция БольшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ПроверяемоеЗначение >= ОжидаемоеЗначение; Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Не Результат Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("больше или равно `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение); + СгенерироватьОшибкуСравнения(СтрШаблон("больше или равно `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение); КонецЕсли; Возврат ЮТУтверждения; @@ -412,16 +429,17 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Меньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ПроверяемоеЗначение < ОжидаемоеЗначение; Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Не Результат Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("меньше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение); + СгенерироватьОшибкуСравнения(СтрШаблон("меньше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение); КонецЕсли; Возврат ЮТУтверждения; @@ -438,17 +456,18 @@ // ОбщийМодуль - Этот модуль для замыкания Функция МеньшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ПроверяемоеЗначение <= ОжидаемоеЗначение; Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Не Результат Тогда Сообщение = СтрШаблон("меньше или равно `%1`", ОжидаемоеЗначение); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение); КонецЕсли; Возврат ЮТУтверждения; @@ -464,8 +483,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Заполнено(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьЗаполненность(Ложь); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьЗаполненность(Контекст, Ложь); Возврат ЮТУтверждения; КонецФункции @@ -479,8 +499,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеЗаполнено(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьЗаполненность(Истина); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьЗаполненность(Контекст, Истина); Возврат ЮТУтверждения; КонецФункции @@ -494,8 +515,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Существует(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьСуществование(Ложь); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьСуществование(Контекст, Ложь); Возврат ЮТУтверждения; КонецФункции @@ -509,8 +531,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеСуществует(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьСуществование(Истина); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьСуществование(Контекст, Истина); Возврат ЮТУтверждения; КонецФункции @@ -524,8 +547,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Неопределено, Ложь, "является неопределено"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Неопределено, Ложь, "является неопределено"); Возврат ЮТУтверждения; КонецФункции @@ -539,8 +563,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоНеНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Неопределено, Истина, "является неопределено"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Неопределено, Истина, "является неопределено"); Возврат ЮТУтверждения; КонецФункции @@ -554,8 +579,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоNull(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Null, Ложь, "является null"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Null, Ложь, "является null"); Возврат ЮТУтверждения; КонецФункции @@ -569,8 +595,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЭтоНеNull(Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - СравнитьЗначения(Null, Истина, "является null"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + СравнитьЗначения(Контекст, Null, Истина, "является null"); Возврат ЮТУтверждения; КонецФункции @@ -585,8 +612,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьТипПараметра(ОжидаемоеЗначение, Ложь); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьТипПараметра(Контекст, ОжидаемоеЗначение, Ложь); Возврат ЮТУтверждения; КонецФункции @@ -601,8 +629,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьТипПараметра(ОжидаемоеЗначение, Истина); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьТипПараметра(Контекст, ОжидаемоеЗначение, Истина); Возврат ЮТУтверждения; КонецФункции @@ -630,8 +659,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция Содержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьСодержание(ОжидаемоеЗначение, Ложь); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Ложь); Возврат ЮТУтверждения; КонецФункции @@ -659,8 +689,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеСодержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьСодержание(ОжидаемоеЗначение, Истина); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Истина); Возврат ЮТУтверждения; КонецФункции @@ -686,8 +717,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьДлину(ОжидаемоеЗначение, Ложь); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьДлину(Контекст, ОжидаемоеЗначение, Ложь); Возврат ЮТУтверждения; КонецФункции @@ -713,10 +745,11 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетДлинуБольше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьТипЗначения(ОжидаемоеЗначение, "Число"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число"); - ФактическаяДлина = ДлинаПроверяемогоЗначения(); + ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст); Результат = ФактическаяДлина > ОжидаемоеЗначение; Сообщение = СтрШаблон("имеет длину (размер) больше `%1`", ОжидаемоеЗначение); @@ -746,10 +779,11 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ИмеетДлинуМеньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьТипЗначения(ОжидаемоеЗначение, "Число"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число"); - ФактическаяДлина = ДлинаПроверяемогоЗначения(); + ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст); Результат = ФактическаяДлина < ОжидаемоеЗначение; Сообщение = СтрШаблон("имеет длину (размер) меньше `%1`", ОжидаемоеЗначение); @@ -779,8 +813,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьДлину(ОжидаемоеЗначение, Истина); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьДлину(Контекст, ОжидаемоеЗначение, Истина); Возврат ЮТУтверждения; КонецФункции @@ -795,26 +830,26 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ВыбрасываетИсключение(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); Попытка - Контекст = Контекст(); - Модуль = ПроверяемоеЗначение(); + Модуль = ПроверяемоеЗначение(Контекст); Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Не Результат.ИсключениеВозникло Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` вызовет исключение `%2`, но это не так.", Контекст.ИмяМетода, ОжидаемоеЗначение); ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки); + ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); ИначеЕсли СтрНайти(Результат.ТекстИсключения, ОжидаемоеЗначение) = 0 Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` вызовет исключение `%2`, но получили `%3`.", Контекст.ИмяМетода, ОжидаемоеЗначение, Результат.ТекстИсключения); ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки); + ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); Иначе Возврат ЮТУтверждения; КонецЕсли; @@ -832,13 +867,13 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НеВыбрасываетИсключение(Знач ОжидаемоеЗначение = Неопределено, Знач ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); Попытка - Контекст = Контекст(); - Модуль = ПроверяемоеЗначение(); + Модуль = ПроверяемоеЗначение(Контекст); Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода) Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Результат.ИсключениеВозникло Тогда @@ -846,10 +881,10 @@ Если НЕ ЗначениеЗаполнено(ОжидаемоеЗначение) Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` не вызовет исключение, но это не так.", Контекст.ИмяМетода); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки); + ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); ИначеЕсли СтрНайти(Результат.ТекстИсключения, ОжидаемоеЗначение) <> 0 Тогда ТекстОшибки = СтрШаблон("ожидали, что метод `%1` не вызовет исключение `%2`, но это не так.", Контекст.ИмяМетода, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки); + ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст); КонецЕсли; КонецЕсли; @@ -869,17 +904,18 @@ // ОбщийМодуль - Этот модуль для замыкания Функция НачинаетсяС(СтрокаПоиска, ОписаниеПроверки = Неопределено) Экспорт - ПроверяемоеЗначение = ПроверяемоеЗначение(); - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьТипЗначения(ПроверяемоеЗначение, "Строка", "проверяемого значения"); - ПроверитьТипЗначения(СтрокаПоиска, "Строка", "ожидаемого значения"); - ПроверитьЗаполненностьЗначения(СтрокаПоиска, "ожидаемое значение"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); + ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения"); + ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения"); + ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение"); Результат = СтрНачинаетсяС(ПроверяемоеЗначение, СтрокаПоиска); Если НЕ Результат Тогда Сообщение = СтрШаблон("начинается с `%1`", СтрокаПоиска); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска); КонецЕсли; Возврат ЮТУтверждения; @@ -898,17 +934,18 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЗаканчиваетсяНа(СтрокаПоиска, ОписаниеПроверки = Неопределено) Экспорт - ПроверяемоеЗначение = ПроверяемоеЗначение(); - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьТипЗначения(ПроверяемоеЗначение, "Строка", "проверяемого значения"); - ПроверитьТипЗначения(СтрокаПоиска, "Строка", "ожидаемого значения"); - ПроверитьЗаполненностьЗначения(СтрокаПоиска, "ожидаемое значение"); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); + ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения"); + ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения"); + ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение"); Результат = СтрЗаканчиваетсяНа(ПроверяемоеЗначение, СтрокаПоиска); Если НЕ Результат Тогда Сообщение = СтрШаблон("заканчивается на `%1`", СтрокаПоиска); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска); КонецЕсли; Возврат ЮТУтверждения; @@ -928,8 +965,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция МеждуВключаяГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Истина, Истина); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Истина, Истина); Возврат ЮТУтверждения; КонецФункции @@ -947,8 +985,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция МеждуИсключаяГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Ложь, Ложь); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Ложь, Ложь); Возврат ЮТУтверждения; КонецФункции @@ -966,8 +1005,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция МеждуВключаяНачалоГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Истина, Ложь); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Истина, Ложь); Возврат ЮТУтверждения; КонецФункции @@ -985,8 +1025,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция МеждуВключаяОкончаниеГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Ложь, Истина); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Ложь, Истина); Возврат ЮТУтверждения; КонецФункции @@ -1001,15 +1042,16 @@ // ОбщийМодуль - Этот модуль для замыкания Функция КаждыйЭлементСодержитСвойство(ИмяСвойства, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ОбъектПроверки = "каждый элемент проверяемого значения"; Для Каждого Элемент Из ПроверяемоеЗначение Цикл Если НЕ ЗначениеСодержитСвойство(Элемент, ИмяСвойства) Тогда Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки); КонецЕсли; КонецЦикла; @@ -1030,8 +1072,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция КаждыйЭлементСодержитСвойствоСоЗначением(ИмяСвойства, ОжидаемоеЗначение, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ОбъектПроверки = "каждый элемент проверяемого значения"; ОписаниеОжидания = Новый Структура(ИмяСвойства, ОжидаемоеЗначение); @@ -1040,14 +1083,14 @@ Путь = НормализованныйПутьКСвойству(Элемент, ИмяСвойства, Ложь); Если Путь = Неопределено Тогда Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); КонецЕсли; ЗначениеСвойства = ЗначениеСвойства(Элемент, Путь); Если НЕ ЗначенияРавны(ЗначениеСвойства, ОжидаемоеЗначение) Тогда Сообщение = СтрШаблон("содержит свойство `%1`, которое равно `%2`", ИмяСвойства, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); КонецЕсли; КонецЦикла; @@ -1066,8 +1109,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЛюбойЭлементСодержитСвойство(ИмяСвойства, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ОбъектПроверки = "хоть один элемент проверяемого значения"; Найден = Ложь; @@ -1082,7 +1126,7 @@ Если НЕ Найден Тогда Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки); КонецЕсли; Возврат ЮТУтверждения; @@ -1101,8 +1145,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЛюбойЭлементСодержитСвойствоСоЗначением(ИмяСвойства, ОжидаемоеЗначение, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ОбъектПроверки = "хоть один элемент проверяемого значения"; НайденоСвойство = Ложь; @@ -1127,10 +1172,10 @@ ОписаниеОжидания = Новый Структура(ИмяСвойства, ОжидаемоеЗначение); Если НЕ НайденоСвойство Тогда Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); ИначеЕсли НЕ НайденоЗначение Тогда Сообщение = СтрШаблон("содержит свойство `%1`, которое равно `%2`", ИмяСвойства, ОжидаемоеЗначение); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки); КонецЕсли; Возврат ЮТУтверждения; @@ -1150,15 +1195,16 @@ // ОбщийМодуль - Этот модуль для замыкания Функция СоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки); РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(ПроверяемоеЗначение, Предикат, ПараметрыСообщенийОбОшибке); Если НЕ РезультатПроверки.Успешно Тогда - ОбработатьРезультатПроверки(РезультатПроверки); + ОбработатьРезультатПроверки(Контекст, РезультатПроверки); КонецЕсли; Возврат ЮТУтверждения; @@ -1179,8 +1225,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция КаждыйЭлементСоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки, "каждый элемент проверяемого значения"); @@ -1188,7 +1235,7 @@ РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке); Если НЕ РезультатПроверки.Успешно Тогда - ОбработатьРезультатПроверки(РезультатПроверки); + ОбработатьРезультатПроверки(Контекст, РезультатПроверки); КонецЕсли; КонецЦикла; @@ -1211,8 +1258,9 @@ // ОбщийМодуль - Этот модуль для замыкания Функция ЛюбойЭлементСоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт - УстановитьОписаниеПроверки(ОписаниеПроверки); - ПроверяемоеЗначение = ПроверяемоеЗначение(); + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки); @@ -1230,7 +1278,7 @@ Если НЕ Успешно Тогда Сообщение = ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, " и "); - ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, "один из элементов проверяемого значения"); + СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, "один из элементов проверяемого значения"); КонецЕсли; Возврат ЮТУтверждения; @@ -1247,45 +1295,11 @@ // Используется для принудительного сброса контекста утверждения Процедура СброситьКонтекст() Экспорт - ИнициализироватьКонтекстУтверждения(); + ЮТКонтекст.УстановитьКонтекстУтверждений(Неопределено); + ЮТКонтекст.УстановитьКонтекстОшибки(); КонецПроцедуры -// Инициализирует контекст утверждений -// -// Возвращаемое значение: -// Структура - контекст утверждений: -// * ПроверяемоеЗначение - Произвольный -// - Неопределено -// * ПредставлениеПроверяемогоЗначения - Неопределено -// - Строка -// * ПрефиксОшибки - Строка -// * ИмяМетода - Строка -// * ИмяСвойства - Строка -// - Неопределено -// * НормализованныйПутьКСвойству - Неопределено - Не указано свойство -// - Массив из Строка, Число -// * ПараметрыМетода - Неопределено - Не установлены -// - Массив из Произвольный -// * ОписаниеПроверки - Строка -// - Неопределено -Функция НовыйКонтекстУтверждения() Экспорт - - Контекст = Новый Структура; - - Контекст.Вставить("ПроверяемоеЗначение", Неопределено); - Контекст.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено); - Контекст.Вставить("ПрефиксОшибки", ""); - Контекст.Вставить("ИмяМетода", ""); - Контекст.Вставить("ИмяСвойства", Неопределено); - Контекст.Вставить("НормализованныйПутьКСвойству", Неопределено); - Контекст.Вставить("ПараметрыМетода", Неопределено); - Контекст.Вставить("ОписаниеПроверки", Неопределено); - - Возврат Контекст; - -КонецФункции - // Обработчик события "ПередКаждымТестом" // // Параметры: @@ -1302,39 +1316,50 @@ #Область Контекст -Функция ИнициализироватьКонтекстУтверждения() +// Контекст. +// +// Возвращаемое значение: +// см. НовыйКонтекстУтверждения +Функция Контекст() Экспорт - Контекст = НовыйКонтекстУтверждения(); + //@skip-check constructor-function-return-section + Возврат ЮТКонтекст.КонтекстПроверки(); - ЮТКонтекст.УстановитьКонтекстУтверждений(Контекст); - ЮТКонтекст.УстановитьКонтекстОшибки(); +КонецФункции + +// Инициализирует контекст утверждений +// +// Параметры: +// ПроверяемоеЗначение - Произвольный - Проверяемое значение +// +// Возвращаемое значение: +// Структура - контекст утверждений: +// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения +// * ИмяМетода - Строка +// * НормализованныйПутьКСвойству - Неопределено - Не указано свойство +// - Массив из Строка, Число +// * ПараметрыМетода - Неопределено - Не установлены +// - Массив из Произвольный +Функция НовыйКонтекстУтверждения(ПроверяемоеЗначение) + + Контекст = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение); + + Контекст.Вставить("ИмяМетода", ""); + Контекст.Вставить("НормализованныйПутьКСвойству", Неопределено); + Контекст.Вставить("ПараметрыМетода", Неопределено); Возврат Контекст; КонецФункции -Функция Контекст() Экспорт - - КонтекстУтверждения = ЮТКонтекст.КонтекстПроверки(); - - Если КонтекстУтверждения = Неопределено Тогда - КонтекстУтверждения = ИнициализироватьКонтекстУтверждения(); - КонецЕсли; - - Возврат КонтекстУтверждения; - -КонецФункции - #КонецОбласти -Функция ПроверяемоеЗначение() +Функция ПроверяемоеЗначение(Контекст) - Контекст = Контекст(); - - Если Контекст.ИмяСвойства <> Неопределено Тогда - Значение = ЗначениеСвойства(Контекст.ПроверяемоеЗначение, Контекст.НормализованныйПутьКСвойству); + Если Контекст.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда + Значение = ЗначениеСвойства(Контекст.ОбъектПроверки.Значение, Контекст.НормализованныйПутьКСвойству); Иначе - Значение = Контекст.ПроверяемоеЗначение; + Значение = Контекст.ОбъектПроверки.Значение; КонецЕсли; Возврат Значение; @@ -1442,7 +1467,7 @@ Значение = Значение[Часть]; ИначеЕсли ФиксироватьОшибку Тогда ПутьСвойства = СтрСоединить(ПройденныйПуть, "."); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("содержит свойство `%1`", ПутьСвойства), Значение, Цепочка); + СгенерироватьОшибкуСравнения(СтрШаблон("содержит свойство `%1`", ПутьСвойства), Значение, Цепочка); Иначе Возврат Неопределено; КонецЕсли; @@ -1596,14 +1621,14 @@ #Область ПроверкаТипов -Процедура ПроверитьТипПараметра(Знач ОжидаемоеЗначение, Реверс = Ложь) +Процедура ПроверитьТипПараметра(Контекст, Знач ОжидаемоеЗначение, Реверс = Ложь) Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); - ПроверитьТипЗначения(ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); + ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")); Результат = ТипЗначенияСоответствует(ПроверяемоеЗначение, ОжидаемоеЗначение); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Сообщение = СтрШаблон("имеет тип `%1`", ОжидаемоеЗначение); @@ -1611,7 +1636,8 @@ КонецПроцедуры -Процедура ПроверитьТипЗначения(Значение, +Процедура ПроверитьТипЗначения(Контекст, + Значение, Знач ОжидаемыйТип, Описание = "ожидаемого значения", ЕслиУстановлен = Ложь, @@ -1629,7 +1655,7 @@ ТипЗнч(Значение), ОжидаемыйТип, Суффикс); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; КонецПроцедуры @@ -1689,62 +1715,62 @@ КонецФункции -Процедура УстановитьОписаниеПроверки(ОписаниеПроверки) +Процедура УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки) - Контекст().ОписаниеПроверки = ОписаниеПроверки; + Контекст.ОписаниеПроверки = ОписаниеПроверки; КонецПроцедуры -Процедура СравнитьЗначения(ОжидаемоеЗначение, Реверс, Сообщение) +Процедура СравнитьЗначения(Контекст, ОжидаемоеЗначение, Реверс, Сообщение) Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ЗначенияРавны(ПроверяемоеЗначение, ОжидаемоеЗначение); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение); КонецПроцедуры -Процедура ПроверитьЗаполненность(Реверс) +Процедура ПроверитьЗаполненность(Контекст, Реверс) Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ЗначениеЗаполнено(ПроверяемоеЗначение); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; ОбработатьРезультатСравнения(Результат, "является заполненным", Реверс, ПроверяемоеЗначение, Неопределено); КонецПроцедуры -Процедура ПроверитьСуществование(Реверс) +Процедура ПроверитьСуществование(Контекст, Реверс) Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = ПроверяемоеЗначение <> Null И ПроверяемоеЗначение <> Неопределено; Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; ОбработатьРезультатСравнения(Результат, "существует", Реверс, ПроверяемоеЗначение, Неопределено); КонецПроцедуры -Процедура ПроверитьСодержание(ОжидаемоеЗначение, Реверс) +Процедура ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Реверс) Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); Результат = НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если Результат = Неопределено Тогда ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; Сообщение = СтрШаблон("содержит `%1`", ОжидаемоеЗначение); @@ -1752,29 +1778,29 @@ КонецПроцедуры -Функция ДлинаПроверяемогоЗначения() +Функция ДлинаПроверяемогоЗначения(Контекст) Попытка - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение); Исключение - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст); КонецПопытки; Если ФактическаяДлина = Неопределено Тогда ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение)); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; Возврат ФактическаяДлина; КонецФункции -Процедура ПроверитьДлину(ОжидаемоеЗначение, Реверс) +Процедура ПроверитьДлину(Контекст, ОжидаемоеЗначение, Реверс) - ПроверитьТипЗначения(ОжидаемоеЗначение, "Число"); + ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число"); - ФактическаяДлина = ДлинаПроверяемогоЗначения(); + ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст); Результат = ФактическаяДлина = ОжидаемоеЗначение; Сообщение = СтрШаблон("имеет длину (размер) `%1`", ОжидаемоеЗначение); @@ -1790,26 +1816,26 @@ КонецЕсли; Если Не Результат Тогда - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение); КонецЕсли; КонецПроцедуры -Процедура ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, ВключаяНачало, ВключаяОкончание) +Процедура ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, ВключаяНачало, ВключаяОкончание) - ПроверяемоеЗначение = ПроверяемоеЗначение(); + ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст); ТипЗначения = ТипЗнч(ПроверяемоеЗначение); Суффикс = ". Он должен совпадать с типом проверяемого значения"; - ПроверитьТипЗначения(НачалоИнтервала, ТипЗначения, "левой границы интервала", , Суффикс); - ПроверитьТипЗначения(ОкончаниеИнтервала, ТипЗначения, "правой границы интервала", , Суффикс); + ПроверитьТипЗначения(Контекст, НачалоИнтервала, ТипЗначения, "левой границы интервала", , Суффикс); + ПроверитьТипЗначения(Контекст, ОкончаниеИнтервала, ТипЗначения, "правой границы интервала", , Суффикс); Если НачалоИнтервала > ОкончаниеИнтервала Тогда ТекстОшибки = СтрШаблон("Не корректно задан интервал, левая граница (%1) не должна быть больше правой (%2)", НачалоИнтервала, ОкончаниеИнтервала); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; Результат = Истина; @@ -1832,16 +1858,16 @@ ОкончаниеИнтервала, ?(ВключаяОкончание, "]", ")"),); Сообщение = "находится в интервале " + Интервал; - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, Интервал); + СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, Интервал); КонецЕсли; КонецПроцедуры -Процедура ПроверитьЗаполненностьЗначения(Значение, Описание) +Процедура ПроверитьЗаполненностьЗначения(Контекст, Значение, Описание) Если НЕ ЗначениеЗаполнено(Значение) Тогда ТекстОшибки = СтрШаблон("Ожидали, что %1 заполнено, но это не так", Описание); - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст); КонецЕсли; КонецПроцедуры @@ -1868,19 +1894,19 @@ Если Не ЭтоСоответствие И (Не СтруктураОбъекта.Свойство(Ключ) Или СтруктураОбъекта[Ключ] = ЗначениеОтсутствующегоРеквизита) Тогда Сообщение = СтрШаблон("не содержат свойство '%1'", Ключ); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон); + СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон); КонецЕсли; Если НЕ ЗначенияРавны(Объект[Ключ], ОбъектЭталон[Ключ]) Тогда Сообщение = СтрШаблон("имеет свойство '%1', которое равно `%2`", Ключ, ОбъектЭталон[Ключ]); - ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон); + СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон); КонецЕсли; КонецЦикла; КонецПроцедуры -Процедура ОбработатьРезультатПроверки(Результат) +Процедура ОбработатьРезультатПроверки(Контекст, Результат) Если НЕ Результат.Успешно Тогда @@ -1892,7 +1918,7 @@ ТекстИсключения = СтрШаблон("%1 <%2>", ЮТРегистрацияОшибок.ПрефиксОшибкиУтверждений(), Сообщение.Сообщение); ВызватьИсключение ТекстИсключения; Иначе - ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение); + ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение, Контекст); КонецЕсли; КонецЦикла; @@ -1913,4 +1939,25 @@ КонецФункции +// Вызывает ошибку проверки утверждений +// При этом сохраняет в контекст состояние, для дальнейшей обработки +// +// Параметры: +// Сообщение - Строка +// ПроверяемоеЗначение - Произвольный +// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения +Процедура СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") + + Контекст = Контекст(); + ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, Сообщение, ПроверяемоеЗначение, ОбъектПроверки); + +КонецПроцедуры + +Процедура СгенерироватьОшибкуСравнения(Сообщение, ФактическоеЗначение, ОжидаемоеЗначение, ОбъектПроверки = "проверяемое значение") + + Контекст = Контекст(); + ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Контекст, Сообщение, ФактическоеЗначение, ОжидаемоеЗначение, ОбъектПроверки); + +КонецПроцедуры + #КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl new file mode 100644 index 00000000..c07f56a4 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl @@ -0,0 +1,173 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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. +// +//©///////////////////////////////////////////////////////////////////////////©// + +/////////////////////////////////////////////////////////////////// +// Предоставляет методы для формирования утверждений проверяющих данные информационной базы. +// +// Например: +// +// ```bsl +// ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары") +// .СодержитЗаписи(); +// ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют") +// .СодержитЗаписи(ЮТест.Предикат() +// .Реквизит("Валюта").Равно(ДанныеРегистра.Валюта)); +// ``` +/////////////////////////////////////////////////////////////////// +#Область ПрограммныйИнтерфейс + +// Инициализирует модуль для проверки утверждений. +// +// * Запоминает/устанавливает имя проверяемой таблицы +// * Запоминает описание. +// +// Параметры: +// ИмяТаблицы - Строка - Имя проверяемой таблицы, например, Справочник.Товары, РегистрНакопления.ТоварыНаСкладах +// ОписаниеПроверки - Строка - Описание проверки, которое будет выведено при возникновении ошибки +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +// Примеры +// ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары").СодержитЗаписи(); +// +Функция ЧтоТаблица(ИмяТаблицы, ОписаниеПроверки = "") Экспорт + + Контекст = НовыйКонтекст(ИмяТаблицы); + Контекст.ПрефиксОшибки = ОписаниеПроверки; + + ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекста(), Контекст); + + Возврат ЮТУтвержденияИБ; + +КонецФункции + +// Проверяет наличие в таблице записей удовлетворяющих условиям +// +// Параметры: +// Предикат - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат +// - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить +// - см. ЮТФабрика.ВыражениеПредиката +// - Неопределено - Проверит, что таблица не пустая +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция СодержитЗаписи(Знач Предикат = Неопределено, Знач ОписаниеУтверждения = Неопределено) Экспорт + + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеУтверждения); + Результат = ЮТЗапросы.ТаблицаСодержитЗаписи(Контекст.ОбъектПроверки.Значение, Предикат); + + Если Не Результат Тогда + Контекст = Контекст(); + СгенерироватьОшибкуУтверждения(Контекст, Предикат, "содержит записи"); + КонецЕсли; + + Возврат ЮТУтвержденияИБ; + +КонецФункции + +// Проверяет отсутствие в таблице записей удовлетворяющих условиям +// +// Параметры: +// Предикат - ОбщийМодуль - Условия сформированные с использованием см. ЮТест.Предикат +// - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить +// - см. ЮТФабрика.ВыражениеПредиката +// - Неопределено - Проверит, что таблица пустая +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция НеСодержитЗаписи(Знач Предикат = Неопределено, Знач ОписаниеУтверждения = Неопределено) Экспорт + + Контекст = Контекст(); + УстановитьОписаниеПроверки(Контекст, ОписаниеУтверждения); + Результат = НЕ ЮТЗапросы.ТаблицаСодержитЗаписи(Контекст.ОбъектПроверки.Значение, Предикат); + + Если Не Результат Тогда + Контекст = Контекст(); + СгенерироватьОшибкуУтверждения(Контекст, Предикат, "не содержит записи"); + КонецЕсли; + + Возврат ЮТУтвержденияИБ; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Контекст + +// Контекст. +// +// Возвращаемое значение: +// см. НовыйКонтекст +Функция Контекст() + + //@skip-check constructor-function-return-section + Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекста()); + +КонецФункции + +// Инициализирует контекст +// +// Параметры: +// ИмяТаблицы - Строка +// +// Возвращаемое значение: +// см. ЮТФабрика.ОписаниеПроверки +Функция НовыйКонтекст(ИмяТаблицы) + + Контекст = ЮТФабрика.ОписаниеПроверки(ИмяТаблицы); + + Возврат Контекст; + +КонецФункции + +Функция ИмяКонтекста() + + Возврат "КонтекстУтвержденияИБ"; + +КонецФункции + +#КонецОбласти + +Процедура СгенерироватьОшибкуУтверждения(Контекст, Предикат, Сообщение) + + Если Предикат <> Неопределено Тогда + ПредставлениеПредиката = ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, ", ", "`%1`"); + КонецЕсли; + + Если ЗначениеЗаполнено(ПредставлениеПредиката) Тогда + СообщениеОбОшибке = СтрШаблон("%1 с %2", Сообщение, ПредставлениеПредиката); + Иначе + СообщениеОбОшибке = Сообщение; + КонецЕсли; + + ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, СообщениеОбОшибке, Неопределено, "проверяемая таблица"); + +КонецПроцедуры + +Процедура УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки) + + Контекст.ОписаниеПроверки = ОписаниеПроверки; + +КонецПроцедуры + +#КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/ЮТУтвержденияИБ.mdo b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/ЮТУтвержденияИБ.mdo new file mode 100644 index 00000000..c13cfd3b --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/ЮТУтвержденияИБ.mdo @@ -0,0 +1,11 @@ + + + ЮТУтвержденияИБ + + ru + Утверждения ИБ + + true + true + true + diff --git a/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl index 163e53be..7c1f84ea 100644 --- a/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl @@ -540,6 +540,50 @@ КонецФункции +// Формирует описание проверяемого значения. +// Используется в утверждения для формирования дружелюбного сообщения об ошибке. +// +// Параметры: +// ПроверяемоеЗначение - Произвольный - Проверяемое значение +// +// Возвращаемое значение: +// Структура - Описание проверяемого значения: +// * Значение - Произвольный +// * Представление - Строка - Представление объекта +// - Неопределено - Если не указано тогда используется платформенное предсталение (`Строка(Значение)`) +// * ИмяСвойства - Строка, Число, Неопределено - Имя проверяемого реквизита, индекса +Функция ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Значение", ПроверяемоеЗначение); + Описание.Вставить("Представление", Неопределено); + Описание.Вставить("ИмяСвойства", Неопределено); + + Возврат Описание; + +КонецФункции + +// Описание проверки. +// +// Параметры: +// ПроверяемоеЗначение - Произвольный +// +// Возвращаемое значение: +// Структура - Описание проверки: +// * ОбъектПроверки - см. ОписаниеПроверяемогоЗначения +// * ПрефиксОшибки - Строка, Неопределено - +// * ОписаниеПроверки - Строка, Неопределено - +Функция ОписаниеПроверки(ПроверяемоеЗначение) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("ОбъектПроверки", ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение)); + Описание.Вставить("ПрефиксОшибки", Неопределено); + Описание.Вставить("ОписаниеПроверки", Неопределено); + + Возврат Описание; + +КонецФункции + #КонецОбласти #Область КонструкторыКонтекстов diff --git a/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl index 98458f1b..6453e191 100644 --- a/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl @@ -24,7 +24,7 @@ // Возвращает API формирования утверждения для проверки теста. // // Параметры: -// ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение +// ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение // Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки // // Возвращаемое значение: @@ -35,6 +35,20 @@ КонецФункции +// Возвращает API формирования утверждения для проверки данных базы. +// +// Параметры: +// ИмяТаблицы - Произвольный - Имя таблицы базы, например, `Справочник.Пользователи`, `Документ.ПКО`, `РегистрСведений.ИнформацияОбОшибках` +// Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки +// +// Возвращаемое значение: +// ОбщийМодуль - Утверждения для проверки данных базы, см. ЮТУтвержденияИБ +Функция ОжидаетЧтоТаблицаБазы(ИмяТаблицы, Сообщение = "") Экспорт + + Возврат ЮТУтвержденияИБ.ЧтоТаблица(ИмяТаблицы, Сообщение); + +КонецФункции + // Возвращает API для работы с тестовыми данными. // // Возвращаемое значение: @@ -115,6 +129,7 @@ // Неопределено - Если метод вызывается за рамками тестового набора Функция КонтекстТестовогоНабора() Экспорт + //@skip-check constructor-function-return-section Возврат ЮТКонтекст.КонтекстНабора(); КонецФункции @@ -126,8 +141,8 @@ // // Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеВсехТестов`. // Возвращаемое значение: -// Структура - Контекст тестового модуля -// Неопределено - Если метод вызывается за рамками тестового модуля +// - Структура - Контекст тестового модуля +// - Неопределено - Если метод вызывается за рамками тестового модуля Функция КонтекстМодуля() Экспорт Возврат ЮТКонтекст.КонтекстМодуля(); diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo index 595b2d20..8dc1a06e 100644 --- a/exts/yaxunit/src/Configuration/Configuration.mdo +++ b/exts/yaxunit/src/Configuration/Configuration.mdo @@ -40,6 +40,9 @@ CommonModule.МокитоПроверки CommonModule.МокитоСлужебный CommonModule.ЮТест + CommonModule.ЮТЗапросы + CommonModule.ЮТЗапросыВызовСервера + CommonModule.ЮТЗапросыКлиентСервер CommonModule.ЮТИсполнительКлиент CommonModule.ЮТИсполнительКлиентСервер CommonModule.ЮТИсполнительСервер @@ -74,6 +77,7 @@ CommonModule.ЮТТестовыеДанныеСлужебный CommonModule.ЮТТесты CommonModule.ЮТУтверждения + CommonModule.ЮТУтвержденияИБ CommonModule.ЮТФабрика CommonModule.ЮТФайлы CommonModule.ЮТФильтрация diff --git a/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo b/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo index 5d1b269d..f3e464bc 100644 --- a/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo +++ b/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo @@ -14,6 +14,10 @@ CommonModule.МокитоПроверки CommonModule.МокитоСлужебный CommonModule.ЮТест + CommonModule.ЮТЗапросы + CommonModule.ЮТЗапросыВызовСервера + CommonModule.ЮТЗапросыКлиентСервер + CommonModule.ЮТИсполнительКлиент CommonModule.ЮТИсполнительКлиентСервер CommonModule.ЮТИсполнительСервер CommonModule.ЮТКонструкторВариантов @@ -27,6 +31,7 @@ CommonModule.ЮТМетаданные CommonModule.ЮТМетаданныеПовтИсп CommonModule.ЮТМетаданныеСервер + CommonModule.ЮТНастройкиВыполнения CommonModule.ЮТОбщий CommonModule.ЮТОбщийВызовСервера CommonModule.ЮТОтчет @@ -34,15 +39,21 @@ CommonModule.ЮТОтчетJUnit CommonModule.ЮТПараметрыЗапуска CommonModule.ЮТПовторногоИспользования + CommonModule.ЮТПредикаты + CommonModule.ЮТПредикатыКлиентСервер CommonModule.ЮТРасширения CommonModule.ЮТРегистрацияОшибок CommonModule.ЮТСобытия + CommonModule.ЮТСравнениеКлиентСервер + CommonModule.ЮТСравнениеСервер CommonModule.ЮТТестовыеДанные CommonModule.ЮТТестовыеДанныеВызовСервера CommonModule.ЮТТестовыеДанныеСлужебный CommonModule.ЮТТесты CommonModule.ЮТУтверждения + CommonModule.ЮТУтвержденияИБ CommonModule.ЮТФабрика + CommonModule.ЮТФайлы CommonModule.ЮТФильтрация CommonModule.ЮТЧитатель CommonModule.ЮТЧитательСервер diff --git a/tests/.settings/com.e1c.v8codestyle.bsl.prefs b/tests/.settings/com.e1c.v8codestyle.bsl.prefs new file mode 100644 index 00000000..67c99dfb --- /dev/null +++ b/tests/.settings/com.e1c.v8codestyle.bsl.prefs @@ -0,0 +1,3 @@ +addModuleStrictTypesAnnotation=false +createModuleStructure=true +eclipse.preferences.version=1 diff --git a/tests/.settings/templates/common_module.bsl b/tests/.settings/templates/common_module.bsl new file mode 100644 index 00000000..daedcb22 --- /dev/null +++ b/tests/.settings/templates/common_module.bsl @@ -0,0 +1,58 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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); + ; + +КонецПроцедуры + +#Область События + +Процедура ПередВсемиТестами() Экспорт + +КонецПроцедуры + +Процедура ПередКаждымТестом() Экспорт + +КонецПроцедуры + +Процедура ПослеКаждогоТеста() Экспорт + +КонецПроцедуры + +Процедура ПослеВсехТестов() Экспорт + +КонецПроцедуры + +#КонецОбласти + +Процедура ТестовыйМетод() Экспорт + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git a/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl new file mode 100644 index 00000000..6f549c6e --- /dev/null +++ b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl @@ -0,0 +1,156 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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+1"); + + ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса)) + .ИмеетДлину(1) + .Свойство("[0].Наименование").Равно(ДанныеСправочника.Наименование) + .Свойство("[0].Число").Равно(2); + +КонецПроцедуры + +Процедура РезультатПустой() Экспорт + + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Фикция("Наименование") + .Фикция("Поставщик"); + Ссылка = Конструктор.Записать(); + ДанныеСправочника = Конструктор.ДанныеОбъекта(); + + ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса(); + ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары"; + ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); + ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка); + + ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатПустой(ОписаниеЗапроса)).ЭтоЛожь(); + + ОписаниеЗапроса.Условия.Добавить("ПометкаУдаления"); + ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатПустой(ОписаниеЗапроса)).ЭтоИстина(); + +КонецПроцедуры + +#КонецОбласти diff --git a/tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo b/tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo new file mode 100644 index 00000000..47e37a97 --- /dev/null +++ b/tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo @@ -0,0 +1,11 @@ + + + ОМ_ЮТЗапросы + + ru + О м ЮТЗапросы + + true + true + true + diff --git a/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl b/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl index fac28cd0..2e5ad8c2 100644 --- a/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl @@ -96,21 +96,21 @@ ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); ЮТУтверждения.Что(ДанныеКонтекста, "Свойство не установлено") - .Свойство("ИмяСвойства").Равно(Неопределено); + .Свойство("ОбъектПроверки.ИмяСвойства").Равно(Неопределено); ЮТУтверждения.Что(Объект) .Свойство("Примитив"); ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); ЮТУтверждения.Что(ДанныеКонтекста, "Свойство установлено") - .Свойство("ИмяСвойства").Равно("Примитив"); + .Свойство("ОбъектПроверки.ИмяСвойства").Равно("Примитив"); ЮТУтверждения.Что(Объект) .Свойство("Объект.Первый"); ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); ЮТУтверждения.Что(ДанныеКонтекста, "Составное свойство") - .Свойство("ИмяСвойства").Равно("Объект.Первый"); + .Свойство("ОбъектПроверки.ИмяСвойства").Равно("Объект.Первый"); // Негативные тесты Попытка diff --git a/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl new file mode 100644 index 00000000..80153394 --- /dev/null +++ b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl @@ -0,0 +1,183 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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`Справочник.МобильныеУстройства` содержит записи, но это не так.", СтрочнаяПерваяБуква(Префикс)), "Описание проверки") + + .Добавить(ТаблицаБезЗаписей, МетодСодержитЗаписи, Неопределено, + СтрШаблон("Описание проверки: %1`Справочник.МобильныеУстройства` содержит записи, но это не так.", СтрочнаяПерваяБуква(Префикс)), , "Описание проверки") + + .Добавить(ТаблицаБезЗаписей, МетодСодержитЗаписи, Неопределено, + СтрШаблон("Описание проверки: %1`Справочник.МобильныеУстройства` содержит записи, но это не так.", СтрочнаяПерваяБуква(Префикс)), "Описание", "проверки") + ; + + Индекс = 1; + + Для Каждого Вариант Из Варианты.СписокВариантов() Цикл + + ЮТест.ОжидаетЧтоТаблицаБазы(Вариант.ИмяТаблицы, Вариант.ОписаниеПроверки); + + Ошибка = Неопределено; + Попытка + Если Вариант.Метод = МетодНеСодержитЗаписи Тогда + ЮТУтвержденияИБ.НеСодержитЗаписи(Вариант.Предикат, Вариант.ОписаниеУтверждения); + ИначеЕсли Вариант.Метод = МетодСодержитЗаписи Тогда + ЮТУтвержденияИБ.СодержитЗаписи(Вариант.Предикат, Вариант.ОписаниеУтверждения); + КонецЕсли; + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + ПроверитьОшибкуУтверждения(Индекс, Ошибка, Вариант.ОжидаемоеСообщение); + Индекс = Индекс + 1; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПроверитьОшибкуУтверждения(Индекс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт + + ЮТест.ОжидаетЧто(ИнформацияОбОшибке, "Вариант " + Индекс) + .ЭтоНеНеопределено() + .Свойство("Описание") + .НачинаетсяС("[Failed]") + .Содержит(ОжидаемоеОписание); + +КонецПроцедуры + +Функция СтрочнаяПерваяБуква(Строка) + Возврат НРег(Лев(Строка, 1)) + Сред(Строка, 2); +КонецФункции + +#КонецОбласти diff --git a/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/ОМ_ЮТУтвержденияИБ.mdo b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/ОМ_ЮТУтвержденияИБ.mdo new file mode 100644 index 00000000..c55cd336 --- /dev/null +++ b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/ОМ_ЮТУтвержденияИБ.mdo @@ -0,0 +1,11 @@ + + + ОМ_ЮТУтвержденияИБ + + ru + ЮТУтверждения ИБ + + true + true + true + diff --git a/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl b/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl index af6d5805..fb55ef37 100644 --- a/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl @@ -93,7 +93,7 @@ Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска); ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests") - .ИмеетДлину(15); + .ИмеетДлину(17); КонецПроцедуры diff --git a/tests/src/Configuration/Configuration.mdo b/tests/src/Configuration/Configuration.mdo index 9c023b60..6cff90e2 100644 --- a/tests/src/Configuration/Configuration.mdo +++ b/tests/src/Configuration/Configuration.mdo @@ -29,6 +29,7 @@ CommonModule.ОМ_Общий CommonModule.ОМ_ОшибкаЗагрузкиСценариев CommonModule.ОМ_ЮТест + CommonModule.ОМ_ЮТЗапросы CommonModule.ОМ_ЮТКонструкторТестовыхДанных CommonModule.ОМ_ЮТПредикатыКлиентСервер CommonModule.ОМ_ЮТСравнениеКлиентСервер @@ -36,6 +37,7 @@ CommonModule.ОМ_ЮТТестовыеДанныеСлужебный CommonModule.ОМ_ЮТТесты CommonModule.ОМ_ЮТУтверждения + CommonModule.ОМ_ЮТУтвержденияИБ CommonModule.ОМ_ЮТФильтрация CommonModule.ОМ_ЮТЧитатель CommonModule.ПомощникТестированияВызовСервера