Skip to content

Commit

Permalink
Добавление дымового теста на проверку макетов СКД (#375)
Browse files Browse the repository at this point in the history
* Добавление дымового теста на синтаксическую проверку макетов СКД

* Добавил все возможные метаданные

* Убрал транзакции.
  • Loading branch information
dvakor authored and artbear committed Dec 19, 2018
1 parent 2d087fa commit ae1defd
Show file tree
Hide file tree
Showing 2 changed files with 245 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5">
<ExternalDataProcessor uuid="fbc9b956-9ee2-47a5-a5c2-fba02953bf69">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId>
<xr:ObjectId>5c338ed2-4038-4fb8-b34a-3074bcd8f7af</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.тесты_ПроверкаМакетовСКД" category="Object">
<xr:TypeId>1567cdb3-b5a9-45d6-8830-5d836128e75e</xr:TypeId>
<xr:ValueId>ef68c847-d316-417d-b22f-63222cf79cfb</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>тесты_ПроверкаМакетовСКД</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тесты проверка макетов СКД</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultForm/>
<AuxiliaryForm/>
</Properties>
<ChildObjects/>
</ExternalDataProcessor>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
Перем КонтекстЯдра;
Перем Утверждения;

#Область Основные_процедуры_теста

Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонтекстЯдра = КонтекстЯдраПараметр;
Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
КонецПроцедуры

Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт

КонтекстЯдра = КонтекстЯдраПараметр;

ДобавитьОбщиеМакеты(НаборТестов);

ДобавитьМакетМетаданных(НаборТестов);

КонецПроцедуры

#Область События_юнит_тестирования

Процедура ПередЗапускомТеста() Экспорт

КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт

КонецПроцедуры

#КонецОбласти

#КонецОбласти

Процедура ТестДолжен_ПроверитьМакетСКД(ИмяМенеджера, ИмяОбьекта, ИмяМакета) Экспорт

Менеджер = МенеджерОбьектаПоИмени(ИмяМенеджера);

СхемаКомпоновкиДанных = Менеджер[ИмяОбьекта].ПолучитьМакет(СокрЛП(ИмяМакета));

ПроверитьСхемуСКД(СхемаКомпоновкиДанных);

КонецПроцедуры

Процедура ТестДолжен_ПроверитьОбщийМакетСКД(ИмяМакета) Экспорт

СхемаКомпоновкиДанных = ПолучитьОбщийМакет(ИмяМакета);

ПроверитьСхемуСКД(СхемаКомпоновкиДанных);

КонецПроцедуры

Процедура ДобавитьОбщиеМакеты(НаборТестов)

мНаборов = Новый Массив;

Для Каждого ОбщийМакет ИЗ Метаданные.ОбщиеМакеты Цикл

Если ОбщийМакет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда
Продолжить;
КонецЕсли;

мНаборов.Добавить(
Новый Структура("ИмяПроцедуры, Параметры, Представление",
"ТестДолжен_ПроверитьОбщийМакетСКД",
НаборТестов.ПараметрыТеста(ОбщийМакет.Имя),
СтрШаблон("ОбщиеМакеты: %1", ОбщийМакет.Имя)));

КонецЦикла;

Если мНаборов.Количество() > 0 Тогда

НаборТестов.НачатьГруппу("ОбщиеМакеты", Ложь);

Для Каждого Набор ИЗ мНаборов Цикл

НаборТестов.Добавить(Набор.ИмяПроцедуры, Набор.Параметры, Набор.Представление);

КонецЦикла;

КонецЕсли;

КонецПроцедуры

Процедура ДобавитьМакетМетаданных(НаборТестов)

ПроверяемыеОбъекты = ПроверяемыеМетаданные();

Для Каждого ПроверяемыйОбъект ИЗ ПроверяемыеОбъекты Цикл

мНаборов = Новый Массив;

Для Каждого ТекОбъект ИЗ Метаданные[ПроверяемыйОбъект] Цикл

ИмяМенеджера = ВРЕГ(ПроверяемыйОбъект);

Для Каждого ТекДанныеМакета ИЗ ТекОбъект.Макеты Цикл

Если ТекДанныеМакета.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.СхемаКомпоновкиДанных Тогда
Продолжить;
КонецЕсли;

мНаборов.Добавить(
Новый Структура("ИмяПроцедуры, Параметры, Представление",
"ТестДолжен_ПроверитьМакетСКД",
НаборТестов.ПараметрыТеста(ИмяМенеджера, ТекОбъект.Имя, ТекДанныеМакета.Имя),
СтрШаблон("%1: %2", ТекОбъект.Имя, ТекДанныеМакета.Имя)));

КонецЦикла;

КонецЦикла;

Если мНаборов.Количество() > 0 Тогда

НаборТестов.НачатьГруппу(ПроверяемыйОбъект, Ложь);

Для Каждого Набор ИЗ мНаборов Цикл

НаборТестов.Добавить(Набор.ИмяПроцедуры, Набор.Параметры, Набор.Представление);

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Процедура ПроверитьСхемуСКД(СхемаКомпоновкиДанных)

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных;

//Тут проходит синтаксический анализ запроса.
КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

КонецПроцедуры

Функция ПроверяемыеМетаданные()

ПроверяемыеОбъекты = Новый Массив();
ПроверяемыеОбъекты.Добавить("Справочники");
ПроверяемыеОбъекты.Добавить("Документы");
ПроверяемыеОбъекты.Добавить("Обработки");
ПроверяемыеОбъекты.Добавить("Отчеты");
ПроверяемыеОбъекты.Добавить("Перечисления");
ПроверяемыеОбъекты.Добавить("ПланыВидовХарактеристик");
ПроверяемыеОбъекты.Добавить("ПланыСчетов");
ПроверяемыеОбъекты.Добавить("ПланыВидовРасчета");
ПроверяемыеОбъекты.Добавить("РегистрыСведений");
ПроверяемыеОбъекты.Добавить("РегистрыНакопления");
ПроверяемыеОбъекты.Добавить("РегистрыБухгалтерии");
ПроверяемыеОбъекты.Добавить("РегистрыРасчета");
ПроверяемыеОбъекты.Добавить("БизнесПроцессы");
ПроверяемыеОбъекты.Добавить("Задачи");

Возврат ПроверяемыеОбъекты;

КонецФункции

Функция МенеджерОбьектаПоИмени(Знач ИмяМенеджера)

Менеджер = Неопределено;

Если ИмяМенеджера = "ПЛАНЫОБМЕНА" Тогда
Менеджер = ПланыОбмена;

ИначеЕсли ИмяМенеджера = "СПРАВОЧНИКИ" Тогда
Менеджер = Справочники;

ИначеЕсли ИмяМенеджера = "ДОКУМЕНТЫ" Тогда
Менеджер = Документы;

ИначеЕсли ИмяМенеджера = "ЖУРНАЛЫДОКУМЕНТОВ" Тогда
Менеджер = ЖурналыДокументов;

ИначеЕсли ИмяМенеджера = "ПЕРЕЧИСЛЕНИЯ" Тогда
Менеджер = Перечисления;

ИначеЕсли ИмяМенеджера = "ОТЧЕТЫ" Тогда
Менеджер = Отчеты;

ИначеЕсли ИмяМенеджера = "ОБРАБОТКИ" Тогда
Менеджер = Обработки;

ИначеЕсли ИмяМенеджера = "ПЛАНЫВИДОВХАРАКТЕРИСТИК" Тогда
Менеджер = ПланыВидовХарактеристик;

ИначеЕсли ИмяМенеджера = "ПЛАНЫСЧЕТОВ" Тогда
Менеджер = ПланыСчетов;

ИначеЕсли ИмяМенеджера = "ПЛАНЫВИДОВРАСЧЕТА" Тогда
Менеджер = ПланыВидовРасчета;

ИначеЕсли ИмяМенеджера = "РЕГИСТРЫСВЕДЕНИЙ" Тогда
Менеджер = РегистрыСведений;

ИначеЕсли ИмяМенеджера = "РЕГИСТРЫНАКОПЛЕНИЯ" Тогда
Менеджер = РегистрыНакопления;

ИначеЕсли ИмяМенеджера = "РЕГИСТРЫБУХГАЛТЕРИИ" Тогда
Менеджер = РегистрыБухгалтерии;

ИначеЕсли ИмяМенеджера = "РЕГИСТРЫРАСЧЕТА" Тогда
Менеджер = РегистрыРасчета;

ИначеЕсли ИмяМенеджера = "БИЗНЕСПРОЦЕССЫ" Тогда
Менеджер = БизнесПроцессы;

ИначеЕсли ИмяМенеджера = "ЗАДАЧИ" Тогда
Менеджер = Задачи;

КонецЕсли;

Возврат Менеджер;
КонецФункции

0 comments on commit ae1defd

Please sign in to comment.