mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-03-17 20:48:01 +02:00
Merge pull request #156 from bia-technologies/feature/121
Ограничение типов фикции
This commit is contained in:
commit
8f944bd647
@ -30,7 +30,9 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
Процедура Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, Знач ОграничениеТипа) Экспорт
|
||||
|
||||
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ОграничениеТипа, "Тип, ОписаниеТипов, Строка", "Фикция", "ЮТКонструкторТестовыхДанных", Истина);
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
|
||||
ОписаниеРеквизита = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть][ИмяРеквизита];
|
||||
@ -40,7 +42,14 @@
|
||||
ТекущаяЗапись = Контекст.Данные;
|
||||
КонецЕсли;
|
||||
|
||||
Значение = ЮТТестовыеДанныеСлужебный.Фикция(ОписаниеРеквизита.Тип, РеквизитыЗаполнения);
|
||||
Если ОграничениеТипа <> Неопределено Тогда
|
||||
ПолноеИмяРеквизита = ЮТОбщий.ДобавитьСтроку(Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита, ".");
|
||||
ТипЗначения = ПересечениеТипов(ОписаниеРеквизита.Тип, ОграничениеТипа, ПолноеИмяРеквизита);
|
||||
Иначе
|
||||
ТипЗначения = ОписаниеРеквизита.Тип;
|
||||
КонецЕсли;
|
||||
|
||||
Значение = ЮТТестовыеДанныеСлужебный.Фикция(ТипЗначения, РеквизитыЗаполнения);
|
||||
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -197,4 +206,39 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПересечениеТипов(Знач ОписаниеТипов, Знач ОграничениеТипов, ИмяРеквизита)
|
||||
|
||||
ТипОграничения = ТипЗнч(ОграничениеТипов);
|
||||
|
||||
Если ТипОграничения = Тип("Строка") Тогда
|
||||
ОграничениеТипов = Новый ОписаниеТипов(ОграничениеТипов);
|
||||
ТипОграничения = Тип("ОписаниеТипов");
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипОграничения = Тип("Тип") И ОписаниеТипов.СодержитТип(ОграничениеТипов) И ОграничениеТипов <> Тип("Неопределено") Тогда
|
||||
Результат = ЮТОбщий.ЗначениеВМассиве(ОграничениеТипов);
|
||||
ИначеЕсли ТипОграничения = Тип("ОписаниеТипов") Тогда
|
||||
Результат = ЮТОбщий.ПересечениеМассивов(ОписаниеТипов.Типы(), ОграничениеТипов.Типы());
|
||||
Иначе
|
||||
Результат = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Результат) Тогда
|
||||
|
||||
Сообщение = СтрШаблон("Исправьте ограничение типов для реквизита `%1` (`%2`), оно не входит в множество типов реквизита (`%3`)",
|
||||
ИмяРеквизита,
|
||||
ОграничениеТипов,
|
||||
ОписаниеТипов);
|
||||
ВызватьИсключение Сообщение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Новый ОписаниеТипов(Результат,
|
||||
ОписаниеТипов.КвалификаторыЧисла,
|
||||
ОписаниеТипов.КвалификаторыСтроки,
|
||||
ОписаниеТипов.КвалификаторыДаты,
|
||||
ОписаниеТипов.КвалификаторыДвоичныхДанных);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -59,13 +59,15 @@
|
||||
// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
|
||||
// РеквизитыЗаполнения - Структура - Значения реквизитов заполнения создаваемого объекта базы
|
||||
// - Неопределено
|
||||
// ОграничениеТипа - Тип, ОписаниеТипов - Испольуется для ограничения типа составного реквизита, будет сгерерировано значение указанного типа
|
||||
// - Неопределено - Будет сгенерировано значение, на основании типа реквизита, если реквизит составной, то будет использован случайный тип
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
&НаКлиенте
|
||||
Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено, ОграничениеТипа = Неопределено) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения);
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, ОграничениеТипа);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
@ -58,12 +58,14 @@
|
||||
// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
|
||||
// РеквизитыЗаполнения - Структура - Значения реквизитов заполнения создаваемого объекта базы
|
||||
// - Неопределено
|
||||
// ОграничениеТипа - Тип, ОписаниеТипов - Испольуется для ограничения типа составного реквизита, будет сгерерировано значение указанного типа
|
||||
// - Неопределено - Будет сгенерировано значение, на основании типа реквизита, если реквизит составной, то будет использован случайный тип
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Конструктор
|
||||
Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено) Экспорт
|
||||
Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено, ОграничениеТипа = Неопределено) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения);
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, ОграничениеТипа);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
@ -24,6 +24,7 @@
|
||||
.ДобавитьТест("ЗаполнитьСправочник")
|
||||
.ДобавитьТест("ЗаполнитьДокумент")
|
||||
.ДобавитьТест("Фикция")
|
||||
.ДобавитьТест("Фикция_Типизированная")
|
||||
.ДобавитьТест("ФикцияОбязательныхПолей")
|
||||
.ДобавитьТест("СоздатьГруппу")
|
||||
;
|
||||
@ -145,6 +146,48 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фикция_Типизированная() Экспорт
|
||||
|
||||
ИмяТипа = "ПланОбменаСсылка.Мобильные";
|
||||
Тип = Тип(ИмяТипа);
|
||||
|
||||
Варианты = ЮТест.Варианты("Тип, ОжилаемыйТип, Описание")
|
||||
.Добавить(ИмяТипа, Тип, "По представлению типа")
|
||||
.Добавить(Тип, Тип, "По типу")
|
||||
.Добавить(Новый ОписаниеТипов(ИмяТипа), Тип, "По описаниею типов")
|
||||
.Добавить("Строка", Тип("Строка"), "Другой тип")
|
||||
;
|
||||
|
||||
Для Каждого Вариант Из Варианты.СписокВариантов() Цикл
|
||||
|
||||
Данные = ЮТест.Данные().КонструкторОбъекта("Справочник.МобильныеУстройства")
|
||||
.Фикция("Подписчик", , Вариант.Тип)
|
||||
.ДанныеОбъекта();
|
||||
|
||||
ЮТест.ОжидаетЧто(Данные, Вариант.Описание).Свойство("Подписчик")
|
||||
.Заполнено()
|
||||
.ИмеетТип(Вариант.ОжилаемыйТип);
|
||||
|
||||
КонецЦикла;
|
||||
//
|
||||
Варианты = ЮТест.Варианты("Тип, Описание")
|
||||
.Добавить("Дата", "Неподходящий тип")
|
||||
.Добавить(Новый ОписаниеТипов("Число, Дата"), "Неподходящее описание типов")
|
||||
.Добавить("Неопределено", "Неопределено")
|
||||
.Добавить(Тип("Неопределено"), "Тип Неопределено")
|
||||
;
|
||||
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочник.МобильныеУстройства");
|
||||
|
||||
Для Каждого Вариант Из Варианты.СписокВариантов() Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Конструктор, Вариант.Описание).Метод("Фикция", ЮТОбщий.ЗначениеВМассиве("Подписчик", Неопределено, Вариант.Тип))
|
||||
.ВыбрасываетИсключение("Исправьте ограничение типов для реквизита `Подписчик`");
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ФикцияОбязательныхПолей() Экспорт
|
||||
|
||||
Данные = ЮТест.Данные().КонструкторОбъекта("Справочники.Контрагенты")
|
||||
|
Loading…
x
Reference in New Issue
Block a user