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

Не удаляются тестовые данные расширений #416

Merged
merged 3 commits into from
Oct 24, 2024

Conversation

zerobig
Copy link
Contributor

@zerobig zerobig commented Oct 10, 2024

Описание изменений

Функция ОписаниеТиповЛюбаяСсылка из модуля ЮТТипыДанныхСлужебный возвращает только ссылки из основной конфигурации. Ссылки расширений не собираются и не добавляются.

Добавил слегка модифицированный код из БСП.

  • Добавлены тесты
  • Изменения отражены в документации (при необходимости)

Close #415

Summary by CodeRabbit

  • Новые функции

    • Добавлена функция для инициализации массива ссылочных типов на основе активных расширений.
    • Введена процедура для дополнения типов на основе метаданных расширений.
    • Добавлена функция для получения предопределенного массива типов объектов метаданных.
    • Определен новый класс метаданных для каталога "Расш1_ТестовыйСправочник".
  • Улучшения

    • Обновлен режим совместимости конфигурации с 8.3.10 на 8.3.11.
    • Добавлен новый тест для проверки включения типов из расширений.

Copy link

coderabbitai bot commented Oct 10, 2024

Walkthrough

Изменения в пулл-реквесте добавляют новые функции и процедуры в модуль Module.bsl, включая экспортируемую функцию СсылочныеТипыДобавляемыеРасширениями, которая инициализирует массив ссылочных типов на основе активных расширений. Также введена процедура ДополнитьТипы, которая добавляет соответствующие ссылочные типы, и функция ТипыОбъектовМетаданныхСсылочногоТипа, возвращающая предопределенный массив типов объектов метаданных. Эти изменения позволяют динамически собирать и возвращать ссылочные типы на основе текущих конфигурационных расширений.

Changes

Файл Изменения
exts/yaxunit/src/CommonModules/ЮТМетодыСлужебныйВызовСервера/Module.bsl Добавлены функции: СсылочныеТипыДобавляемыеРасширениями, ТипыОбъектовМетаданныхСсылочногоТипа и процедура ДополнитьТипы.
fixtures/demo-configuration/src/Configuration/Configuration.mdo Обновлен режим совместимости с 8.3.10 на 8.3.11; добавлен новый каталог Catalog.Расш1_ТестовыйСправочник.
tests/src/Catalogs/Расш1_ТестовыйСправочник/Расш1_ТестовыйСправочник.mdo Определен новый класс метаданных для каталога Расш1_ТестовыйСправочник.
tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl Добавлена новая процедура ОписаниеТиповЛюбаяСсылка_ВключаетТипыИзРасширений, обновлена процедура ИсполняемыеСценарии.

Assessment against linked issues

Objective Addressed Explanation
Исправить удаление тестовых данных расширений (415) Изменения не касаются удаления тестовых данных.
  • 120 / Конструктор движений #413: Изменения в этом PR вводят новые функции, связанные с управлением контекстами данных и движением документов, которые могут взаимодействовать с новыми функциями, добавленными в основном PR, обрабатывающими ссылочные типы и метаданные.

🐰 В норке новой радость,
Ссылки в модуле — чудо,
Расширения в помощь,
Снова тесты в путь идут!
🥕


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?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@github-actions github-actions bot left a 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

bug 0 Bugs
vulnerability 0 Vulnerabilities
code_smell 0 Code Smells

No data Coverage
duplication_lt_3 0.00% Duplication

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Outside diff range and nitpick comments (2)
exts/yaxunit/src/CommonModules/ЮТМетодыСлужебныйВызовСервера/Module.bsl (1)

84-98: Оптимизация инициализации массива ссылочных типов

Для повышения читаемости и эффективности кода в функции ТипыОбъектовМетаданныхСсылочногоТипа можно инициализировать массив сразу со всеми значениями, используя конструктор массива с параметрами.

Примените следующий дифф для оптимизации:

-	ТипыОбъектовМетаданныхСсылочногоТипа = Новый Массив;
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("Справочники");
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("Документы");
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("БизнесПроцессы");
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("Задачи");
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("ПланыСчетов");
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("ПланыОбмена");
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("ПланыВидовХарактеристик");
-	ТипыОбъектовМетаданныхСсылочногоТипа.Добавить("ПланыВидовРасчета");
+	ТипыОбъектовМетаданныхСсылочногоТипа = Новый Массив("Справочники", "Документы", "БизнесПроцессы", "Задачи", "ПланыСчетов", "ПланыОбмена", "ПланыВидовХарактеристик", "ПланыВидовРасчета");
exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1)

