Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix smoketest Тесты_ПроверкаРеквизитовДокументовКомментарийОтветственный #816

Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тесты "Проверка реквизитов документов: комментарий, ответственный "</v8:content>
<v8:content>Тесты "Проверка реквизитов документов: комментарий, ответственный"</v8:content>
</v8:item>
</Synonym>
<Comment/>
Expand Down Expand Up @@ -56,6 +56,44 @@
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="dfd56ec7-5ec5-41cc-bce3-ad49a895f786">
<Properties>
<Name>ИмяТеста</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя теста</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>250</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@
Перем ПрефиксОбъектов;
&НаКлиенте
Перем ИсключенияИзПроверок;
&НаКлиенте
Перем ВыводитьИсключения;
&НаКлиенте
Перем ИмяТипаКомментарий;
&НаКлиенте
Перем ИмяТипаОтветственный;
&НаКлиенте
Перем ПропускатьОбъектыСПрефиксомУдалить;

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

Expand All @@ -24,23 +32,33 @@
Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты");

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

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

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

Инициализация(КонтекстЯдраПараметр);

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

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

КонецПроцедуры
Expand All @@ -57,7 +75,11 @@
КонецЕсли;

ОтборПоПрефиксу = Ложь;
ВыводитьИсключения = Ложь;
ПрефиксОбъектов = "";
ИмяТипаКомментарий = "";
ИмяТипаОтветственный = "";
ПропускатьОбъектыСПрефиксомУдалить = Ложь;
ИсключенияИзПроверок = Новый Соответствие;
ПлагинНастроек = КонтекстЯдра.Плагин("Настройки");
Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки);
Expand All @@ -67,16 +89,32 @@
Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено);
Возврат;
КонецЕсли;

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

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

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

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

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

Если Настройки.Свойство(ИмяТеста()) И Настройки[ИмяТеста()].Свойство("ОтборПоПрефиксу") Тогда
ОтборПоПрефиксу = Настройки[ИмяТеста()].ОтборПоПрефиксу;
Если Настройки.Свойство("ПропускатьОбъектыСПрефиксомУдалить") Тогда
ПропускатьОбъектыСПрефиксомУдалить = Настройки.ПропускатьОбъектыСПрефиксомУдалить;
КонецЕсли;

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

Expand All @@ -85,7 +123,7 @@
&НаКлиенте
Процедура ИсключенияИзПроверок(Настройки)

Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки[ИмяТеста()].ИсключенияИзпроверок Цикл
Для Каждого ИсключенияИзПроверокПоОбъектам Из Настройки.ИсключенияИзпроверок Цикл
Для Каждого ИсключениеИзПроверок Из ИсключенияИзПроверокПоОбъектам.Значение Цикл
ИсключенияИзПроверок.Вставить(ВРег(ИсключенияИзПроверокПоОбъектам.Ключ + "." + ИсключениеИзПроверок), Истина);
КонецЦикла;
Expand All @@ -102,7 +140,9 @@

ПропускатьТест = ПропускатьТест(ПолноеИмяДокумента);

Результат = ПроверитьРеквизитыДокументовКомментарийОтветственный(ИмяДокумента);
Результат = ПроверитьРеквизитыДокументовКомментарийОтветственный(
ИмяДокумента, ИмяТипаКомментарий, ИмяТипаОтветственный);

Если Результат <> "" И ПропускатьТест.Пропустить Тогда
Утверждения.ПропуститьТест(ПропускатьТест.ТекстСообщения);
Иначе
Expand All @@ -112,22 +152,38 @@
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьРеквизитыДокументовКомментарийОтветственный(ИмяДокумента)
Функция ПроверитьРеквизитыДокументовКомментарийОтветственный(ИмяДокумента, ИмяТипаКомментарий, ИмяТипаОтветственный)

Документ = Метаданные.Документы.Найти(ИмяДокумента);
Результат = "";
СтроковыеУтилиты = СтроковыеУтилиты();

Если Документ.Реквизиты.Найти("Комментарий") = Неопределено Тогда
Разделитель = ?(ЗначениеЗаполнено(Результат), ",", "");
ШаблонСообщения = НСтр("ru = '%1%2 комментарий'");
Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат, Разделитель);
РеквизитКомментарий = Документ.Реквизиты.Найти("Комментарий");
Если РеквизитКомментарий = Неопределено Тогда
ШаблонСообщения = НСтр("ru = '%1%2 не указан реквизит ""Комментарий""'");
ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения)
КонецЕсли;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Предлагаю сразу пропускать тест, если у документа нет реквизита Комментарий

сейчас, если я правильно понимаю, будет выдана ошибка, что неверно.

не во всех документах есть этот реквизит.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

готово

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

Если Документ.Реквизиты.Найти("Ответственный") = Неопределено Тогда
Разделитель = ?(ЗначениеЗаполнено(Результат), ",", "");
ШаблонСообщения = НСтр("ru = '%1%2 ответственный'");
Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат, Разделитель);
РеквизитОтветственный = Документ.Реквизиты.Найти("Ответственный");
Если РеквизитОтветственный = Неопределено Тогда
ШаблонСообщения = НСтр("ru = '%1%2 не указан реквизит ""Ответственный""'");
ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения)
КонецЕсли;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

аналогично пропускать по реквизиту Ответственный.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

готово

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

Возврат Результат;
Expand All @@ -138,6 +194,12 @@

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

&НаСервереБезКонтекста
Процедура ДобавитьСообщениеВРезультат(СтроковыеУтилиты, Результат, ШаблонСообщения)
Разделитель = ?(ЗначениеЗаполнено(Результат), ";", "");
Результат = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат, Разделитель);
КонецПроцедуры

&НаКлиенте
Функция ПропускатьТест(ИмяДокумента)

Expand All @@ -151,6 +213,13 @@
Результат.Пропустить = Истина;
Возврат Результат;
КонецЕсли;

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

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

Expand All @@ -159,39 +228,86 @@
&НаКлиенте
Функция ТекстСообщения(ИмяДокумента, Результат)

ШаблонСообщения = НСтр("ru = 'Для документа ""%1"" не указаны реквизиты:%2.'");
ШаблонСообщения = НСтр("ru = 'Для документа ""%1"":%2.'");
ТекстСообщения = СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИмяДокумента, Результат);

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

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

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

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

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

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

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

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

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

Результат = Ложь;
ИмяТеста = ПолноеИмяМетаданных;
ИслючениеВсехОбъектов = "Документ.*";

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

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

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

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

&НаСервере
&НаКлиенте
Функция ИмяТеста()

Если Не ЗначениеЗаполнено(Объект.ИмяТеста) Тогда
Объект.ИмяТеста = ИмяТестаНаСервере();
КонецЕсли;

Возврат Объект.ИмяТеста;

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

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

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

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

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

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

Возврат ВыполнятьТест;
Expand Down Expand Up @@ -226,7 +342,7 @@
КонецЕсли;

ДлинаПрефикса = СтрДлина(Префикс);
Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), ВРег(Префикс)) > 0;
Возврат СтрНайти(ВРег(Лев(Имя, ДлинаПрефикса)), Префикс) > 0;

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

Expand Down
Loading