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

first part of tests #157

Merged
merged 5 commits into from
Dec 16, 2024
Merged
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?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.16">
<CommonModule uuid="72ba480f-6821-47a5-bc00-b831bdee3765">
<Properties>
<Name>ОМ_ПредопределенныеЗначения</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенные значения</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#Область СлужебныйПрограммныйИнтерфейс

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

ЮТТесты
.ДобавитьТестовыйНабор("Ключи хеша предопределенного элемента")
.ДобавитьТест("Тест_КлючиХеша_ФормированиеКлючейЭлемент")
.ДобавитьТест("Тест_КлючиХеша_ФормированиеКлючейГруппа")
.ДобавитьТест("Тест_КлючиХеша_ПустойМассив")
;

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

Процедура Тест_КлючиХеша_ФормированиеКлючейЭлемент() Экспорт

Поля = Новый Массив;
Поля.Добавить("Поле1");
Поля.Добавить("Поле2");
Поля.Добавить("Служебный_Поле3");
Поля.Добавить("Поле4");

ИсключаемыеПоля = Новый Структура;
ИсключаемыеПоля.Вставить("Поле2", Истина);

Мокито.Обучение(пбп_ПредопределенныеЗначенияПереопределяемый)
.Когда("ИсключаемыеПоляДляРасчетаХешаЭлемент")
.Вернуть(ИсключаемыеПоля)
.Прогон();

Ожидаемое = Новый Структура("Поле1,Поле4");

Результат = пбп_ПредопределенныеЗначения.КлючиХешаПредопределенногоЭлемента(Поля, Ложь);

ЮТест.ОжидаетЧто(Результат).Равно(Ожидаемое);

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

Процедура Тест_КлючиХеша_ФормированиеКлючейГруппа() Экспорт

Поля = Новый Массив;
Поля.Добавить("Поле1");
Поля.Добавить("Поле2");

ИсключаемыеПоля = Новый Структура;
ИсключаемыеПоля.Вставить("Поле1", Истина);

Мокито.Обучение(пбп_ПредопределенныеЗначенияПереопределяемый)
.Когда("ИсключаемыеПоляДляРасчетаХешаГруппа")
.Вернуть(ИсключаемыеПоля)
.Прогон()
;

Ожидаемое = Новый Структура("Поле2");

Результат = пбп_ПредопределенныеЗначения.КлючиХешаПредопределенногоЭлемента(Поля, Истина);

ЮТест.ОжидаетЧто(Результат).Равно(Ожидаемое);

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

Процедура Тест_КлючиХеша_ПустойМассив() Экспорт

Поля = Новый Массив;

ИсключаемыеПоля = Новый Структура;

Мокито.Обучение(пбп_ПредопределенныеЗначенияПереопределяемый)
.Когда("ИсключаемыеПоляДляРасчетаХешаЭлемент")
.Вернуть(ИсключаемыеПоля)
.Прогон();

Ожидаемое = Новый Структура;

Результат = пбп_ПредопределенныеЗначения.КлючиХешаПредопределенногоЭлемента(Поля);

ЮТест.ОжидаетЧто(Результат).Равно(Ожидаемое);

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

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?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.16">
<CommonModule uuid="4874774e-fc49-4238-b314-4c8bd60742b4">
<Properties>
<Name>ОМ_ПредопределенныеЗначенияВызовСервера</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенные значения вызов сервера</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>true</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#Область СлужебныйПрограммныйИнтерфейс

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

ЮТТесты
.ДобавитьТестовыйНабор("Инициализировать предопределенные элементы")
.ДобавитьТест("Тест_ИнициализироватьПредопределенныеЭлементы_ПустаяТаблица")
.СПараметрами("Справочник.пбп_ИнтеграционныеПотоки")
.СПараметрами("Справочник.пбп_НастройкиОтбораОбъектов")
.СПараметрами("ПланВидовХарактеристик.пбп_ПредопределенныеЗначения")
.ДобавитьТест("Тест_ИнициализироватьПредопределенныеЭлементы_ЕстьКонфликты")
.СПараметрами("Справочник.пбп_ИнтеграционныеПотоки")
;

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

Процедура Тест_ИнициализироватьПредопределенныеЭлементы_ПустаяТаблица(ИмяОбъекта) Экспорт

ТаблицаКонфликтов = Новый ТаблицаЗначений;

Мокито.Обучение(пбп_ПредопределенныеЗначения)
.Когда("ИнициализироватьПредопределенныеЗначения")
.Вернуть(ТаблицаКонфликтов)
.Прогон()
;
Comment on lines +21 to +25
Copy link

@coderabbitai coderabbitai bot Dec 16, 2024

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Отсутствует проверка вызова мока

После выполнения теста следует добавить проверку, что мок действительно был вызван с ожидаемыми параметрами:

 	Мокито.Обучение(пбп_ПредопределенныеЗначения)
 		.Когда("ИнициализироватьПредопределенныеЗначения")
 		.Вернуть(ТаблицаКонфликтов)
 		.Прогон()
 	;
