1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-01-08 13:06:32 +02:00
Мокирование методов отчета/обработки при обучении через менеджер
This commit is contained in:
alkoleft 2023-12-11 03:10:23 +03:00
parent 17f4acb909
commit 533d51d81b
8 changed files with 104 additions and 20 deletions

View File

@ -284,6 +284,11 @@
Менеджер = ЮТОбщий.Менеджер(ТипЗначения);
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипОбработкиОтчета(ТипЗначения) Тогда
Менеджер = ЮТОбщий.Менеджер(ТипЗначения);
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
КонецЕсли;
КонецЕсли;
@ -314,8 +319,10 @@
Если Описание <> Неопределено Тогда
Если Описание.ОписаниеТипа.Ссылочный Тогда
ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
Иначе
ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда
ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
ИначеЕсли Описание.ОписаниеТипа.ОбработкаОтчет Тогда
ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
КонецЕсли;
Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина);
@ -711,9 +718,9 @@
Возврат СтатистикаВызововМетода;
КонецЕсли;
Если Описание.ОписаниеТипа.Ссылочный Тогда
Если Описание.ОписаниеТипа.Ссылочный Или Описание.ОписаниеТипа.ОбработкаОтчет Тогда
ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
Иначе
ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда
ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
КонецЕсли;

View File

@ -128,7 +128,9 @@
Возврат ОписаниеОбъект;
КонецЕсли;
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
Если ОписаниеТипа.СтандартныеРеквизиты Тогда
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
КонецЕсли;
Если ОписаниеТипа.Измерения Тогда
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты, Истина);
@ -173,6 +175,9 @@
// * Конструктор - Строка
// * Группы - Булево
// * Ссылочный - Булево
// * Регистр - Булево
// * ОбработкаОтчет - Булево
// * СтандартныеРеквизиты - Булево
// * Реквизиты - Булево
// * Измерения - Булево
// * Ресурсы - Булево
@ -188,7 +193,12 @@
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
Типы = ЮТМетаданные.ТипыМетаданных();
Возврат Типы[ЧастиИмени[0]];
Если Типы.Свойство(ЧастиИмени[0]) Тогда
Возврат Типы[ЧастиИмени[0]];
Иначе
Сообщение = СтрШаблон("Получение описания для '%1' не поддреживается, либо не реализовано", ЧастиИмени[0]);
ВызватьИсключение Сообщение;
КонецЕсли;
КонецФункции
@ -212,6 +222,9 @@
Описание.Вставить("Ресурсы", Запись.Ресурсы = "+");
Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+");
Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+");
Описание.Вставить("СтандартныеРеквизиты", Запись.СтандартныеРеквизиты = "+");
Описание.Вставить("ОбработкаОтчет", Запись.Имя = "Обработка" ИЛИ Запись.Имя = "Отчет");
Описание.Вставить("Регистр", СтрНачинаетсяС(Запись.Имя, "Регистр"));
ТипыМетаданных.Вставить(Описание.Имя, Описание);
ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание);

View File

@ -118,6 +118,16 @@
КонецФункции
Функция ЭтоТипОбработкиОтчета(ТипЗначения) Экспорт
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
СтрокаОбработка = ?(ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы(), "Record manager:", "Обработка объект:");
СтрокаОтчет = ?(ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы(), "Record manager:", "Отчет объект:");
Возврат СтрНайти(ПредставлениеТипа, СтрокаОбработка) > 0 ИЛИ СтрНайти(ПредставлениеТипа, СтрокаОтчет) > 0;
КонецФункции
Функция ЭтоТипМенеджера(ТипЗначения) Экспорт
// TODO придумать другой способ определения типа

View File

@ -1,17 +1,19 @@
# Описание свойств метаданных
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти |
|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + |
| Документ | Документы | СоздатьДокумент | | + | + | | | | + |
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + |
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + |
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + |
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + |
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | |
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | |
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | |
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | |
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + |
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + |
| Перечисление | Перечисления | | | + | | | | | |
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | СтандартныеРеквизиты |
|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|----------------------|
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | + |
| Документ | Документы | СоздатьДокумент | | + | + | | | | + | + |
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | + |
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + |
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + |
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + |
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | + |
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | + |
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | + |
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | + |
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | + |
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | + |
| Перечисление | Перечисления | | | + | | | | | | + |
| Отчет | Отчеты | | | | + | | | | + | |
| Обработка | Обработки | | | | + | | | | + | |

View File

@ -32,6 +32,7 @@
.ДобавитьСерверныйТест("МокированиеЧерезСсылку")
.ДобавитьСерверныйТест("МокированиеЧерезОбъект")
.ДобавитьСерверныйТест("МокированиеМетодовРегистра")
.ДобавитьСерверныйТест("МокированиеМетодовОбработки")
;
КонецПроцедуры
@ -341,6 +342,30 @@
КонецПроцедуры
Процедура МокированиеМетодовОбработки() Экспорт
Обработка = Обработки.ПроведениеДокументов.Создать();
Обработка.ЗаполнитьСписок();
ЮТест.ОжидаетЧто(Обработка.СписокДокументов)
.Заполнено();
Мокито.Обучение(Обработки.ПроведениеДокументов)
.Когда("ЗаполнитьСписок").Пропустить()
.Прогон();
Обработка = Обработки.ПроведениеДокументов.Создать();
Обработка.ЗаполнитьСписок();
ЮТест.ОжидаетЧто(Обработка.СписокДокументов)
.НеЗаполнено("Не сработал перехват события настроенного через менеджер");
Мокито.Проверить(Обработка)
.КоличествоВызовов("ЗаполнитьСписок").Равно(1);
Мокито.Проверить(Обработки.ПроведениеДокументов)
.КоличествоВызовов("ЗаполнитьСписок").Равно(1);
КонецПроцедуры
#КонецЕсли
Процедура Прогон_НакоплениеСтатистики(НакоплениеСтатистики) Экспорт

View File

@ -54,5 +54,6 @@
<catalogs>Catalog.Встречи</catalogs>
<catalogs>Catalog.Товары</catalogs>
<documents>Document.ПриходТовара</documents>
<dataProcessors>DataProcessor.ПроведениеДокументов</dataProcessors>
<informationRegisters>InformationRegister.ЦеныТоваров</informationRegisters>
</mdclass:Configuration>

View File

@ -0,0 +1,14 @@
&Вместо("ЗаполнитьСписок")
Процедура Расш1_ЗаполнитьСписок() Экспорт
ПараметрыМетода = Новый Массив();;
ПрерватьВыполнение = Ложь;
Мокито.АнализВызова(ЭтотОбъект, "ЗаполнитьСписок", ПараметрыМетода, ПрерватьВыполнение);
Если НЕ ПрерватьВыполнение Тогда
ПродолжитьВызов();
КонецЕсли;
КонецПроцедуры

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:DataProcessor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="b692ca7c-050c-4877-96cd-f4d80d5b76d2">
<producedTypes>
<objectType typeId="b29007c7-cc82-4f54-abf4-8d0d77299bdf" valueTypeId="d4153680-ac36-4513-b2e2-e6cef9372f29"/>
<managerType typeId="d1f7a204-67bf-48b1-b4b6-b7ce9ae2a924" valueTypeId="c67f0951-a8f6-40d5-9f98-184f3cb6fef1"/>
</producedTypes>
<name>ПроведениеДокументов</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:DataProcessorExtension">
<objectModule>Extended</objectModule>
</extension>
</mdclass:DataProcessor>