diff --git a/documentation/docs/features/test-data/data-generation.md b/documentation/docs/features/test-data/data-generation.md index d787aa02d..030cc3da7 100644 --- a/documentation/docs/features/test-data/data-generation.md +++ b/documentation/docs/features/test-data/data-generation.md @@ -130,16 +130,15 @@ sidebar_position: 1 * В более компактной форме заполнять объект * Имеет методы записи и проведения * При возникновении ошибки оборачивает их в более понятные человеку описания - * Киллер фича - `Фикция` и `ФикцияОбязательныхПолей`. Устанавливает случайно сгенерированные значения реквизитов. Таким образом делается акцент на важных для теста реквизитах и экономит "строки" на генерацию ненужных значений + * Киллер фича - `Фикция`, `ФикцияРеквизитов` и `ФикцияОбязательныхПолей`. Устанавливает случайно сгенерированные значения реквизитов. Таким образом делается акцент на важных для теста реквизитах и экономит "строки" на генерацию ненужных значений * Умеет создавать данные с клиента и [удалять их по окончании теста](test-data-deletion.md) ```bsl Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара") - .Фикция("Поставщик") - .Фикция("Склад") + .ФикцияРеквизитов("Поставщик, Склад") .ФикцияОбязательныхПолей() - .ТабличнаяЧасть("Товары"); - + .ТабличнаяЧасть("Товары") + ОбщиеДанные = Новый Структура("ВидЦены, Поставщик", Закупочная, Конструктор.ДанныеОбъекта().Поставщик); Для Инд = 1 По 3 Цикл @@ -181,8 +180,7 @@ sidebar_position: 1 .УстановитьРеквизиты(Реквизиты) .Фикция("Покупатель") .ДобавитьНовый("Товары") - .Фикция("Цена") - .Фикция("Количество") + .ФикцияРеквизитов("Цена, Количество") .ДанныеОбъекта(); ``` @@ -197,6 +195,7 @@ sidebar_position: 1 * Для коллекций - генерируется случайно количество случайных элементов (на основании типа) * `ФикцияОбязательныхПолей()` - на основании типа создаваемого объекта определяет список обязательных полей и для каждого из них вызывается метод `Фикция`. * `ФикцияНезаполненных()` - для всех незаполненных полей создаваемого объекта вызывает метод `Фикция`. +* `ФикцияРеквизитов()` - для перечисленных полей создаваемого объекта вызывает метод `Фикция`. * `ДобавитьНовый(ИмяРеквизита)` - Добавляет новый объект в указанную реквизит-коллекцию. Все последующие вызовы установки реквизитов будут относится к этому добавленному объекту. * `ПерейтиКВладельцу()` - используется после метода `ДобавитьНовый` для переключения контекста заполнения на родительский объект. Например вам необходимо добавить две строки в табличную часть. ```bsl @@ -206,8 +205,7 @@ sidebar_position: 1 .Фикция("Количество") .ПерейтиКВладельцу() .ДобавитьНовый("Товары") - .Фикция("Цена") - .Фикция("Количество") + .ФикцияРеквизитов("Цена, Количество") .ДанныеОбъекта(); ``` Здесь перед добавлением второй строки нужно переключится (`ПерейтиКВладельцу`) на основной объект и после этого можно добавить строку. @@ -225,9 +223,7 @@ sidebar_position: 1 #КонецЕсли Конструктор - .Фикция("Поставщик") - .Фикция("Склад") - .Фикция("Валюта") + .ФикцияРеквизитов("Поставщик, Склад, Валюта") .Установить("Организация", ЮТест.Данные().КонструкторОбъекта("Справочники.Организации").Установить("КакойТоТамУчет", Истина)) .ТабличнаяЧасть("Товары"); diff --git a/documentation/docs/getting-started/auxiliary-modules.md b/documentation/docs/getting-started/auxiliary-modules.md index a49921b70..e0296020a 100644 --- a/documentation/docs/getting-started/auxiliary-modules.md +++ b/documentation/docs/getting-started/auxiliary-modules.md @@ -27,8 +27,7 @@ .ТабличнаяЧасть("Товары") .ДобавитьСтроку() .Установить("Номенклатура", Товар) - .Фикция("Количество") - .Фикция("Цена") + .ФикцияРеквизитов("Количество, Цена") .Записать(); КонецФункции @@ -59,8 +58,7 @@ .ТабличнаяЧасть("Товары") .ДобавитьСтроку() .Установить("Номенклатура", Товар) - .Фикция("Количество") - .Фикция("Цена") + .ФикцияРеквизитов("Количество, Цена") .Записать(); КонецФункции @@ -74,8 +72,7 @@ .ТабличнаяЧасть("Товары") .ДобавитьСтроку() .Установить("Номенклатура", Товар) - .Фикция("Количество") - .Фикция("Цена") + .ФикцияРеквизитов("Количество, Цена") .Записать(); КонецФункции @@ -89,8 +86,7 @@ .ТабличнаяЧасть("Товары") .ДобавитьСтроку() .Установить("Номенклатура", Товар) - .Фикция("Количество") - .Фикция("Цена") + .ФикцияРеквизитов("Количество, Цена") .Записать(); КонецФункции diff --git a/documentation/docs/getting-started/fluent-api.md b/documentation/docs/getting-started/fluent-api.md index 3bed79394..124fc550d 100644 --- a/documentation/docs/getting-started/fluent-api.md +++ b/documentation/docs/getting-started/fluent-api.md @@ -11,8 +11,7 @@ .Установить("Поставщик", Поставщик) // Устанавливает значение реквизита документа. .Фикция("Дата") // Генерирует случайную дату. .Фикция("Номер") // Генерирует случайный номер. - .Фикция("Склад") // Создает "пустышку" склада. - .Фикция("Валюта") // Создает "пустышку" валюты. + .ФикцияРеквизитов("Склад, Валюта") // Создает "пустышки" склада и валюты. .ТабличнаяЧасть("Товары") // Переключает контекст на работу с табличной частью "Товары". .ДобавитьСтроку() // Добавляет строку табличной части. .Фикция("Товар", Новый Структура("Поставщик", Поставщик)) // Создает "пустышку" товары от конкретного поставщика. @@ -52,10 +51,7 @@ ```bsl title="Или вариант используя конструктора, но без цепочки вызовов" Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПриходТовара); Конструктор.Установить("Поставщик", Поставщик); -Конструктор.Фикция("Дата"); -Конструктор.Фикция("Номер"); -Конструктор.Фикция("Склад"); -Конструктор.Фикция("Валюта"); +Конструктор.ФикцияРеквизитов("Дата, Номер, Склад, Валюта"); Конструктор.ТабличнаяЧасть("Товары"); Конструктор.ДобавитьСтроку(); Конструктор.Фикция("Товар", Новый Структура("Поставщик", Поставщик)); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 207c5b35e..25ae9d009 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -63,14 +63,36 @@ Реквизиты = Реквизиты(Контекст); ТекущаяЗапись = ТекущаяЗапись(Контекст); + ОписаниеРеквизитов = Новый Структура; Для Каждого Элемент Из Реквизиты Цикл Реквизит = Элемент.Значение; Если Реквизит.Обязательный И НЕ ТекущаяЗапись.Свойство(Реквизит.Имя) Тогда - Значение = ЮТТестовыеДанныеСлужебный.Фикция(Реквизит.Тип); - ТекущаяЗапись.Вставить(Реквизит.Имя, Значение); + ОписаниеРеквизитов.Вставить(Реквизит.Имя, Реквизит.Тип); КонецЕсли; КонецЦикла; + ФикцияРеквизитовЗаписи(ТекущаяЗапись, ОписаниеРеквизитов); + +КонецПроцедуры + +Процедура ФикцияРеквизитов(Контекст, ИменаРеквизитов) Экспорт + + ТекущаяЗапись = ТекущаяЗапись(Контекст); + ОписаниеРеквизитов = Новый Структура; + + Если ТипЗнч(ИменаРеквизитов) = Тип("Строка") Тогда + КоллекцияИменРеквизитов = ЮТСтроки.РазделитьСтроку(ИменаРеквизитов, ","); + Иначе + КоллекцияИменРеквизитов = ИменаРеквизитов; + КонецЕсли; + + Для Каждого ИмяРеквизита Из КоллекцияИменРеквизитов Цикл + Реквизит = ОписаниеРеквизита(Контекст, ИмяРеквизита); + ОписаниеРеквизитов.Вставить(ИмяРеквизита, Реквизит.Тип); + КонецЦикла; + + ФикцияРеквизитовЗаписи(ТекущаяЗапись, ОписаниеРеквизитов); + КонецПроцедуры Процедура ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти) Экспорт @@ -309,4 +331,11 @@ КонецФункции +Процедура ФикцияРеквизитовЗаписи(ТекущаяЗапись, ОписаниеРеквизитов) + + ЗначенияРеквизитов = ЮТТестовыеДанныеСлужебный.ФикцияЗначений(ОписаниеРеквизитов); + ЮТКоллекции.ДополнитьСтруктуру(ТекущаяЗапись, ЗначенияРеквизитов); + +КонецПроцедуры + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index d5fbac304..e710b2d76 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -72,6 +72,37 @@ КонецФункции +Функция ФикцияЗначений(Реквизиты, РеквизитыЗаполнения = Неопределено) Экспорт + +#Если ТонкийКлиент Тогда + НеобходимВызовСервера = Ложь; + + Для Каждого Реквизит Из Реквизиты Цикл + СодержитСсылочныйТип = ?(ТипЗнч(Реквизит.Значение) = Тип("Тип"), + ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(Реквизит.Значение), + ЮТТипыДанныхСлужебный.СодержитСсылочныйТип(Реквизит.Значение)); + Если СодержитСсылочныйТип Тогда + НеобходимВызовСервера = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если НеобходимВызовСервера Тогда + Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.ФикцияЗначений(Реквизиты, РеквизитыЗаполнения); + КонецЕсли; +#КонецЕсли + + Значения = Новый Структура; + + Для Каждого Реквизит Из Реквизиты Цикл + Значение = Фикция(Реквизит.Значение, РеквизитыЗаполнения); + Значения.Вставить(Реквизит.Ключ, Значение); + КонецЦикла; + + Возврат Значения; + +КонецФункции + #Если Не ВебКлиент Тогда // см. ЮТТестовыеДанные.НовоеИмяВременногоФайла diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index 467ef4e9b..d74e6d831 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -267,6 +267,12 @@ КонецПроцедуры +Функция ФикцияЗначений(Знач Реквизиты, Знач РеквизитыЗаполнения) Экспорт + + Возврат ЮТТестовыеДанныеСлужебный.ФикцияЗначений(Реквизиты, РеквизитыЗаполнения); + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index b0831aa6d..0cacf5e12 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -66,6 +66,18 @@ КонецФункции +Функция СодержитСсылочныйТип(ОписаниеТипов) Экспорт + + Для Каждого Тип Из ОписаниеТипов.Типы() Цикл + Если ОписаниеТиповЛюбаяСсылка().СодержитТип(Тип) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + Функция ЭтоМенеджерЗаписи(ТипЗначения) Экспорт ПредставлениеТипа = ПредставлениеТипа(ТипЗначения); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 255558290..371f511a3 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -178,7 +178,7 @@ Если НЕ ЮТФильтрацияСлужебный.ЭтоПодходящийМодуль(ОписаниеМодуля) Тогда ЮТЛогирование.Отладка(" Пропущен, не подходит под отбор"); - ИначеЕсли НЕ ЭтоТестовыйМодуль(ОписаниеМодуля) Тогда + ИначеЕсли НЕ ЭтоТестовыйМодуль(ОписаниеМодуля) Тогда ЮТЛогирование.Отладка(" Пропущен, это не тестовый модуль"); Иначе ЮТЛогирование.Отладка(" Добавлен"); @@ -196,8 +196,8 @@ // TODO Фильтрация по путям ОписаниеМодуля = Неопределено; -#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда - Если МетаданныеМодуля.КлиентОбычноеПриложение ИЛИ МетаданныеМодуля.КлиентУправляемоеПриложение Тогда +#Если ТолстыйКлиентОбычноеПриложение Тогда + Если МетаданныеМодуля.КлиентОбычноеПриложение Тогда ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля); diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/ObjectModule.bsl" index 0870bbabb..da67fc58a 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/ObjectModule.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO/ObjectModule.bsl" @@ -85,6 +85,36 @@ КонецФункции +// Устанавливает фиктивные значение реквизитов объекта. +// +// На основании типа реквизита генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для объектных типов создается новый объект +// * Для коллекций - генерируется случайно количество случайных элементов (на основании типа) +// +// Параметры: +// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми +// - Массив из Строка - Имена реквизитов объекта или табличной части +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор +Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт + + Если ТипЗнч(ИменаРеквизитов) = Тип("Строка") Тогда + КоллекцияИменРеквизитов = ЮТСтроки.РазделитьСтроку(ИменаРеквизитов, ","); + Иначе + КоллекцияИменРеквизитов = ИменаРеквизитов; + КонецЕсли; + + Для Каждого ИмяРеквизита Из КоллекцияИменРеквизитов Цикл + Фикция(ИмяРеквизита); + КонецЦикла; + + Возврат ЭтотОбъект; + +КонецФункции + // Заполняет обязательные реквизиты объекта фиктивными значениями // // На основании типа объекта определяются обязательные поля. diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" index a1196a988..83d84e198 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" @@ -90,6 +90,30 @@ КонецФункции +// Устанавливает фиктивные значения реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значения реквизитов строки табличной части. +// +// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для ссылочных типов создается новый объект +// * Для перечислений (в том числе системных) выбирается случайно значение перечисления +// +// Параметры: +// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми +// - Массив из Строка - Имена реквизитов объекта или табличной части +// +// Возвращаемое значение: +// ОбщийМодуль - Конструктор +&НаКлиенте +Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов); + Возврат ЭтотОбъект; + +КонецФункции + // Заполняет обязательные поля объекта фиктивными значениями // // Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части. diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" index 33669f14d..cb7d349be 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" @@ -86,6 +86,29 @@ КонецФункции +// Устанавливает фиктивные значения реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значения реквизитов строки табличной части. +// +// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для ссылочных типов создается новый объект +// * Для перечислений (в том числе системных) выбирается случайно значение перечисления +// +// Параметры: +// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми +// - Массив из Строка - Имена реквизитов объекта или табличной части +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор +Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов); + Возврат ЭтотОбъект; + +КонецФункции + // Заполняет обязательные поля объекта фиктивными значениями // // Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части. diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" index 2d81a4304..1831dd41a 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -31,6 +31,7 @@ .ДобавитьТест("Фикция_Типизированная") .ДобавитьТест("Фикция_ОбщийРеквизит") .ДобавитьТест("ФикцияОбязательныхПолей") + .ДобавитьТест("ФикцияРеквизитов") .ДобавитьТест("СоздатьГруппу") .ДобавитьТест("УстановитьРеквизиты") .ДобавитьТест("УстановитьСсылкуНового") @@ -284,6 +285,21 @@ .Свойство("Период").Заполнено() .Свойство("Валюта").Заполнено() .Свойство("Курс").Заполнено(); + +КонецПроцедуры + +Процедура ФикцияРеквизитов() Экспорт + + Данные = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют") + .ФикцияРеквизитов("Период, Валюта, Курс") + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Данные) + .ИмеетДлину(3) + .Свойство("Период").Заполнено() + .Свойство("Валюта").Заполнено() + .Свойство("Курс").Заполнено(); + КонецПроцедуры Процедура СоздатьГруппу() Экспорт diff --git "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/Module.bsl" "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/Module.bsl" index 996b5b20a..e68ad92ca 100644 --- "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\260XDTO_\320\234\320\236/Module.bsl" @@ -28,6 +28,7 @@ .ДобавитьТест("ФикцияНезаполненных") .ДобавитьТест("ДобавитьНовый") .ДобавитьТест("ПерейтиКВладельцу") + .ДобавитьТест("ФикцияРеквизитов") ; КонецПроцедуры @@ -164,6 +165,21 @@ КонецПроцедуры +Процедура ФикцияРеквизитов() Экспорт + + Объект = НовыйКонструктор() + .ФикцияРеквизитов("Number, Сумма, Покупатель") + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Number").Заполнено() + .Свойство("Сумма").Заполнено() + .Свойство("Покупатель").Заполнено() + ; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции