-
Notifications
You must be signed in to change notification settings - Fork 55
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
Добавление мока для типа СообщениеСервисаИнтеграции #446
Conversation
WalkthroughВ данном запросе на изменение добавлен новый мок для типа Changes
Assessment against linked issues
Possibly related PRs
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SonarQube Quality Gate passed! ![passed](https://camo.githubusercontent.com/462161953bbc3f511e96d1515f5cc65c4e134dc2c69663ac456a6f07885be7a2/68747470733a2f2f68736f6e61722e73332e61702d736f757468656173742d312e616d617a6f6e6177732e636f6d2f696d616765732f7061737365642e706e67)
0 Bugs
0 Vulnerabilities
0 Code Smells
No data Coverage
0.00% Duplication
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Outside diff range and nitpick comments (6)
tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Module.bsl (3)
21-28
: Добавьте документацию к процедуре ИсполняемыеСценарииРекомендуется добавить описание назначения тестов и их взаимосвязи для улучшения поддерживаемости кода.
Предлагаемое дополнение:
+// Процедура регистрирует тесты для проверки функциональности мока СообщениеСервисаИнтеграции +// +// Параметры: +// Нет +// Процедура ИсполняемыеСценарии() Экспорт
32-33
: Используйте более осмысленные константы для идентификаторовЖёстко закодированные UUID усложняют понимание теста. Рекомендуется вынести их в именованные константы модуля или использовать более осмысленные значения для тестовых данных.
Пример улучшения:
- Идентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000001"); - ИдентификаторСообщенияСообщениеа = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000002"); + ИдентификаторТестовогоСообщения = Новый УникальныйИдентификатор("6B6B98A1-2C35-4E42-9DA3-E29C8147859B"); + ИдентификаторРодительскогоСообщения = Новый УникальныйИдентификатор("A3F5C7D8-1234-5678-90AB-CDEF01234567");
19-93
: Добавьте общее описание модуляРекомендуется добавить описание назначения модуля и его взаимодействия с тестируемым функционалом в начале файла.
Предлагаемое дополнение:
#Область СлужебныйПрограммныйИнтерфейс + +// Модуль содержит тесты для проверки функциональности мока СообщениеСервисаИнтеграции. +// Проверяется: +// - Создание сообщения с различными параметрами +// - Установка тела сообщения различными способами +// - Корректность сохранения и чтения данных Процедура ИсполняемыеСценарии() Экспортexts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ObjectModule.bsl (1)
21-42
: Рекомендация по инициализации переменныхПеременные корректно объявлены с аннотациями пропуска проверок. Однако, рекомендуется добавить комментарии к каждой переменной, описывающие их назначение и тип данных.
documentation/docs/features/mocking/mocking.md (2)
150-155
: Предлагаю дополнить введение примером использованияДля улучшения понимания предлагаю:
- Добавить простой пример использования мока в тестах
- Добавить ссылку на issue [NEW] Мок для типа СообщениеСервисаИнтеграции #445, которая объясняет предысторию появления этого мока
Предлагаемые изменения:
### `СообщениеСервисаИнтеграции` При тестировании интеграций с помощью 1С:Шина есть потребность тестировать сбор/разбор сообщений сервисов интеграции. У `СообщениеСервисаИнтеграции` отсутствует конструктор, поэтому был добавлен [`ЮТест.Данные().СообщениеСервисаИнтеграции`](/api/ЮТТестовыеДанные#IntegrationServiceMessage) реализующий интерфейс `СообщениеСервисаИнтеграции` + +Например: +```bsl +// Создаем и настраиваем мок сообщения +Сообщение = ЮТест.Данные().СообщениеСервисаИнтеграции + .КодОтправителя("SENDER") + .КодПолучателя("RECIPIENT") + .УстановитьТелоКакСтрокуJSON("{""data"": ""test""}") + .Прогон(); + +// Используем в тестах +ПарсерСообщений.ОбработатьСообщение(Сообщение); +``` + +> Подробнее о предпосылках создания мока можно прочитать в [issue #445](ссылка-на-issue).
156-184
: Предлагаю улучшить документацию методовЕсть несколько моментов для улучшения:
- В разделе методов указан только
ПолучитьТелоКакПоток()
, хотя в методах настройки упоминаются и другие методы работы с телом- Не везде указаны английские эквиваленты названий методов и свойств
Предлагаемые изменения:
* Методы * `ПолучитьТелоКакПоток()` \ `GetBodyAsStream()` + * `ПолучитьТелоКакДвоичныеДанные()` \ `GetBodyAsBinaryData()` + * `ПолучитьТелоКакСтроку()` \ `GetBodyAsString()` * Имеет методы настройки, реализованные в виде [текучих выражений](/docs/getting-started/fluent-api.md) * Установка тела * `УстановитьТелоКакДвоичныеДанные()` * `УстановитьТелоКакСтроку()` * `УстановитьТелоКакСтрокуJSON()` * Методы установки свойств - * `ДобавитьПараметр()` + * `ДобавитьПараметр()` \ `AddParameter()` - * `ДатаОтправки()` + * `ДатаОтправки()` \ `SetSendDate()` - * `ДатаУстаревания()` + * `ДатаУстаревания()` \ `SetExpirationDate()` - * `Идентификатор()` + * `Идентификатор()` \ `SetId()` - * `ИдентификаторСообщенияЗапроса()` + * `ИдентификаторСообщенияЗапроса()` \ `SetCorrelationId()` - * `КодОтправителя()` + * `КодОтправителя()` \ `SetSenderCode()` - * `КодПолучателя()` + * `КодПолучателя()` \ `SetRecipientCode()` - * `РазмерТела()` + * `РазмерТела()` \ `SetBodySize()`
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (10)
documentation/docs/features/mocking/mocking.md
(1 hunks)exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl
(1 hunks)exts/yaxunit/src/Configuration/Configuration.mdo
(1 hunks)exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ObjectModule.bsl
(1 hunks)exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ЮТСообщениеСервисаИнтеграции.mdo
(1 hunks)exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТМокирование/ЮТМокирование.mdo
(1 hunks)exts/yaxunit/src/Subsystems/ЮТПубличный/ЮТПубличный.mdo
(1 hunks)tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Module.bsl
(1 hunks)tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Обр_ЮТСообщениеСервисаИнтеграции.mdo
(1 hunks)tests/src/Configuration/Configuration.mdo
(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ЮТСообщениеСервисаИнтеграции.mdo
- tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Обр_ЮТСообщениеСервисаИнтеграции.mdo
🔇 Additional comments (8)
exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТМокирование/ЮТМокирование.mdo (1)
21-21
: Корректное добавление обработки для мока СообщениеСервисаИнтеграции
Добавление обработки ЮТСообщениеСервисаИнтеграции
в подсистему мокирования выполнено корректно и соответствует существующей структуре подсистемы.
Выполним проверку реализации новой обработки:
✅ Verification successful
Реализация мока СообщениеСервисаИнтеграции полностью соответствует требованиям
Обработка корректно реализована и интегрирована в систему:
- Имеет все необходимые методы для работы с телом сообщения (УстановитьТелоКакДвоичныеДанные, УстановитьТелоКакСтроку, УстановитьТелоКакСтрокуJSON)
- Содержит методы для установки всех требуемых параметров (ДатаОтправки, ДатаУстаревания, Идентификатор и др.)
- Правильно зарегистрирована в конфигурации и подсистемах
- Доступна через модуль ЮТТестовыеДанные для использования в тестах
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Проверка наличия и структуры обработки ЮТСообщениеСервисаИнтеграции
# Поиск файлов обработки
fd "ЮТСообщениеСервисаИнтеграции.mdo$"
# Поиск модуля объекта обработки
fd "ЮТСообщениеСервисаИнтеграции/Ext/ObjectModule.bsl$"
# Поиск использования обработки в тестах
rg -A 5 "ЮТСообщениеСервисаИнтеграции"
Length of output: 11287
tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Module.bsl (2)
1-17
: Лицензионный заголовок корректен!
Заголовок содержит все необходимые элементы лицензии Apache 2.0 и информацию об авторских правах.
65-65
: Проверьте обработку различных кодировок
Текущая реализация использует только UTF8. Рекомендуется добавить тесты для проверки работы с другими кодировками, которые могут использоваться в реальных сценариях интеграции.
Для проверки поддержки кодировок в существующем коде:
Also applies to: 73-73, 80-80, 87-87
tests/src/Configuration/Configuration.mdo (1)
35-35
: Корректное добавление модуля в конфигурацию
Добавление общего модуля Обр_ЮТСообщениеСервисаИнтеграции
соответствует принятым соглашениям об именовании и структуре конфигурации. Модуль логически размещен рядом с другими модулями для тестирования.
Выполним проверку регистрации модуля в подсистемах:
✅ Verification successful
Модуль корректно добавлен в конфигурацию
Модуль Обр_ЮТСообщениеСервисаИнтеграции
зарегистрирован в конфигурации и правильно размещен в подсистеме ЮТМокирование
вместе с другими модулями для тестирования, что подтверждается содержимым файла конфигурации.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify module registration in subsystems
# Expected: The module should be registered in testing subsystems similar to HTTPСервисЗапрос
rg -l "Обр_ЮТСообщениеСервисаИнтеграции" --type xml
Length of output: 271
Script:
#!/bin/bash
# Let's try a different approach to find the module registration
# First, let's find all subsystem files
fd "Subsystem\.mdo$"
# Then let's check the Configuration.mdo file content to verify the module is actually there
cat tests/src/Configuration/Configuration.mdo
Length of output: 5687
Script:
#!/bin/bash
# Let's check the content of the subsystem file to see if our module is registered there
cat tests/src/Subsystems/Тесты_ЮТПодключаемыеМодули/Subsystem.mdo
# Also check if there are any other subsystem files that might contain our module
fd -t f -e mdo . | grep -i subsystem | xargs cat
Length of output: 34520
exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ObjectModule.bsl (2)
1-20
: Корректное оформление лицензии и директивы препроцессора
Лицензионное соглашение Apache 2.0 и директива препроцессора оформлены правильно.
1-259
: Реализация соответствует требованиям
Мок для типа СообщениеСервисаИнтеграции реализован корректно, следуя паттерну текучего интерфейса и обеспечивая необходимую функциональность для тестирования. Код хорошо структурирован и документирован. После внесения предложенных исправлений, код будет полностью готов к использованию.
exts/yaxunit/src/Configuration/Configuration.mdo (1)
165-165
: Корректное добавление обработки в конфигурацию
Добавление обработки ЮТСообщениеСервисаИнтеграции
в конфигурацию выполнено корректно и соответствует поставленной задаче по созданию мока для тестирования сообщений сервиса интеграции. Размещение элемента в секции dataProcessors
соответствует структуре конфигурации и согласуется с существующей обработкой ЮТHTTPСервисЗапрос
.
✅ Verification successful
Подтверждение корректности добавления обработки в конфигурацию
Обработка ЮТСообщениеСервисаИнтеграции
корректно интегрирована в конфигурацию:
- Правильно размещена в подсистемах
ЮТПубличный
иЮТМокирование
- Имеет корректную структуру метаданных и модуль объекта с необходимым функционалом
- Соответствует общей архитектуре тестового фреймворка и другим mock-объектам
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify the configuration structure and related files
# Check if the data processor files exist
fd -t f "ЮТСообщениеСервисаИнтеграции" -e xml -e mdo
# Check if there are any references to the new data processor
rg -l "ЮТСообщениеСервисаИнтеграции"
Length of output: 1227
Script:
#!/bin/bash
# Check the content of the data processor module and configuration files
cat exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ЮТСообщениеСервисаИнтеграции.mdo
cat exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ObjectModule.bsl
# Check subsystem configurations to verify proper integration
cat exts/yaxunit/src/Subsystems/ЮТПубличный/ЮТПубличный.mdo
cat exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТМокирование/ЮТМокирование.mdo
Length of output: 11969
exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl (1)
1098-1106
: Реализация выглядит корректной!
Функция СообщениеСервисаИнтеграции()
реализована по аналогии с существующей функцией HTTPСервисЗапрос()
, что обеспечивает единообразие кодовой базы. Функция корректно размещена в серверной директиве компиляции и имеет правильное экспортное объявление.
Давайте проверим наличие соответствующей обработки и её реализацию:
✅ Verification successful
Let me generate one more verification to check the mock implementation:
Реализация мока полностью соответствует требованиям!
Проверка показала, что:
- Мок корректно реализован в виде обработки
ЮТСообщениеСервисаИнтеграции
- Имеет все необходимые методы для работы с телом сообщения и метаданными
- Методы следуют паттерну текучего интерфейса (возвращают
ЭтотОбъект
) - Мок активно используется в тестах модуля
Обр_ЮТСообщениеСервисаИнтеграции
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Проверяем наличие обработки ЮТСообщениеСервисаИнтеграции
fd "ЮТСообщениеСервисаИнтеграции" --type f
# Проверяем использование мока в тестах
rg "СообщениеСервисаИнтеграции\(\)" -A 5
Length of output: 4450
Script:
#!/bin/bash
# Check the mock implementation
rg -g "*.bsl" "ЮТСообщениеСервисаИнтеграции" exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ -A 10
Length of output: 12741
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (3)
tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Module.bsl (3)
21-28
: Рекомендуется добавить дополнительные тестовые сценарииТекущий набор тестов покрывает только базовые сценарии. Предлагается добавить следующие тесты:
- Проверка обработки некорректных параметров
- Проверка граничных значений дат
- Проверка обработки пустых идентификаторов
Пример добавления тестового сценария:
ЮТТесты.Тег("Мокирование") .ДобавитьТест("Конструктор") .ДобавитьТест("УстановитьТело") .ДобавитьТест("ПроверкаНекорректныхПараметров") ;
32-33
: Рассмотрите использование генерации идентификаторовИспользование жестко закодированных UUID может усложнить поддержку тестов. Рекомендуется создать вспомогательную функцию для генерации тестовых идентификаторов.
Пример реализации:
Функция СоздатьТестовыйИдентификатор(НомерИдентификатора) Возврат Новый УникальныйИдентификатор( СтрШаблон("00000000-0000-0000-0000-%012d", НомерИдентификатора)); КонецФункции
19-93
: Рекомендуется улучшить документацию кодаДля улучшения поддержки кода рекомендуется:
- Добавить описание назначения модуля
- Документировать параметры и возвращаемые значения процедур
- Добавить примеры использования в комментариях
Пример оформления документации:
// Модуль тестирования мока СообщениеСервисаИнтеграции // // Параметры: // <Нет> // // Пример: // ЮТест.ЗапуститьТест("Обр_ЮТСообщениеСервисаИнтеграции");
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (1)
tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Module.bsl
(1 hunks)
🔇 Additional comments (2)
tests/src/CommonModules/Обр_ЮТСообщениеСервисаИнтеграции/Module.bsl (2)
1-17
: Лицензионный заголовок корректен!
Заголовок содержит актуальную информацию об авторских правах и условиях лицензии Apache 2.0.
57-91
: Необходимо добавить проверку некорректных данных
Текущая реализация не включает проверку обработки ошибок. Согласно предыдущим комментариям, необходимо добавить:
- Проверку установки некорректных JSON данных
- Проверку установки пустых значений
- Проверку установки данных неподдерживаемого формата
Пример проверки некорректных данных:
// Проверка некорректного JSON
Сообщение = ЮТест.Данные().СообщениеСервисаИнтеграции();
ЮТест.ОжидаетЧто(Сообщение)
.Метод("УстановитьТелоКакСтрокуJSON")
.СПараметрами("{некорректный json}")
.ВыбрасываетИсключение();
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (1)
exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ObjectModule.bsl (1)
131-137
: Рассмотрите возможность проверки типов входных параметровЧтобы повысить надежность методов, рекомендуется проверять типы входных параметров
Значение
, чтобы убедиться, что они соответствуют ожидаемым типам (например,Дата
,Строка
,УникальныйИдентификатор
,Число
). Это позволит своевременно обнаруживать некорректное использование методов и предотвращать возможные ошибки во время выполнения.Also applies to: 145-151, 159-165, 173-179, 187-193, 201-207, 215-221
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (1)
exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ObjectModule.bsl
(1 hunks)
🔇 Additional comments (1)
exts/yaxunit/src/DataProcessors/ЮТСообщениеСервисаИнтеграции/ObjectModule.bsl (1)
226-240
: Все пути выполнения функции возвращают значение
Ранее было отмечено, что не все пути выполнения функции ПолучитьТелоКакДвоичныеДанные()
возвращают значение. Сейчас каждый возможный путь либо возвращает значение, либо вызывает исключение, что устраняет предыдущую проблему.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (1)
documentation/docs/features/mocking/mocking.md (1)
150-155
: Добавьте пример использования мокаРаздел хорошо описывает назначение мока, но было бы полезно добавить простой пример использования, аналогично разделу с
HTTPСервисЗапрос
. Это поможет разработчикам быстрее понять, как применять мок в своих тестах.Предлагаю добавить пример:
У `СообщениеСервисаИнтеграции` отсутствует конструктор, поэтому был добавлен [`ЮТест.Данные().СообщениеСервисаИнтеграции`](/api/ЮТТестовыеДанные#IntegrationServiceMessage) реализующий интерфейс `СообщениеСервисаИнтеграции` + +Пример использования: +```bsl +Сообщение = ЮТест.Данные().СообщениеСервисаИнтеграции() + .Идентификатор("MSG-001") + .КодОтправителя("SRC") + .КодПолучателя("DST") + .УстановитьТелоКакСтрокуJSON("{""data"": ""test""}") + .Прогон(); +```
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (1)
documentation/docs/features/mocking/mocking.md
(1 hunks)
🔇 Additional comments (1)
documentation/docs/features/mocking/mocking.md (1)
156-184
: LGTM! Документация полная и хорошо структурирована
Документация следует единому стилю с другими моками и содержит все необходимые методы и свойства.
Ишуза #445
Описание изменений
Добавлен мок для типа "СообщениеСервисаИнтеграции" по аналогии с существующим "HTTPСервисЗапрос"
Close #445
Summary by CodeRabbit
Новые функции
Тесты
Документация