1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-01-05 12:50:36 +02:00

Merge pull request #268 from bia-technologies/feature/246

#246 / Получение случайного предопределенного значения
This commit is contained in:
Koryakin Aleksey 2024-02-29 20:19:19 +03:00 committed by GitHub
commit 38d6ad1072
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 124 additions and 12 deletions

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 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.
@ -200,6 +200,12 @@
КонецФункции
Функция НовыйОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля) Экспорт
Возврат ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля);
КонецФункции
// Возвращает коллекцию движений документа
//
// Параметры:

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 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.
@ -52,6 +52,7 @@
ТипЗначения = ТипЗнч(Значение);
Если ТипЗначения = Тип("Структура") И ЭтоОписаниеОбъектаМетаданных(Значение) Тогда
//@skip-check constructor-function-return-section
Возврат Значение;
КонецЕсли;
@ -70,13 +71,23 @@
Если ТипЗначения = ТипТип Тогда
ИдентификаторТипа = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Значение); // Для работы кэширования
//@skip-check constructor-function-return-section
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа);
Иначе
//@skip-check constructor-function-return-section
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданных(Значение);
КонецЕсли;
КонецФункции
Функция НормализованноеИмяТаблицы(Значение) Экспорт
Описание = ОписаниеОбъектаМетаданных(Значение);
Возврат СтрШаблон("%1.%2", Описание.ОписаниеТипа.Имя, Описание.Имя);
КонецФункции
Функция ЭтоОписаниеОбъектаМетаданных(Параметры) Экспорт
Возврат ЮТОбщий.ЭтаСтруктураИмеетТип(Параметры, "ОписаниеОбъектаМетаданных");

View File

@ -863,7 +863,7 @@
Функция НеподдерживаемыйПараметрМетода(ИмяМетода, ЗначениеПараметра) Экспорт
Возврат СтрШаблон("Неподдерживаемый параметры метода `%1` `%2`(%3)", ИмяМетода, ЗначениеПараметра, ТипЗнч(ЗначениеПараметра));
Возврат СтрШаблон("Неподдерживаемый параметр метода `%1` `%2`(%3)", ИмяМетода, ЗначениеПараметра, ТипЗнч(ЗначениеПараметра));
КонецФункции

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 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.
@ -315,12 +315,24 @@
#Область СлужебныеПроцедурыИФункции
// Инициализирует конструктор предиката
// Параметры:
// Условия - Структура, Соответствие из Произвольный - Набор условий, которыми инициализируется предикат
// Ключ - Строка - Имя реквизита
// Значение - Произвольный - Значение, которому должен быть равен реквизит
//
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция Инициализировать() Экспорт
Функция Инициализировать(Условия = Неопределено) Экспорт
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст());
Если ЗначениеЗаполнено(Условия) Тогда
Для Каждого Элемент Из Условия Цикл
Реквизит(Элемент.Ключ).Равно(Элемент.Значение);
КонецЦикла;
КонецЕсли;
Возврат ЮТПредикаты;
КонецФункции

View File

@ -309,6 +309,21 @@
КонецФункции
// Возвращает случайное предопреленное значения объекта конфигурации.
//
// Параметры:
// Менеджер - Строка - Имя менеджера. Примеры: "Справочники.ВидыЦен", "Справочник.ВидыЦен"
// - Произвольный - Менеджер объекта метаданных. Примеры: Справочники.ВидыЦен
// Отбор - Структура, Соответствие из Произвольный - Отбора поиска предопределенных значений (сравнение на равенство)
//
// Возвращаемое значение:
// ПеречислениеСсылка
Функция СлучайноеПредопределенноеЗначение(Менеджер, Отбор = Неопределено) Экспорт
Возврат ЮТТестовыеДанныеВызовСервера.СлучайноеПредопределенноеЗначение(Менеджер, Отбор);
КонецФункции
// Возвращает случайный номер телефона.
//
// Параметры:
@ -526,8 +541,8 @@
// * При использовании на клиенте все значения должны быть сериализуемыми.
//
// Параметры:
// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров
//
// Менеджер - Строка - Имя менеджера. Примеры: "Справочники.Товары", "Документы.ПриходТоваров"
// - Произвольный - Менеджер объекта метаданных. Примеры: Справочники.Товары, Документы.ПриходТоваров
// Возвращаемое значение:
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных
Функция КонструкторОбъекта(Менеджер) Экспорт

View File