160-163: Добавьте комментарий для повышения читаемости кода

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

Предлагаемый комментарий:

+// Добавляем ссылочные типы из активных расширений
 СсылочныеТипыРасширений = ЮТМетодыСлужебныйВызовСервера.СсылочныеТипыДобавляемыеРасширениями();
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 5d2258e and be1d513.

📒 Files selected for processing (2)
  • exts/yaxunit/src/CommonModules/ЮТМетодыСлужебныйВызовСервера/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1 hunks)
🧰 Additional context used
🔇 Additional comments (4)
exts/yaxunit/src/CommonModules/ЮТМетодыСлужебныйВызовСервера/Module.bsl (3)

34-34: Проверить необходимость привилегированного режима

В строке 34 устанавливается привилегированный режим с помощью УстановитьПривилегированныйРежим(Истина);. Убедитесь, что использование привилегированного режима действительно необходимо и безопасно в данном контексте, чтобы избежать потенциальных рисков безопасности.


27-60: Реализация соответствует поставленным задачам

Добавлена функция СсылочныеТипыДобавляемыеРасширениями, которая корректно собирает ссылочные типы из активных расширений. Логика и использование методов соответствуют ожиданиям.


66-83: Процедура ДополнитьТипы реализована корректно

Процедура успешно дополняет массив ссылочных типов на основе переданных параметров. Логика обработки метаданных расширений соответствует требованиям.

exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1)

160-166: Изменения корректно добавляют ссылочные типы из расширений

Код правильно объединяет ссылочные типы, предоставляемые активными расширениями, с существующим описанием типа ЛюбаяСсылка. Это обеспечивает корректную обработку типов данных из расширений и решает проблему, связанную с удалением тестовых данных расширений.

@github-actions github-actions bot deleted a comment from coderabbitai bot Oct 10, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Oct 10, 2024
Copy link

@coderabbitai coderabbitai bot left a 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/CommonModules/ЮТМетодыСлужебныйВызовСервера/Module.bsl (1)

68-69: Рассмотрите возможность объединения строк для улучшения читаемости

На строках 68-69 происходит конкатенация строк для формирования имени пустой ссылки типа. Для улучшения читаемости кода, рекомендуется объединить эти строки.

Предлагаю следующее изменение:

-		ИмяПустойСсылкиТипа = ОМД.ПолноеИмя() + ".ПустаяСсылка";
-		СсылкаДляОпределенияТипа = ПредопределенноеЗначение(ИмяПустойСсылкиТипа);
+		СсылкаДляОпределенияТипа = ПредопределенноеЗначение(ОМД.ПолноеИмя() + ".ПустаяСсылка");
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between be1d513 and 89f0f2d.

📒 Files selected for processing (1)
  • exts/yaxunit/src/CommonModules/ЮТМетодыСлужебныйВызовСервера/Module.bsl (1 hunks)
🧰 Additional context used
🔇 Additional comments (4)
exts/yaxunit/src/CommonModules/ЮТМетодыСлужебныйВызовСервера/Module.bsl (4)

27-52: Функция корректно собирает ссылочные типы из расширений.

Реализация функции СсылочныеТипыДобавляемыеРасширениями выглядит логичной и соответствует поставленной задаче. Она правильно фильтрует расширения, изменяющие структуру данных, и собирает ссылочные типы из них.


58-74: Процедура корректно дополняет массив ссылочных типов.

Реализация процедуры ДополнитьТипы логична и соответствует поставленной задаче. Она правильно фильтрует объекты по принадлежности и добавляет соответствующие ссылочные типы в массив.


76-90: Функция корректно определяет типы объектов метаданных ссылочного типа.

Реализация функции ТипыОбъектовМетаданныхСсылочногоТипа выглядит правильной и полной. Она возвращает массив, содержащий все необходимые типы объектов метаданных ссылочного типа.


35-35: ⚠️ Potential issue

Проверьте вызов метода РасширенияКонфигурации.Получить

