Skip to content

Commit

Permalink
add Тесты_ПроверкаАвтоРегистрацииПлановОбмена (#807)
Browse files Browse the repository at this point in the history
  • Loading branch information
SidnevAV authored Nov 7, 2020
1 parent cd24dbb commit a71d913
Show file tree
Hide file tree
Showing 6 changed files with 388 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?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.4">
<ExternalDataProcessor uuid="7abb4e0d-97e0-45ee-affc-11fa9d3be324">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId>
<xr:ObjectId>0c32756f-68ca-4b55-9a9f-f3b415ad0b72</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.Тесты_ПроверкаАвтоРегистрацииПлановОбмена" category="Object">
<xr:TypeId>374454b4-1df5-4b67-9e85-800ed93937ff</xr:TypeId>
<xr:ValueId>95383c60-00b2-4dc5-af00-0832ae567804</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>ExternalDataProcessor.Тесты_ПроверкаАвтоРегистрацииПлановОбмена.Form.Форма</DefaultForm>
<AuxiliaryForm/>
</Properties>
<ChildObjects>
<Attribute uuid="4cbb1eb0-0bd1-44d1-9ff7-c92b90cd091c">
<Properties>
<Name>Настройки</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройки</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type/>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Form>Форма</Form>
</ChildObjects>
</ExternalDataProcessor>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?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.4">
<Form uuid="c9a04ab9-402f-4b06-afc5-8bb84fba3f69">
<Properties>
<Name>Форма</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PersonalComputer</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobileDevice</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" 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: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.4">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.Тесты_ПроверкаАвтоРегистрацииПлановОбмена</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
</Attributes>
</Form>
Original file line number Diff line number Diff line change
@@ -0,0 +1,272 @@
#Область ОписаниеПеременных

&НаКлиенте
Перем КонтекстЯдра;
&НаКлиенте
Перем Утверждения;
&НаКлиенте
Перем СтроковыеУтилиты;
&НаКлиенте
Перем ПрефиксОбъектов;
&НаКлиенте
Перем ОтборПоПрефиксу;
&НаКлиенте
Перем ВыводитьИсключения;
&НаКлиенте
Перем ИсключенияИзПроверок;

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

#Область ИнтерфейсТестирования

&НаКлиенте
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт

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

ПутьНастройки = ИмяТеста();
Настройки(КонтекстЯдра, ПутьНастройки);

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

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

Если Не ВыполнятьТест(КонтекстЯдра) Тогда
Возврат;
КонецЕсли;

мПланыОбмена = ПланыОбмена(ПрефиксОбъектов, ОтборПоПрефиксу);

Для Каждого ПланОбмена Из мПланыОбмена Цикл
Если Не ВыводитьИсключения Тогда
МассивТестов = УбратьИсключения(ПланОбмена.Ключ, ПланОбмена.Значение);
Иначе
МассивТестов = ПланОбмена.Значение;
КонецЕсли;
Если МассивТестов.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
НаборТестов.НачатьГруппу(ПланОбмена.Ключ, Ложь);
Для Каждого Элемент Из МассивТестов Цикл
НаборТестов.Добавить(
"ТестДолжен_ПроверитьАвтоРегистрацииПланаОбмена",
НаборТестов.ПараметрыТеста(ПланОбмена.Ключ, Элемент.ПолноеИмя, Элемент.АвтоРегистрация),
КонтекстЯдра.СтрШаблон_("%1 [%2]", Элемент.Имя, НСтр("ru = 'Проверка авторегистрации планов обмена'")));
КонецЦикла;
КонецЦикла;

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

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

#Область РаботаСНастройками

&НаКлиенте
Процедура Настройки(КонтекстЯдра, Знач ПутьНастройки)

Если ЗначениеЗаполнено(Объект.Настройки) Тогда
Возврат;
КонецЕсли;

ВыводитьИсключения = Истина;
ОтборПоПрефиксу = Ложь;
ПрефиксОбъектов = "";
ИсключенияИзПроверок = Новый Соответствие;
ПлагинНастроек = КонтекстЯдра.Плагин("Настройки");
Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки);
Настройки = Объект.Настройки;

Если Не ЗначениеЗаполнено(Настройки) Тогда
Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено);
Возврат;
КонецЕсли;

Если Настройки.Свойство("Префикс") Тогда
ПрефиксОбъектов = ВРег(Настройки.Префикс);
КонецЕсли;

Если Настройки.Свойство("ОтборПоПрефиксу") Тогда
ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу;
КонецЕсли;

Если Настройки.Свойство("ВыводитьИсключения") Тогда
ВыводитьИсключения = Настройки.ВыводитьИсключения;
КонецЕсли;

Если Настройки.Свойство("ИсключенияИзпроверок") Тогда
ИсключенияИзПроверок(Настройки);
КонецЕсли;

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

&НаКлиенте
Процедура ИсключенияИзПроверок(Настройки)

Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл
Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл
ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина);
КонецЦикла;
КонецЦикла;

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

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

#Область Тесты

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

ПропускатьТест = ПропускатьТест(ПланОбмена, ПолноеИмяМетаданных);
Результат = (АвтоРегистрация = "Запретить");

