From 533d51d81b512a23a73231353cd584fd860ab038 Mon Sep 17 00:00:00 2001 From: alkoleft Date: Mon, 11 Dec 2023 03:10:23 +0300 Subject: [PATCH] #217 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Мокирование методов отчета/обработки при обучении через менеджер --- .../CommonModules/МокитоСлужебный/Module.bsl | 13 ++++++-- .../ЮТМетаданныеСервер/Module.bsl | 17 ++++++++-- .../ЮТТипыДанныхСлужебный/Module.bsl | 10 ++++++ .../ЮТОписаниеМетаданных/Template.txt | 32 ++++++++++--------- tests/src/CommonModules/ОМ_Мокито/Module.bsl | 25 +++++++++++++++ tests/src/Configuration/Configuration.mdo | 1 + .../ПроведениеДокументов/ObjectModule.bsl | 14 ++++++++ .../ПроведениеДокументов.mdo | 12 +++++++ 8 files changed, 104 insertions(+), 20 deletions(-) create mode 100644 tests/src/DataProcessors/ПроведениеДокументов/ObjectModule.bsl create mode 100644 tests/src/DataProcessors/ПроведениеДокументов/ПроведениеДокументов.mdo diff --git a/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl index 3fb74cec..0618ebe1 100644 --- a/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl +++ b/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl @@ -284,6 +284,11 @@ Менеджер = ЮТОбщий.Менеджер(ТипЗначения); ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер]; + ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипОбработкиОтчета(ТипЗначения) Тогда + + Менеджер = ЮТОбщий.Менеджер(ТипЗначения); + ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер]; + КонецЕсли; КонецЕсли; @@ -314,8 +319,10 @@ Если Описание <> Неопределено Тогда Если Описание.ОписаниеТипа.Ссылочный Тогда ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя)); - Иначе + ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя)); + ИначеЕсли Описание.ОписаниеТипа.ОбработкаОтчет Тогда + ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя)); КонецЕсли; Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина); @@ -711,9 +718,9 @@ Возврат СтатистикаВызововМетода; КонецЕсли; - Если Описание.ОписаниеТипа.Ссылочный Тогда + Если Описание.ОписаниеТипа.Ссылочный Или Описание.ОписаниеТипа.ОбработкаОтчет Тогда ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя)); - Иначе + ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя)); КонецЕсли; diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl index 8662905b..41590d31 100644 --- a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl @@ -128,7 +128,9 @@ Возврат ОписаниеОбъект; КонецЕсли; - ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период"); + Если ОписаниеТипа.СтандартныеРеквизиты Тогда + ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период"); + КонецЕсли; Если ОписаниеТипа.Измерения Тогда ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты, Истина); @@ -173,6 +175,9 @@ // * Конструктор - Строка // * Группы - Булево // * Ссылочный - Булево +// * Регистр - Булево +// * ОбработкаОтчет - Булево +// * СтандартныеРеквизиты - Булево // * Реквизиты - Булево // * Измерения - Булево // * Ресурсы - Булево @@ -188,7 +193,12 @@ ЧастиИмени = СтрРазделить(ПолноеИмя, "."); Типы = ЮТМетаданные.ТипыМетаданных(); - Возврат Типы[ЧастиИмени[0]]; + Если Типы.Свойство(ЧастиИмени[0]) Тогда + Возврат Типы[ЧастиИмени[0]]; + Иначе + Сообщение = СтрШаблон("Получение описания для '%1' не поддреживается, либо не реализовано", ЧастиИмени[0]); + ВызватьИсключение Сообщение; + КонецЕсли; КонецФункции @@ -212,6 +222,9 @@ Описание.Вставить("Ресурсы", Запись.Ресурсы = "+"); Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+"); Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+"); + Описание.Вставить("СтандартныеРеквизиты", Запись.СтандартныеРеквизиты = "+"); + Описание.Вставить("ОбработкаОтчет", Запись.Имя = "Обработка" ИЛИ Запись.Имя = "Отчет"); + Описание.Вставить("Регистр", СтрНачинаетсяС(Запись.Имя, "Регистр")); ТипыМетаданных.Вставить(Описание.Имя, Описание); ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание); diff --git a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl index 7032d9d4..55349443 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl @@ -118,6 +118,16 @@ КонецФункции +Функция ЭтоТипОбработкиОтчета(ТипЗначения) Экспорт + + ПредставлениеТипа = ПредставлениеТипа(ТипЗначения); + СтрокаОбработка = ?(ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы(), "Record manager:", "Обработка объект:"); + СтрокаОтчет = ?(ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы(), "Record manager:", "Отчет объект:"); + + Возврат СтрНайти(ПредставлениеТипа, СтрокаОбработка) > 0 ИЛИ СтрНайти(ПредставлениеТипа, СтрокаОтчет) > 0; + +КонецФункции + Функция ЭтоТипМенеджера(ТипЗначения) Экспорт // TODO придумать другой способ определения типа diff --git a/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt index b8c822dd..a8b33dbb 100644 --- a/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt +++ b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt @@ -1,17 +1,19 @@ # Описание свойств метаданных -| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | -|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------| -| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | -| Документ | Документы | СоздатьДокумент | | + | + | | | | + | -| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | -| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | -| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | -| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | -| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | -| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | -| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | -| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | -| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | -| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | -| Перечисление | Перечисления | | | + | | | | | | +| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | СтандартныеРеквизиты | +|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|----------------------| +| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | + | +| Документ | Документы | СоздатьДокумент | | + | + | | | | + | + | +| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | + | +| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + | +| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + | +| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + | +| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | + | +| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | + | +| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | + | +| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | + | +| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | + | +| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | + | +| Перечисление | Перечисления | | | + | | | | | | + | +| Отчет | Отчеты | | | | + | | | | + | | +| Обработка | Обработки | | | | + | | | | + | | diff --git a/tests/src/CommonModules/ОМ_Мокито/Module.bsl b/tests/src/CommonModules/ОМ_Мокито/Module.bsl index 98dfc611..f919347a 100644 --- a/tests/src/CommonModules/ОМ_Мокито/Module.bsl +++ b/tests/src/CommonModules/ОМ_Мокито/Module.bsl @@ -32,6 +32,7 @@ .ДобавитьСерверныйТест("МокированиеЧерезСсылку") .ДобавитьСерверныйТест("МокированиеЧерезОбъект") .ДобавитьСерверныйТест("МокированиеМетодовРегистра") + .ДобавитьСерверныйТест("МокированиеМетодовОбработки") ; КонецПроцедуры @@ -341,6 +342,30 @@ КонецПроцедуры +Процедура МокированиеМетодовОбработки() Экспорт + + Обработка = Обработки.ПроведениеДокументов.Создать(); + Обработка.ЗаполнитьСписок(); + ЮТест.ОжидаетЧто(Обработка.СписокДокументов) + .Заполнено(); + + Мокито.Обучение(Обработки.ПроведениеДокументов) + .Когда("ЗаполнитьСписок").Пропустить() + .Прогон(); + + Обработка = Обработки.ПроведениеДокументов.Создать(); + + Обработка.ЗаполнитьСписок(); + + ЮТест.ОжидаетЧто(Обработка.СписокДокументов) + .НеЗаполнено("Не сработал перехват события настроенного через менеджер"); + + Мокито.Проверить(Обработка) + .КоличествоВызовов("ЗаполнитьСписок").Равно(1); + Мокито.Проверить(Обработки.ПроведениеДокументов) + .КоличествоВызовов("ЗаполнитьСписок").Равно(1); +КонецПроцедуры + #КонецЕсли Процедура Прогон_НакоплениеСтатистики(НакоплениеСтатистики) Экспорт diff --git a/tests/src/Configuration/Configuration.mdo b/tests/src/Configuration/Configuration.mdo index caaa2999..dc9fefa6 100644 --- a/tests/src/Configuration/Configuration.mdo +++ b/tests/src/Configuration/Configuration.mdo @@ -54,5 +54,6 @@ Catalog.Встречи Catalog.Товары Document.ПриходТовара + DataProcessor.ПроведениеДокументов InformationRegister.ЦеныТоваров diff --git a/tests/src/DataProcessors/ПроведениеДокументов/ObjectModule.bsl b/tests/src/DataProcessors/ПроведениеДокументов/ObjectModule.bsl new file mode 100644 index 00000000..3336a3f0 --- /dev/null +++ b/tests/src/DataProcessors/ПроведениеДокументов/ObjectModule.bsl @@ -0,0 +1,14 @@ + +&Вместо("ЗаполнитьСписок") +Процедура Расш1_ЗаполнитьСписок() Экспорт + + ПараметрыМетода = Новый Массив();; + + ПрерватьВыполнение = Ложь; + Мокито.АнализВызова(ЭтотОбъект, "ЗаполнитьСписок", ПараметрыМетода, ПрерватьВыполнение); + + Если НЕ ПрерватьВыполнение Тогда + ПродолжитьВызов(); + КонецЕсли; + +КонецПроцедуры diff --git a/tests/src/DataProcessors/ПроведениеДокументов/ПроведениеДокументов.mdo b/tests/src/DataProcessors/ПроведениеДокументов/ПроведениеДокументов.mdo new file mode 100644 index 00000000..d43c0ffe --- /dev/null +++ b/tests/src/DataProcessors/ПроведениеДокументов/ПроведениеДокументов.mdo @@ -0,0 +1,12 @@ + + + + + + + ПроведениеДокументов + Adopted + + Extended + +