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

Переделан тест тесты_ЗаписьЭлементовСправочников #1119

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
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
4 changes: 3 additions & 1 deletion tests/smoke/smoke.bsp.json
Original file line number Diff line number Diff line change
Expand Up @@ -333,10 +333,12 @@
]
},

"ЗаписьЭлементовСправочников":{
"Тесты_ЗаписьЭлементовСправочников":{
"Используется" : true,
"ОтборПоПрефиксу" : false,
"КоличествоПервыхЭлементов" : 3,
"КоличествоПоследнихЭлементов" : 3,
"ВыводитьИсключения" : false,
"Исключения" : [
"*ПрисоединенныеФайлы"
, "ИдентификаторыОбъектовМетаданных"
Expand Down
4 changes: 3 additions & 1 deletion tests/smoke/smoke.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -197,10 +197,12 @@
}
},

"ЗаписьЭлементовСправочников":{
"Тесты_ЗаписьЭлементовСправочников":{
"Используется" : true,
"ОтборПоПрефиксу" : false,
"КоличествоПервыхЭлементов" : 3,
"КоличествоПоследнихЭлементов" : 3,
"ВыводитьИсключения" : false,
"Исключения" : [
"*ПрисоединенныеФайлы"
, "ИдентификаторыОбъектовМетаданных"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
<?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">
<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.15">
<ExternalDataProcessor uuid="337e12f2-aa9f-4014-a498-8a933b546286">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId>
<xr:ObjectId>779efd25-8f08-4570-9985-54d34c524784</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.тесты_ЗаписьЭлементовСправочников" category="Object">
<xr:GeneratedType name="ExternalDataProcessorObject.Тесты_ЗаписьЭлементовСправочников" category="Object">
<xr:TypeId>55a6d1d9-c608-4d54-b4ab-fd30cfd055dc</xr:TypeId>
<xr:ValueId>973684fd-8334-4f26-a08e-747ff9e5a09f</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>тесты_ЗаписьЭлементовСправочников</Name>
<Name>Тесты_ЗаписьЭлементовСправочников</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проверка программной записи элементов справочников</v8:content>
<v8:content>smoke # Проверка программной записи элементов справочников</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultForm/>
<DefaultForm>ExternalDataProcessor.Тесты_ЗаписьЭлементовСправочников.Form.Форма</DefaultForm>
<AuxiliaryForm/>
</Properties>
<ChildObjects>
Expand Down Expand Up @@ -94,6 +94,7 @@
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Form>Форма</Form>
</ChildObjects>
</ExternalDataProcessor>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -1,262 +1 @@
#Область ОписаниеПеременных

Перем КонтекстЯдра;
Перем Утверждения;
Перем УтвержденияПроверкаТаблиц;

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

#Область ПрограммныйИнтерфейс

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

Функция КлючНастройкиУстаревший()
Возврат "ЗаписьЭлементовСправочников";
КонецФункции

Функция КлючНастройки()
Если Не ЗначениеЗаполнено(ИмяТеста) Тогда
ИмяТеста = Метаданные().Имя;
КонецЕсли;

Возврат ИмяТеста;
КонецФункции

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

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

ЗагрузитьНастройки();

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

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

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


ЗагрузитьНастройки();

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

Для Каждого МетаОбъект Из Метаданные.Справочники Цикл
МожноМенять = ЗапросыИзБД.РазрешеноИзменятьОбъектВМоделиСервиса(МетаОбъект);

Если МожноМенять И ПравоДоступа("Изменение", МетаОбъект)
И (Не Настройки.ОтборПоПрефиксу ИЛИ СтрНачинаетсяС(ВРег(МетаОбъект.Имя), ВРег(Настройки.Префикс))) Тогда

ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект);
КонецЕсли;
КонецЦикла;

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

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

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

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

НачатьТранзакцию();

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

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

Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;

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

Процедура Тест_ЗаписатьЭлементСправочника(СправочникСсылка) Экспорт

ЭлементОбъект = СправочникСсылка.ПолучитьОбъект();
ЭлементОбъект.Записать();

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

Процедура Тест_ПропуститьЗаписьЭлементаСправочника(Знач Сообщение) Экспорт

КонтекстЯдра.ПропуститьТест(Сообщение);

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

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

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

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

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

Процедура ЗагрузитьНастройки()

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

ПлагинНастройки = КонтекстЯдра.Плагин("Настройки");
ПлагинНастройки.Инициализация(КонтекстЯдра);

НастройкиПоУмолчанию = НастройкиПоУмолчанию();
Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройки());
Если Не ЗначениеЗаполнено(Настройки) Тогда
Настройки = ПлагинНастройки.ПолучитьНастройку(КлючНастройкиУстаревший()); // обратная совместимость
КонецЕсли;
Если Не ЗначениеЗаполнено(Настройки) ИЛИ ТипЗнч(Настройки) <> Тип("Структура") Тогда
Настройки = НастройкиПоУмолчанию;
КонецЕсли;

ЗаполнитьЗначенияСвойств(НастройкиПоУмолчанию, Настройки);
Настройки = НастройкиПоУмолчанию;
КонецПроцедуры

Функция НастройкиПоУмолчанию()

Результат = Новый Структура;

Результат.Вставить("Используется", Истина);
Результат.Вставить("КоличествоПервыхЭлементов", 2);
Результат.Вставить("КоличествоПоследнихЭлементов", 2);
Результат.Вставить("Исключения", Новый Массив);
Результат.Вставить("ВыводитьИсключения", Ложь);
Результат.Вставить("Префикс", "");
Результат.Вставить("ОтборПоПрефиксу", Ложь);

Возврат Результат;
КонецФункции

Функция НужноВыполнятьТест()

ЗагрузитьНастройки();

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

КлючНастройки = КлючНастройки();

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

Возврат ВыполнятьТест = Истина;
КонецЕсли;

Возврат Истина;

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

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

Процедура ДобавитьТестыДляСправочника(НаборТестов, МетаОбъект)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов
| Ссылка
|ПОМЕСТИТЬ вт_Первые
|ИЗ
| Справочник." + МетаОбъект.Имя + "
|ГДЕ
| НЕ ЭтоГруппа И Не Предопределенный И Не ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов
| Ссылка
|ПОМЕСТИТЬ вт_Последние
|ИЗ
| Справочник." + МетаОбъект.Имя + "
|ГДЕ
| НЕ ЭтоГруппа И Не Предопределенный И Не ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Ссылка УБЫВ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| вт_Первые.Ссылка КАК Ссылка
|ПОМЕСТИТЬ вт_Все
|ИЗ
| вт_Первые КАК вт_Первые
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| вт_Последние.Ссылка
|ИЗ
| вт_Последние КАК вт_Последние;
|
|ВЫБРАТЬ
| вт_Все.Ссылка,
| ПРЕДСТАВЛЕНИЕ(вт_Все.Ссылка) КАК Представление
|ИЗ
| вт_Все КАК вт_Все";

Запрос.Текст = СтрЗаменить(Запрос.Текст,
"ВЫБРАТЬ ПЕРВЫЕ &КоличествоПервыхЭлементов",
"ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПервыхЭлементов, "ЧГ=")
);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"ВЫБРАТЬ ПЕРВЫЕ &КоличествоПоследнихЭлементов",
"ВЫБРАТЬ ПЕРВЫЕ " + Формат(Настройки.КоличествоПоследнихЭлементов, "ЧГ=")
);
Если НЕ МетаОбъект.Иерархический
ИЛИ МетаОбъект.ВидИерархии <> Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕ ЭтоГруппа", "ИСТИНА");
КонецЕсли;

РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;

ПредставлениеТеста = "Проверка записи элемента справочника - " + МетаОбъект.Имя;
Сообщение = "Пропускаем из-за исключения по имени справочника - " + ПредставлениеТеста;
ЭтоИсключение = Ложь;

Если КонтекстЯдра.ЕстьВИсключаемойКоллекции(МетаОбъект.Имя, Настройки.Исключения) Тогда
КонтекстЯдра.Отладка(Сообщение);

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

ЭтоИсключение = Истина;
КонецЕсли;

НаборТестов.НачатьГруппу(МетаОбъект.Синоним + " - Справочник." + МетаОбъект.Имя);

Если ЭтоИсключение Тогда
ПараметрыТеста = НаборТестов.ПараметрыТеста(Сообщение);
НаборТестов.Добавить("Тест_ПропуститьЗаписьЭлементаСправочника", ПараметрыТеста, Сообщение);
Иначе
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ПараметрыТеста = НаборТестов.ПараметрыТеста(Выборка.Ссылка);
ПредставлениеТеста = СтрШаблон("Проверка записи элемента справочника - %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.15">
<Form uuid="2e3942f8-47c4-48e4-aa67-de7c669f9129">
<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">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.15">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.Тесты_ЗаписьЭлементовСправочников</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
</Attributes>
</Form>
Loading