@ -201,6 +201,29 @@
КонецФункции
Функция СлучайноеПредопределенноеЗначение(Менеджер, Отбор) Экспорт
ИмяТаблицы = ЮТМетаданные.НормализованноеИмяТаблицы(Менеджер);
Условия = ЮТест.Предикат(Отбор)
.Реквизит("Предопределенный").Равно(Истина);
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Условия, "Ссылка");
Данные = ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса);
Если Данные.Количество() = 1 Тогда
Значение = Данные[0].Ссылка;
ИначеЕсли Данные.Количество() > 1 Тогда
Индекс = ЮТест.Данные().СлучайноеЧисло(0, Данные.Количество() - 1);
Значение = Данные[Индекс].Ссылка;
Иначе
Значение = Неопределено;
КонецЕсли;
Возврат Значение;
КонецФункции
Процедура УстановитьЗначенияРеквизитов(Знач Ссылка, Знач ЗначенияРеквизитов, Знач ПараметрыЗаписи = Неопределено) Экспорт
Объект = Ссылка.ПолучитьОбъект();

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 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.
@ -61,11 +61,16 @@
// Возвращает API для формирования предикатов/утверждений, которые могут быть использованы для проверки коллекций.
//
// Параметры:
// Условия - Структура, Соответствие из Произвольный - Набор условий, которыми инициализируется предикат
// Ключ - Строка - Имя реквизита
// Значение - Произвольный - Значение, которому должен быть равен реквизит
//
// Возвращаемое значение:
// ОбщийМодуль - см. ЮТПредикаты.
Функция Предикат() Экспорт
// ОбщийМодуль - См. ЮТПредикаты.
Функция Предикат(Условия = Неопределено) Экспорт
Возврат ЮТПредикаты.Инициализировать();
Возврат ЮТПредикаты.Инициализировать(Условия);
КонецФункции

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 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.
@ -23,6 +23,7 @@
ЮТТесты
.ДобавитьТест("ОписаниеОбъектаМетаданных")
.ДобавитьТест("РегистрыДвиженийДокумента")
.ДобавитьТест("НормализованноеИмяТаблицы")
;
КонецПроцедуры
@ -71,6 +72,30 @@
КонецПроцедуры
Процедура НормализованноеИмяТаблицы() Экспорт
Варианты = ЮТОбщий.ЗначениеВМассиве("Справочник.Банки", "Справочники.Банки", ПредопределенноеЗначение("Справочник.Банки.ПустаяСсылка"));
#Если Сервер Тогда
Варианты.Добавить(Справочники.Банки);
Варианты.Добавить(Справочники.Банки.СоздатьЭлемент());
#КонецЕсли
Для Каждого Вариант Из Варианты Цикл
Описание = СтрШаблон("%1 (%2)", Вариант, ТипЗнч(Вариант));
ФактическоеЗначение = ЮТМетаданные.НормализованноеИмяТаблицы(Вариант);
ЮТест.ОжидаетЧто(ФактическоеЗначение, Описание).Равно("Справочник.Банки");
КонецЦикла;
ЮТест.ОжидаетЧто(ЮТМетаданные)
.Метод("НормализованноеИмяТаблицы").Параметр("123")
.ВыбрасываетИсключение("Неподдерживаемый параметр метода");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@ -47,6 +47,7 @@
.СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки"))
.СПараметрами(Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)))
.СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки, ДокументСсылка.Заказ"))
.ДобавитьТест("СлучайноеПредопределенноеЗначение")
;
КонецПроцедуры
@ -516,4 +517,18 @@
КонецПроцедуры
Процедура СлучайноеПредопределенноеЗначение() Экспорт
ОжидаемоеЗначение = ПредопределенноеЗначение("Справочник.ВидыЦен.Закупочная");
Значение = ЮТест.Данные().СлучайноеПредопределенноеЗначение("Справочники.ВидыЦен");
ЮТест.ОжидаетЧто(Значение).Равно(ОжидаемоеЗначение);
Значение = ЮТест.Данные().СлучайноеПредопределенноеЗначение("Справочники.ВидыЦен", Новый Структура("ПометкаУдаления", Ложь));
ЮТест.ОжидаетЧто(Значение).Равно(ОжидаемоеЗначение);
Значение = ЮТест.Данные().СлучайноеПредопределенноеЗначение("Справочники.ВидыЦен", Новый Структура("ПометкаУдаления", Истина));
ЮТест.ОжидаетЧто(Значение).Равно(Неопределено);
КонецПроцедуры
#КонецОбласти