mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-02-07 19:30:17 +02:00
Merge pull request #71 from bia-technologies/feature/query-gen
Утверждения для проверки данных ИБ
This commit is contained in:
commit
a51f402636
@ -1,3 +1,3 @@
|
||||
addModuleStrictTypesAnnotation=true
|
||||
addModuleStrictTypesAnnotation=false
|
||||
createModuleStructure=true
|
||||
eclipse.preferences.version=1
|
||||
|
@ -18,39 +18,6 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТест("ТестовыйМетод")
|
||||
.ДобавитьТест("ТестовыйМетод").СПараметрами(1, 2, 3);
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область События
|
||||
|
||||
Процедура ПередВсемиТестами() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередКаждымТестом() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеКаждогоТеста() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеВсехТестов() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ТестовыйМетод() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
130
exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
Normal file
130
exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
Normal file
@ -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
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
11
exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo
Normal file
11
exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c8a4bf65-9736-47f1-a39c-12536b8207a6">
|
||||
<name>ЮТЗапросы</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Запросы</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
162
exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
Normal file
162
exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
Normal file
@ -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 КАК Поле");
|
||||
КонецЕсли;
|
||||
|
||||
Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС));
|
||||
Строки.Добавить("ИЗ " + ОписаниеЗапроса.ИмяТаблицы);
|
||||
|
||||
Если ОписаниеЗапроса.Условия.Количество() Тогда
|
||||
Строки.Добавить("ГДЕ (");
|
||||
Строки.Добавить(СтрСоединить(ОписаниеЗапроса.Условия, ") И (" + Символы.ПС));
|
||||
Строки.Добавить(")");
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос(СтрСоединить(Строки, Символы.ПС));
|
||||
ЮТОбщий.ОбъединитьВСтруктуру(Запрос.Параметры, ОписаниеЗапроса.ЗначенияПараметров);
|
||||
|
||||
Возврат Запрос;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначенияИзЗапроса(Запрос, Реквизиты)
|
||||
|
||||
Результат = Новый Структура(Реквизиты);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
|
||||
Если Выборка.Следующий() Тогда
|
||||
ЗаполнитьЗначенияСвойств(Результат, Выборка);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеИзЗапроса(Запрос, Реквизит)
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
|
||||
Если Выборка.Следующий() Тогда
|
||||
Возврат Выборка[Реквизит];
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9115c1c4-e348-46da-820d-e61915f18fde">
|
||||
<name>ЮТЗапросыВызовСервера</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Запросы вызов сервера</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<serverCall>true</serverCall>
|
||||
</mdclass:CommonModule>
|
@ -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)", Шаблон);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Шаблон;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6dfe96cd-f835-42f2-b5d7-561680929207">
|
||||
<name>ЮТЗапросыКлиентСервер</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Запросы клиент сервер</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -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
|
||||
Варианты.Варианты.Добавить(Вариант);
|
||||
|
||||
Возврат ЮТКонструкторВариантов;
|
||||
|
@ -78,24 +78,24 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель) Экспорт
|
||||
Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель, ШаблонСвойства = "содержит свойство `%1`, которое") Экспорт
|
||||
|
||||
Представления = Новый Массив();
|
||||
Предикаты = НаборПредикатов(Предикаты);
|
||||
Для Каждого Выражение Из Предикаты Цикл
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение));
|
||||
Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтрСоединить(Представления, Разделитель);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката) Экспорт
|
||||
Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства) Экспорт
|
||||
|
||||
Если ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда
|
||||
ПроверяемоеЗначение = "";
|
||||
Иначе
|
||||
ПроверяемоеЗначение = СтрШаблон("содержит свойство `%1`, которое ", ВыражениеПредиката.ИмяРеквизита);
|
||||
ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " ";
|
||||
КонецЕсли;
|
||||
|
||||
Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение);
|
||||
@ -146,14 +146,26 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоВыраженияОтрицания(Выражение) Экспорт
|
||||
|
||||
Возврат СтрНачинаетсяС(Выражение, "Не");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыраженияБезОтрицания(Выражение) Экспорт
|
||||
|
||||
Возврат Сред(Выражение, 3);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения)
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
Попытка
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения);
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
@ -166,15 +178,19 @@
|
||||
// Значение - Произвольный - Значение
|
||||
// Выражение - см. ЮТФабрика.ВыражениеПредиката
|
||||
// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
|
||||
// БазовыеПараметрыПроверки - см. ПараметрыПроверки
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения)
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
// BSLLS:CognitiveComplexity-off
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
ПараметрыПроверки = ЮТСравнениеКлиентСервер.ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь);
|
||||
ЗаполнитьЗначенияСвойств(ПараметрыПроверки, БазовыеПараметрыПроверки, "ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения");
|
||||
|
||||
ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки;
|
||||
ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение;
|
||||
ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения;
|
||||
|
||||
Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда
|
||||
ПараметрыПроверки.Реверс = Истина;
|
||||
@ -236,21 +252,21 @@
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
|
||||
// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения
|
||||
// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Параметры сообщений об ошибке:
|
||||
// * ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// * ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
|
||||
// * ПредставлениеПроверяемогоЗначения - Неопределено -
|
||||
// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки
|
||||
// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения
|
||||
// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка -
|
||||
Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено,
|
||||
ОбъектПроверки = "проверяемое значение",
|
||||
ТекстПроверяемоеЗначение = "проверяемое значение",
|
||||
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
|
||||
|
||||
Возврат Новый Структура("ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения",
|
||||
Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения",
|
||||
ОписаниеПроверки,
|
||||
ОбъектПроверки,
|
||||
ТекстПроверяемоеЗначение,
|
||||
ПредставлениеПроверяемогоЗначения);
|
||||
|
||||
КонецФункции
|
||||
|
@ -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>", ПрефиксТипаОшибки, СообщениеОбОшибке);
|
||||
|
||||
|
@ -249,18 +249,33 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
// Параметры:
|
||||
// ВидСравнения - Строка
|
||||
// ПроверяемоеЗначение - Произвольный
|
||||
// ИмяСвойства - Строка
|
||||
// ОжидаемоеЗначение - Произвольный
|
||||
// Реверс - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Параметры проверки:
|
||||
// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения
|
||||
// * ПрефиксОшибки - Строка, Неопределено -
|
||||
// * ОписаниеПроверки - Строка, Неопределено -
|
||||
// * ВидСравнения - Строка
|
||||
// * ОжидаемоеЗначение - Произвольный
|
||||
// * Реверс - Булево
|
||||
// * ТекстПроверяемоеЗначение - Строка
|
||||
Функция ПараметрыПроверки(ВидСравнения, ПроверяемоеЗначение, ИмяСвойства, ОжидаемоеЗначение, Реверс = Ложь) Экспорт
|
||||
|
||||
Параметры = Новый Структура();
|
||||
Параметры = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение);
|
||||
Параметры.ОбъектПроверки.ИмяСвойства = ИмяСвойства;
|
||||
Параметры.Вставить("ВидСравнения", ВидСравнения);
|
||||
Параметры.Вставить("ПроверяемоеЗначение", ПроверяемоеЗначение);
|
||||
Параметры.Вставить("ОжидаемоеЗначение", ОжидаемоеЗначение);
|
||||
Параметры.Вставить("ИмяСвойства", ИмяСвойства);
|
||||
Параметры.Вставить("Реверс", Реверс);
|
||||
|
||||
Параметры.Вставить("ОбъектПроверки", Неопределено);
|
||||
Параметры.Вставить("ОписаниеПроверки", Неопределено);
|
||||
Параметры.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено);
|
||||
Параметры.Вставить("ТекстПроверяемоеЗначение", "проверяемое значение");
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
@ -503,22 +518,11 @@
|
||||
Процедура ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
|
||||
|
||||
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыПроверки.ПредставлениеПроверяемогоЗначения) Тогда
|
||||
ПредставлениеЗначения = ПараметрыПроверки.ПредставлениеПроверяемогоЗначения;
|
||||
Иначе
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", ПараметрыПроверки.ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПредставлениеЗначения,
|
||||
Сообщение,
|
||||
ПараметрыПроверки.ОбъектПроверки,
|
||||
ПараметрыПроверки);
|
||||
|
||||
ТекстОшибки = ЮТОбщий.ДобавитьСтроку(ПараметрыПроверки.ОписаниеПроверки, ТекстОшибки, ": ");
|
||||
ТекстОшибки = ВРег(Лев(ТекстОшибки, 1)) + Сред(ТекстОшибки, 2);
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
ТекстОшибки,
|
||||
ФактическоеЗначение,
|
||||
@ -535,10 +539,10 @@
|
||||
// Произвольный
|
||||
Функция ПроверяемоеЗначение(ПараметрыПроверки)
|
||||
|
||||
Если ПараметрыПроверки.ИмяСвойства <> Неопределено Тогда
|
||||
Значение = ЗначениеСвойства(ПараметрыПроверки.ПроверяемоеЗначение, ПараметрыПроверки.ИмяСвойства);
|
||||
Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда
|
||||
Значение = ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
Значение = ПараметрыПроверки.ПроверяемоеЗначение;
|
||||
Значение = ПараметрыПроверки.ОбъектПроверки.Значение;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Значение;
|
||||
|
File diff suppressed because it is too large
Load Diff
173
exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl
Normal file
173
exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl
Normal file
@ -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", Сообщение, ПредставлениеПредиката);
|
||||
Иначе
|
||||
СообщениеОбОшибке = Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, СообщениеОбОшибке, Неопределено, "проверяемая таблица");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки)
|
||||
|
||||
Контекст.ОписаниеПроверки = ОписаниеПроверки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4cee0d2d-0eb6-484c-9fd3-fcf877979da8">
|
||||
<name>ЮТУтвержденияИБ</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Утверждения ИБ</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -540,6 +540,50 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует описание проверяемого значения.
|
||||
// Используется в утверждения для формирования дружелюбного сообщения об ошибке.
|
||||
//
|
||||
// Параметры:
|
||||
// ПроверяемоеЗначение - Произвольный - Проверяемое значение
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание проверяемого значения:
|
||||
// * Значение - Произвольный
|
||||
// * Представление - Строка - Представление объекта
|
||||
// - Неопределено - Если не указано тогда используется платформенное предсталение (`Строка(Значение)`)
|
||||
// * ИмяСвойства - Строка, Число, Неопределено - Имя проверяемого реквизита, индекса
|
||||
Функция ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("Значение", ПроверяемоеЗначение);
|
||||
Описание.Вставить("Представление", Неопределено);
|
||||
Описание.Вставить("ИмяСвойства", Неопределено);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание проверки.
|
||||
//
|
||||
// Параметры:
|
||||
// ПроверяемоеЗначение - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание проверки:
|
||||
// * ОбъектПроверки - см. ОписаниеПроверяемогоЗначения
|
||||
// * ПрефиксОшибки - Строка, Неопределено -
|
||||
// * ОписаниеПроверки - Строка, Неопределено -
|
||||
Функция ОписаниеПроверки(ПроверяемоеЗначение) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("ОбъектПроверки", ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение));
|
||||
Описание.Вставить("ПрефиксОшибки", Неопределено);
|
||||
Описание.Вставить("ОписаниеПроверки", Неопределено);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область КонструкторыКонтекстов
|
||||
|
@ -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 @@
|
||||
//
|
||||
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеВсехТестов`.
|
||||
// Возвращаемое значение:
|
||||
// Структура - Контекст тестового модуля
|
||||
// Неопределено - Если метод вызывается за рамками тестового модуля
|
||||
// - Структура - Контекст тестового модуля
|
||||
// - Неопределено - Если метод вызывается за рамками тестового модуля
|
||||
Функция КонтекстМодуля() Экспорт
|
||||
|
||||
Возврат ЮТКонтекст.КонтекстМодуля();
|
||||
|
@ -40,6 +40,9 @@
|
||||
<commonModules>CommonModule.МокитоПроверки</commonModules>
|
||||
<commonModules>CommonModule.МокитоСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТест</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросы</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросыВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТЗапросыКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиент</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительСервер</commonModules>
|
||||
@ -74,6 +77,7 @@
|
||||
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТТесты</commonModules>
|
||||
<commonModules>CommonModule.ЮТУтверждения</commonModules>
|
||||
<commonModules>CommonModule.ЮТУтвержденияИБ</commonModules>
|
||||
<commonModules>CommonModule.ЮТФабрика</commonModules>
|
||||
<commonModules>CommonModule.ЮТФайлы</commonModules>
|
||||
<commonModules>CommonModule.ЮТФильтрация</commonModules>
|
||||
|
@ -14,6 +14,10 @@
|
||||
<content>CommonModule.МокитоПроверки</content>
|
||||
<content>CommonModule.МокитоСлужебный</content>
|
||||
<content>CommonModule.ЮТест</content>
|
||||
<content>CommonModule.ЮТЗапросы</content>
|
||||
<content>CommonModule.ЮТЗапросыВызовСервера</content>
|
||||
<content>CommonModule.ЮТЗапросыКлиентСервер</content>
|
||||
<content>CommonModule.ЮТИсполнительКлиент</content>
|
||||
<content>CommonModule.ЮТИсполнительКлиентСервер</content>
|
||||
<content>CommonModule.ЮТИсполнительСервер</content>
|
||||
<content>CommonModule.ЮТКонструкторВариантов</content>
|
||||
@ -27,6 +31,7 @@
|
||||
<content>CommonModule.ЮТМетаданные</content>
|
||||
<content>CommonModule.ЮТМетаданныеПовтИсп</content>
|
||||
<content>CommonModule.ЮТМетаданныеСервер</content>
|
||||
<content>CommonModule.ЮТНастройкиВыполнения</content>
|
||||
<content>CommonModule.ЮТОбщий</content>
|
||||
<content>CommonModule.ЮТОбщийВызовСервера</content>
|
||||
<content>CommonModule.ЮТОтчет</content>
|
||||
@ -34,15 +39,21 @@
|
||||
<content>CommonModule.ЮТОтчетJUnit</content>
|
||||
<content>CommonModule.ЮТПараметрыЗапуска</content>
|
||||
<content>CommonModule.ЮТПовторногоИспользования</content>
|
||||
<content>CommonModule.ЮТПредикаты</content>
|
||||
<content>CommonModule.ЮТПредикатыКлиентСервер</content>
|
||||
<content>CommonModule.ЮТРасширения</content>
|
||||
<content>CommonModule.ЮТРегистрацияОшибок</content>
|
||||
<content>CommonModule.ЮТСобытия</content>
|
||||
<content>CommonModule.ЮТСравнениеКлиентСервер</content>
|
||||
<content>CommonModule.ЮТСравнениеСервер</content>
|
||||
<content>CommonModule.ЮТТестовыеДанные</content>
|
||||
<content>CommonModule.ЮТТестовыеДанныеВызовСервера</content>
|
||||
<content>CommonModule.ЮТТестовыеДанныеСлужебный</content>
|
||||
<content>CommonModule.ЮТТесты</content>
|
||||
<content>CommonModule.ЮТУтверждения</content>
|
||||
<content>CommonModule.ЮТУтвержденияИБ</content>
|
||||
<content>CommonModule.ЮТФабрика</content>
|
||||
<content>CommonModule.ЮТФайлы</content>
|
||||
<content>CommonModule.ЮТФильтрация</content>
|
||||
<content>CommonModule.ЮТЧитатель</content>
|
||||
<content>CommonModule.ЮТЧитательСервер</content>
|
||||
|
3
tests/.settings/com.e1c.v8codestyle.bsl.prefs
Normal file
3
tests/.settings/com.e1c.v8codestyle.bsl.prefs
Normal file
@ -0,0 +1,3 @@
|
||||
addModuleStrictTypesAnnotation=false
|
||||
createModuleStructure=true
|
||||
eclipse.preferences.version=1
|
58
tests/.settings/templates/common_module.bsl
Normal file
58
tests/.settings/templates/common_module.bsl
Normal file
@ -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);
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область События
|
||||
|
||||
Процедура ПередВсемиТестами() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередКаждымТестом() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеКаждогоТеста() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеВсехТестов() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ТестовыйМетод() Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
156
tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl
Normal file
156
tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl
Normal file
@ -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);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура РезультатПустой() Экспорт
|
||||
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
|
||||
.Фикция("Наименование")
|
||||
.Фикция("Поставщик");
|
||||
Ссылка = Конструктор.Записать();
|
||||
ДанныеСправочника = Конструктор.ДанныеОбъекта();
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса();
|
||||
ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары";
|
||||
ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка");
|
||||
ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка);
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатПустой(ОписаниеЗапроса)).ЭтоЛожь();
|
||||
|
||||
ОписаниеЗапроса.Условия.Добавить("ПометкаУдаления");
|
||||
ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатПустой(ОписаниеЗапроса)).ЭтоИстина();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
11
tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo
Normal file
11
tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="66558076-11dd-4a76-8135-43dd8071ba62">
|
||||
<name>ОМ_ЮТЗапросы</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>О м ЮТЗапросы</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -96,21 +96,21 @@
|
||||
|
||||
ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки();
|
||||
ЮТУтверждения.Что(ДанныеКонтекста, "Свойство не установлено")
|
||||
.Свойство("ИмяСвойства").Равно(Неопределено);
|
||||
.Свойство("ОбъектПроверки.ИмяСвойства").Равно(Неопределено);
|
||||
|
||||
ЮТУтверждения.Что(Объект)
|
||||
.Свойство("Примитив");
|
||||
|
||||
ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки();
|
||||
ЮТУтверждения.Что(ДанныеКонтекста, "Свойство установлено")
|
||||
.Свойство("ИмяСвойства").Равно("Примитив");
|
||||
.Свойство("ОбъектПроверки.ИмяСвойства").Равно("Примитив");
|
||||
|
||||
ЮТУтверждения.Что(Объект)
|
||||
.Свойство("Объект.Первый");
|
||||
|
||||
ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки();
|
||||
ЮТУтверждения.Что(ДанныеКонтекста, "Составное свойство")
|
||||
.Свойство("ИмяСвойства").Равно("Объект.Первый");
|
||||
.Свойство("ОбъектПроверки.ИмяСвойства").Равно("Объект.Первый");
|
||||
|
||||
// Негативные тесты
|
||||
Попытка
|
||||
|
183
tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl
Normal file
183
tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl
Normal file
@ -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);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7cfe3d9e-2406-4cd6-a8da-cfae81d0eef1">
|
||||
<name>ОМ_ЮТУтвержденияИБ</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>ЮТУтверждения ИБ</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -93,7 +93,7 @@
|
||||
|
||||
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
|
||||
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
|
||||
.ИмеетДлину(15);
|
||||
.ИмеетДлину(17);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -29,6 +29,7 @@
|
||||
<commonModules>CommonModule.ОМ_Общий</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ОшибкаЗагрузкиСценариев</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТест</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТЗапросы</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТКонструкторТестовыхДанных</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТПредикатыКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТСравнениеКлиентСервер</commonModules>
|
||||
@ -36,6 +37,7 @@
|
||||
<commonModules>CommonModule.ОМ_ЮТТестовыеДанныеСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТТесты</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТУтверждения</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТУтвержденияИБ</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТФильтрация</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТЧитатель</commonModules>
|
||||
<commonModules>CommonModule.ПомощникТестированияВызовСервера</commonModules>
|
||||
|
Loading…
x
Reference in New Issue
Block a user