1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-03-17 20:48:01 +02:00

Заполнение обязательных полей фиктивными данными

This commit is contained in:
alkoleft 2023-05-18 01:13:33 +03:00
parent 084c6102be
commit eebf140d7a
2 changed files with 77 additions and 0 deletions

View File

@ -80,6 +80,43 @@
КонецФункции
// Заполняет обязательные поля объекта фиктивными значениями
//
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части.
//
// На основании метаданных определяются обязательные поля (Проверка заполнения = Выдавать ошибку),
// для них генерируются и устанавливаются фиктивные значение.
//
// * Для примитивных значение генерируется случайное значение
// * Для ссылочных типов создается новый объект
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция ФикцияОбязательныхПолей() Экспорт
Контекст = Контекст();
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
Реквизиты = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть];
ТекущаяЗапись = ДанныеСтроки();
Иначе
Реквизиты = Контекст.Метаданные.Реквизиты;
ТекущаяЗапись = Контекст.Данные;
КонецЕсли;
Для Каждого Элемент Из Реквизиты Цикл
Реквизит = Элемент.Значение;
Если Реквизит.Обязательный И НЕ Контекст.Данные.Свойство(Реквизит.Имя) Тогда
Значение = ЮТТестовыеДанныеСлужебный.Фикция(Реквизит.Тип);
ТекущаяЗапись.Вставить(Реквизит.Имя, Значение);
КонецЕсли;
КонецЦикла;
Возврат ЮТКонструкторТестовыхДанных;
КонецФункции
// Переключает конструктор на заполнение табличной части объекта.
//
// Параметры:

View File

@ -23,6 +23,7 @@
ЮТТесты.ВТранзакции().УдалениеТестовыхДанных()
.ДобавитьТест("ЗаполнитьСправочник")
.ДобавитьТест("ЗаполнитьДокумент")
.ДобавитьТест("ФикцияОбязательныхПолей")
;
КонецПроцедуры
@ -109,4 +110,43 @@
КонецПроцедуры
Процедура ФикцияОбязательныхПолей() Экспорт
Данные = ЮТест.Данные().КонструкторОбъекта("Справочники.Контрагенты")
.ФикцияОбязательныхПолей()
.ДанныеОбъекта();
ЮТест.ОжидаетЧто(Данные)
.ИмеетДлину(2)
.Свойство("ВидЦен").Заполнено()
.Свойство("Наименование").Заполнено();
Данные = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара")
.ФикцияОбязательныхПолей()
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.ФикцияОбязательныхПолей()
.ДанныеОбъекта();
ЮТест.ОжидаетЧто(Данные)
.ИмеетДлину(6)
.Свойство("Дата").Заполнено()
.Свойство("Поставщик").Заполнено()
.Свойство("Склад").Заполнено()
.Свойство("Валюта").Заполнено()
.Свойство("Организация").Заполнено()
.Свойство("Товары").Заполнено()
.Свойство("Товары[0]").ИмеетДлину(4);
Данные = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
.ФикцияОбязательныхПолей()
.ДанныеОбъекта();
ЮТест.ОжидаетЧто(Данные)
.ИмеетДлину(3)
.Свойство("Период").Заполнено()
.Свойство("Валюта").Заполнено()
.Свойство("Курс").Заполнено();
КонецПроцедуры
#КонецОбласти