+	
+	Мокито.Проверить(пбп_ПредопределенныеЗначения)
+		.Что("ИнициализироватьПредопределенныеЗначения")
+		.СПараметрами(ИмяОбъекта)
+		.БылВызван()
+	;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Мокито.Обучение(пбп_ПредопределенныеЗначения)
.Когда("ИнициализироватьПредопределенныеЗначения")
.Вернуть(ТаблицаКонфликтов)
.Прогон()
;
Мокито.Обучение(пбп_ПредопределенныеЗначения)
.Когда("ИнициализироватьПредопределенныеЗначения")
.Вернуть(ТаблицаКонфликтов)
.Прогон()
;
Мокито.Проверить(пбп_ПредопределенныеЗначения)
.Что("ИнициализироватьПредопределенныеЗначения")
.СПараметрами(ИмяОбъекта)
.БылВызван()
;

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ты ошибаешься, такой функции нет в yaxunit

Copy link

Choose a reason for hiding this comment

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

@denisushakov, спасибо за уточнение. Действительно, функции Мокито.Проверить нет в yaxunit. Принял к сведению для будущих ревью.


✏️ Learnings added
Learnt from: denisushakov
PR: firstBitSportivnaya/PSSL#157
File: src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначенияВызовСервера/Ext/Module.bsl:21-25
Timestamp: 2024-12-16T14:33:04.959Z
Learning: В фреймворке yaxunit отсутствует функция `Мокито.Проверить`.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


ОжидаемаяСтруктура = Новый Структура;
ОжидаемаяСтруктура.Вставить("АдресТаблицы", "");
ОжидаемаяСтруктура.Вставить("ЕстьСтроки", Ложь);

Ожидаемое = Новый ФиксированнаяСтруктура(ОжидаемаяСтруктура);

Результат = пбп_ПредопределенныеЗначенияВызовСервера.ИнициализироватьПредопределенныеЗначения(ИмяОбъекта);

ЮТест.ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("ФиксированнаяСтруктура"));

ЮТест.ОжидаетЧто(Результат)
.Свойство("АдресТаблицы").НеЗаполнено()
.Свойство("ЕстьСтроки").ЭтоЛожь()
;

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

Процедура Тест_ИнициализироватьПредопределенныеЭлементы_ЕстьКонфликты(ИмяОбъекта) Экспорт

ТаблицаКонфликтов = Новый ТаблицаЗначений;
ТаблицаКонфликтов.Добавить();

Мокито.Обучение(пбп_ПредопределенныеЗначения)
.Когда("ИнициализироватьПредопределенныеЗначения")
.Вернуть(ТаблицаКонфликтов)
.Прогон()
;
Comment on lines +49 to +53
Copy link

@coderabbitai coderabbitai bot Dec 16, 2024

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Отсутствует проверка вызова мока

Аналогично первому тесту, необходимо добавить проверку вызова мока:

 	Мокито.Обучение(пбп_ПредопределенныеЗначения)
 		.Когда("ИнициализироватьПредопределенныеЗначения")
 		.Вернуть(ТаблицаКонфликтов)
 		.Прогон()
 	;
+	
+	Мокито.Проверить(пбп_ПредопределенныеЗначения)
+		.Что("ИнициализироватьПредопределенныеЗначения")
+		.СПараметрами(ИмяОбъекта)
+		.БылВызван()
+	;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Мокито.Обучение(пбп_ПредопределенныеЗначения)
.Когда("ИнициализироватьПредопределенныеЗначения")
.Вернуть(ТаблицаКонфликтов)
.Прогон()
;
Мокито.Обучение(пбп_ПредопределенныеЗначения)
.Когда("ИнициализироватьПредопределенныеЗначения")
.Вернуть(ТаблицаКонфликтов)
.Прогон()
;
Мокито.Проверить(пбп_ПредопределенныеЗначения)
.Что("ИнициализироватьПредопределенныеЗначения")
.СПараметрами(ИмяОбъекта)
.БылВызван()
;

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ты ошибаешься, такой функции нет в yaxunit

Copy link

Choose a reason for hiding this comment

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

@denisushakov, благодарю за уточнение. Вы правы, функция Мокито.Проверить отсутствует в yaxunit. Приношу извинения за ошибку.


✏️ Learnings added
Learnt from: denisushakov
PR: firstBitSportivnaya/PSSL#157
File: src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначенияВызовСервера/Ext/Module.bsl:49-53
Timestamp: 2024-12-16T14:32:56.592Z
Learning: В yaxunit функция `Мокито.Проверить` отсутствует и не должна предлагаться для использования в тестах.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


ОжидаемаяСтруктура = Новый Структура;
ОжидаемаяСтруктура.Вставить("АдресТаблицы", "АдресВременногоХранилища");
ОжидаемаяСтруктура.Вставить("ЕстьСтроки", Истина);

Ожидаемое = Новый ФиксированнаяСтруктура(ОжидаемаяСтруктура);

Результат = пбп_ПредопределенныеЗначенияВызовСервера.ИнициализироватьПредопределенныеЗначения(ИмяОбъекта);

ЮТест.ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("ФиксированнаяСтруктура"));

ЮТест.ОжидаетЧто(Результат)
.Свойство("АдресТаблицы").Заполнено()
.Свойство("ЕстьСтроки").ЭтоИстина()
;

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

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?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.16">
<CommonModule uuid="6e1b1014-5795-4ba6-82c4-4ee90e59c939">
<Properties>
<Name>ОМ_ПредопределенныеЗначенияСлужебный</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенные значения служебный</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>
Loading
Loading