1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-02-13 19:42:02 +02:00
Выполнение проверки метода в транзакции
This commit is contained in:
alkoleft 2023-10-04 00:18:39 +03:00
parent cd1e18c38a
commit 1fe079131d
2 changed files with 94 additions and 5 deletions

View File

@ -777,16 +777,17 @@
// Параметры:
// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке будет содержать данный текст
// ОписаниеПроверки - Строка - Описание конкретной проверки
// ВТранзакции - Булево - Вызов метода выполняется в трананзакции
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция ВыбрасываетИсключение(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
Функция ВыбрасываетИсключение(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено, ВТранзакции = Ложь) Экспорт
Контекст = Контекст();
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
Модуль = ПроверяемоеЗначение(Контекст);
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода);
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода, ВТранзакции);
Исключение
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
@ -814,16 +815,17 @@
// Параметры:
// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке НЕ будет содержать данный текст
// ОписаниеПроверки - Строка - Описание конкретной проверки
// ВТранзакции - Булево - Вызов метода выполняется в трананзакции
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция НеВыбрасываетИсключение(Знач ОжидаемоеЗначение = Неопределено, Знач ОписаниеПроверки = Неопределено) Экспорт
Функция НеВыбрасываетИсключение(Знач ОжидаемоеЗначение = Неопределено, Знач ОписаниеПроверки = Неопределено, ВТранзакции = Ложь) Экспорт
Контекст = Контекст();
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
Модуль = ПроверяемоеЗначение(Контекст);
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода)
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода, ВТранзакции);
Исключение
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
@ -1491,7 +1493,7 @@
КонецФункции
Функция ВызватьМетод(Модуль, ИмяМетода, ПараметрыМетода)
Функция ВызватьМетод(Модуль, ИмяМетода, ПараметрыМетода, ВТранзакции)
#Если ВебКлиент Тогда
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТУтверждения.ВызватьМетод");
@ -1518,6 +1520,26 @@
Результат = Новый Структура("ИсключениеВозникло, ТекстИсключения", Ложь);
#Если Сервер Тогда
Если ВТранзакции Тогда
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Использование транзакции внтури транзакции при проверке метода недопустимо";
КонецЕсли;
Попытка
НачатьТранзакцию();
//@skip-check server-execution-safe-mode
Выполнить(СтрокаДляВыполнения);
Исключение
Результат.ИсключениеВозникло = Истина;
Результат.ТекстИсключения = ОписаниеОшибки();
КонецПопытки;
ОтменитьТранзакцию();
Возврат Результат;
КонецЕсли;
#КонецЕсли
Попытка
//@skip-check server-execution-safe-mode
Выполнить(СтрокаДляВыполнения);

View File

@ -55,6 +55,7 @@
.ДобавитьТест("НеИмеетДлину")
.ДобавитьТест("ВыбрасываетИсключение")
.ДобавитьТест("НеВыбрасываетИсключение")
.ДобавитьСерверныйТест("ПроверкаМетодаВТранзакции")
.ДобавитьСерверныйТест("СравнениеСложныхОбъектов")
.ДобавитьТест("ФормированиеСообщения")
.ДобавитьТест("НачинаетсяС")
@ -1682,6 +1683,65 @@
КонецПроцедуры
#Если Сервер Тогда
Процедура ПроверкаМетодаВТранзакции() Экспорт
Объект = ЮТест.Данные().КонструкторОбъекта(Справочники.Банки)
.ФикцияОбязательныхПолей()
.НовыйОбъект();
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("ЗаписатьОбъект").Параметр(Объект)
.НеВыбрасываетИсключение(, , Истина);
ЮТест.ОжидаетЧто(Объект)
.Свойство("Ссылка").НеЗаполнено();
Попытка
НачатьТранзакцию();
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("ЗаписатьОбъект").Параметр(Объект)
.НеВыбрасываетИсключение();
ЮТест.ОжидаетЧто(Объект)
.Свойство("Ссылка").Заполнено();
ОтменитьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Объект = ЮТест.Данные().КонструкторОбъекта(Справочники.Банки)
.ФикцияОбязательныхПолей()
.НовыйОбъект();
Ошибка = Неопределено;
Попытка
НачатьТранзакцию();
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("ЗаписатьОбъект").Параметр(Объект)
.ВыбрасываетИсключение("Не удалось", , Истина);
ОтменитьТранзакцию();
Исключение
ОтменитьТранзакцию();
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуИсполнения(Ошибка, "Использование транзакции внтури транзакции при проверке метода недопустимо");
Ошибка = Неопределено;
Попытка
ЮТУтверждения.Что(ОМ_ЮТУтверждения)
.Метод("ЗаписатьОбъект").Параметр(Объект)
.ВыбрасываетИсключение("Не удалось", , Истина);
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "вызовет исключение");
ЮТест.ОжидаетЧто(Объект)
.Свойство("Ссылка").НеЗаполнено();
КонецПроцедуры
Процедура СравнениеСложныхОбъектов() Экспорт
Варианты = Новый Массив();
@ -2339,6 +2399,13 @@
КонецФункции
Функция ЗаписатьОбъект(Объект) Экспорт
Объект.Записать();
Возврат Объект;
КонецФункции
Функция ДанныеДляПроверкиКоллекции(Знач ВернутьСтруктуру = Неопределено)
Если ВернутьСтруктуру = Неопределено Тогда