В строке 35 есть лишняя запятая после открывающей скобки в вызове метода РасширенияКонфигурации.Получить(,. Это может привести к синтаксической ошибке.

Предлагаю исправить следующим образом:

-	РасширенияСеанса = РасширенияКонфигурации.Получить(,
+	РасширенияСеанса = РасширенияКонфигурации.Получить(

Likely invalid or redundant comment.

@alkoleft
Copy link
Member

@zerobig Сможешь добавить тест на метод ОписаниеТиповЛюбаяСсылка?

В расширении с тестами создать объект метаданных и проверить, чтобы он был в результате.

@coderabbitai напиши тест на метод ОписаниеТиповЛюбаяСсылка

Copy link

coderabbitai bot commented Oct 10, 2024

Tip

For best results, initiate chat on the files or code changes.

@alkoleft, я написал тест для метода ОписаниеТиповЛюбаяСсылка:

// Тестовый метод для проверки включения типов из расширений
Процедура ТестОписаниеТиповЛюбаяСсылка() Экспорт
    // Получаем описание типов
    СсылочныеТипы = ЮТТипыДанныхСлужебный.ОписаниеТиповЛюбаяСсылка();

    // Проверяем, что типы из расширения присутствуют
    // Предполагается, что в расширении добавлен объект метаданных "Справочник.ТестовыйОбъектИзРасширения"
    ЕстьТипИзРасширения = Ложь;

    Для Каждого Тип Из СсылочныеТипы Цикл
        Если Тип = Тип("СправочникСсылка.ТестовыйОбъектИзРасширения") Тогда
            ЕстьТипИзРасширения = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;

    // Проверяем условие
    Ожидать(ЕстьТипИзРасширения, "Тип из расширения не найден в ОписаниеТиповЛюбаяСсылка");
КонецПроцедуры

Данный тест проверяет, что метод ОписаниеТиповЛюбаяСсылка корректно включает ссылочные типы данных, добавленные в расширении, и позволяет убедиться в правильности работы после внесенных изменений.

@github-actions github-actions bot deleted a comment from alkoleft Oct 12, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Oct 12, 2024
@github-actions github-actions bot deleted a comment from alkoleft Oct 12, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Oct 12, 2024
@github-actions github-actions bot deleted a comment from alkoleft Oct 12, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Oct 12, 2024
Copy link

@coderabbitai coderabbitai bot left a 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 (4)
tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl (2)

62-62: Одобрено добавление нового теста, но рекомендуется уточнить название.

Добавление теста ОписаниеТиповЛюбаяСсылка_ВключаетТипыИзРасширений соответствует целям PR и поможет убедиться, что типы из расширений включены в результат функции ОписаниеТиповЛюбаяСсылка.

Рекомендуется рассмотреть возможность сокращения названия теста для улучшения читаемости, например: ОписаниеТиповЛюбаяСсылка_УчитываетРасширения. Это сохранит суть теста, но сделает название более лаконичным.


126-134: Одобрено добавление новой тестовой процедуры, но есть предложения по улучшению.

Тестовая процедура ОписаниеТиповЛюбаяСсылка_ВключаетТипыИзРасширений корректно проверяет включение типов из расширений в результат функции ОписаниеТиповЛюбаяСсылка. Использование ЮТест.ОжидаетЧто() для утверждений соответствует стилю других тестов в файле.

Для повышения надежности и ясности теста предлагаются следующие улучшения:

  1. Добавьте проверку на наличие хотя бы одного типа из расширения, не привязываясь к конкретному имени:
ЕстьТипИзРасширения = Ложь;
Для Каждого Тип Из ЛюбаяСсылка.Типы() Цикл
    Если СтрНачинаетсяС(Тип.Имя, "Расш") Тогда
        ЕстьТипИзРасширения = Истина;
        Прервать;
    КонецЕсли;
КонецЦикла;

ЮТест.ОжидаетЧто(ЕстьТипИзРасширения, "Не найден ни один тип из расширения").Равно(Истина);
  1. Если возможно, добавьте динамическое создание тестового объекта метаданных в расширении перед выполнением теста, чтобы гарантировать наличие проверяемого типа.

  2. Добавьте комментарий, объясняющий цель теста и ожидаемое поведение функции ОписаниеТиповЛюбаяСсылка в отношении типов из расширений.

Эти изменения сделают тест более надежным и информативным, особенно при выполнении в различных средах или при изменении конфигурации расширений.

tests/src/Configuration/Configuration.mdo (1)

76-76: Добавление нового справочника Расш1_ТестовыйСправочник

Добавление нового справочника Расш1_ТестовыйСправочник соответствует целям PR по решению проблем с тестовыми данными для расширений.

Рекомендации:

  1. Обновите документацию, чтобы отразить добавление нового справочника и его назначение.
  2. Убедитесь, что для нового справочника созданы необходимые права доступа и роли.
  3. Рассмотрите возможность добавления комментария в код, объясняющего назначение этого тестового справочника.
tests/src/Catalogs/Расш1_ТестовыйСправочник/Расш1_ТестовыйСправочник.mdo (1)

18-18: Рассмотрите возможность включения полнотекстового поиска при вводе строки.

Параметр <fullTextSearchOnInputByString> установлен в DontUse, что отключает полнотекстовый поиск при вводе строки пользователем. Включение этой опции (Use) может улучшить удобство поиска и повысить эффективность работы пользователей с каталогом.

Для изменения настройки примените следующий дифф:

- <fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
+ <fullTextSearchOnInputByString>Use</fullTextSearchOnInputByString>
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 869ff61 and 7bd5a94.

📒 Files selected for processing (4)
  • fixtures/demo-configuration/src/Configuration/Configuration.mdo (1 hunks)
  • tests/src/Catalogs/Расш1_ТестовыйСправочник/Расш1_ТестовыйСправочник.mdo (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl (2 hunks)
  • tests/src/Configuration/Configuration.mdo (2 hunks)
🧰 Additional context used
🔇 Additional comments (5)
tests/src/Configuration/Configuration.mdo (1)

14-14: Обновление режима совместимости расширения конфигурации

Режим совместимости расширения конфигурации обновлен с 8.3.10 до 8.3.11. Это может привести к изменениям в поведении системы.

Пожалуйста, убедитесь, что:

  1. Все существующие функции работают корректно после обновления.
  2. Новые возможности, доступные в версии 8.3.11, используются правильно (если применимо).
  3. Проведено тестирование на совместимость со всеми используемыми расширениями и конфигурациями.
fixtures/demo-configuration/src/Configuration/Configuration.mdo (1)

57-57: Обновление режима совместимости одобрено.

Изменение режима совместимости с 8.3.10 на 8.3.11 выглядит корректным. Однако, важно учитывать следующее:

  1. Это изменение может повлиять на работу всего приложения.
  2. Необходимо провести тщательное тестирование всех функций приложения, чтобы убедиться, что обновление не вызвало непредвиденных проблем.
  3. Рекомендуется ознакомиться с документацией по версии 8.3.11, чтобы узнать о новых возможностях и потенциальных изменениях в поведении системы.

Для проверки совместимости выполните следующий скрипт:

tests/src/Catalogs/Расш1_ТестовыйСправочник/Расш1_ТестовыйСправочник.mdo (3)

19-19: Подтвердите необходимость создания объектов при вводе новых значений.

Параметр <createOnInput> установлен в Use, что позволяет создавать новые элементы каталога при вводе несуществующих значений. Убедитесь, что такое поведение соответствует требованиям бизнес-логики и не приведет к непреднамеренному добавлению лишних данных.


22-23: Проверьте настройки иерархии каталога и отображения папок.

Параметр <levelCount> установлен в 2, что задает двухуровневую иерархию, а <foldersOnTop> установлен в true, что приводит к отображению папок выше элементов. Убедитесь, что такие настройки соответствуют ожиданиям пользователей и не усложняют навигацию по каталогу.


4-9: Проверьте уникальность typeId и valueTypeId в разделе <producedTypes>.

Необходимо убедиться, что все значения typeId и valueTypeId уникальны и корректно соотносятся с соответствующими типами данных. Дублирование или некорректные идентификаторы могут привести к ошибкам в работе системы.

Запустите следующий скрипт для проверки уникальности идентификаторов:

@alkoleft
Copy link
Member

@zerobig Подскажи что с тестом, я видел его в коммитах, но его нет в реквесте.

@zerobig
Copy link
Contributor Author

zerobig commented Oct 24, 2024

Меня сбил с мысли ИИ который присоединён к репозиторию. Там целая история вышла. О том как я написал, увидел решение ИИ, отменил своё написанное и признал решение ИИ чушью... ))

В общем, закончилось тем что надо поднимать режим совместимости в тестовой конфигурациити до 8.3.11. Иначе справочник в расширение добавить нельзя. И моими размышлениями о том, так ли нужен этот тест который повышает версию.

@alkoleft alkoleft merged commit 2f6deaa into bia-technologies:develop Oct 24, 2024
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: Не удаляются тестовые данные расширений
2 participants