Если Не Результат И ПропускатьТест.Пропустить Тогда
Утверждения.ПропуститьТест(ПропускатьТест.ТекстСообщения);
Иначе
Утверждения.Проверить(Результат = Истина, ТекстСообщения(ПланОбмена, ПолноеИмяМетаданных));
КонецЕсли;

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

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

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Функция ПропускатьТест(ПланОбмена, ПолноеИмяМетаданных)

Результат = Новый Структура;
Результат.Вставить("ТекстСообщения", "");
Результат.Вставить("Пропустить", Ложь);

Если ИсключенИзПроверок(ПланОбмена, ПолноеИмяМетаданных) Тогда
ШаблонСообшения = НСтр("ru = 'Объект ""%1"" исключен из проверки'");
Результат.ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообшения, ПолноеИмяМетаданных);
Результат.Пропустить = Истина;
Возврат Результат;
КонецЕсли;

Возврат Результат;

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

&НаКлиенте
Функция ИсключенИзПроверок(ПланОбмена, ПолноеИмяМетаданных)

Результат = Ложь;
МассивСтрокИмени = СтроковыеУтилиты.РазложитьСтрокуВМассивПодстрок(ПланОбмена, ".");
ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.%2", МассивСтрокИмени[1], ПолноеИмяМетаданных);
ИслючениеВсехОбъектов = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1.*", МассивСтрокИмени[0]);

Если ИсключенияИзПроверок.Получить(ВРег(ИмяТеста)) <> Неопределено
Или ИсключенияИзПроверок.Получить(ВРег(ИслючениеВсехОбъектов)) <> Неопределено Тогда
Результат = Истина;
КонецЕсли;

Возврат Результат;

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

&НаКлиенте
Функция УбратьИсключения(ПланОбмена, МассивТестов)

Исключения = Новый Соответствие;
Результат = Новый Массив;

Для Каждого Тест Из МассивТестов Цикл
Если ИсключенИзПроверок(ПланОбмена, Тест.ПолноеИмя) Тогда
Исключения.Вставить(Тест, Истина);
КонецЕсли;
КонецЦикла;

Для Каждого Тест Из МассивТестов Цикл
Если Исключения.Получить(Тест) = Истина Тогда
Продолжить;
КонецЕсли;
Результат.Добавить(Тест);
КонецЦикла;

Возврат Результат;

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

&НаКлиенте
Функция ТекстСообщения(ПланОбмена, ПолноеИмяМетаданных)

ШаблонСообщения = НСтр("ru = 'Для объекта ""%1"" в плане обмена %2 включена авторегистрация.'");
ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(
ШаблонСообщения, ПолноеИмяМетаданных, ПланОбмена);

Возврат ТекстСообщения;

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

&НаСервереБезКонтекста
Функция ПланыОбмена(ПрефиксОбъектов, ОтборПоПрефиксу)

СтроковыеУтилиты = СтроковыеУтилиты();
мПланыОбмена = Новый Соответствие;

Для Каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл
мПланыОбмена.Вставить(ПланОбмена.ПолноеИмя(), Новый Массив);
КонецЦикла;

Для Каждого ПланОбмена Из мПланыОбмена Цикл

ПланОбменаМетаданные = Метаданные.НайтиПоПолномуИмени(ПланОбмена.Ключ);
Если ОтборПоПрефиксу И СтрНайти(ВРег(ПланОбмена.Ключ), ПрефиксОбъектов) = 0 Тогда
Продолжить;
КонецЕсли;

Для Каждого ЭлементСостава Из ПланОбменаМетаданные.Состав Цикл
СтруктураЭлемента = Новый Структура;
СтруктураЭлемента.Вставить("ПолноеИмя", ЭлементСостава.Метаданные.ПолноеИмя());
ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(
"%1.%2",
ПланОбменаМетаданные.Имя,
ЭлементСостава.Метаданные.ПолноеИмя());
СтруктураЭлемента.Вставить("Имя", ИмяТеста);
СтруктураЭлемента.Вставить("АвтоРегистрация", Строка(ЭлементСостава.АвтоРегистрация));
ПланОбмена.Значение.Добавить(СтруктураЭлемента);
КонецЦикла;

КонецЦикла;

Возврат мПланыОбмена;

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

&НаСервереБезКонтекста
Функция СтроковыеУтилиты()
Возврат ВнешниеОбработки.Создать("СтроковыеУтилиты");
КонецФункции

&НаСервере
Функция ИмяТеста()
Возврат РеквизитФормыВЗначение("Объект").Метаданные().Имя;
КонецФункции

&НаКлиенте
Функция ВыполнятьТест(КонтекстЯдра)

ВыполнятьТест = Истина;
ПутьНастройки = ИмяТеста();
Настройки(КонтекстЯдра, ПутьНастройки);
Настройки = Объект.Настройки;

Если Не ЗначениеЗаполнено(Настройки) Тогда
Возврат ВыполнятьТест;
КонецЕсли;

Если ТипЗнч(Настройки) = Тип("Структура") И Настройки.Свойство("Используется") Тогда
ВыполнятьТест = Настройки.Используется;
КонецЕсли;

Возврат ВыполнятьТест;

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

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

0 comments on commit a71d913

Please sign in to comment.