1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-06-20 09:19:27 +02:00

Доработка CONTRIBUTING.md

This commit is contained in:
Anton Titovets
2025-12-31 13:07:11 +03:00
parent fc747690de
commit 5e41e59ff4
+15 -15
View File
@@ -90,7 +90,7 @@
// Получает информацию об аккаунте
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
@@ -153,9 +153,8 @@
Каждая функция должна быть покрыта Unit-тестом - это важнейшая часть поддержки библиотек на длинной дистанции, позволяющая выпускать каждый новый релиз, не задаваясь вопросом "Работают ли созданные ранее функции до сих пор или уже нет?"
:::important
Сразу стоит оговорится: далее пойдет достаточно запутанное, если не сказать душное, описание регламента создания тестов. При этом, вы не сможете запустить созданные тесты самостоятельно, чтобы проверить их работоспособность. Поэтому их создание находится в категории "Сделайте как-нибудь": частичное несоответствие добавленных тестов регламенту не будут причиной для отклонения PR. Я буду рад, если вы добавите их хотя бы в каком-то виде и в правильном модуле, а мне будет достаточно привести их к корректному виду, а не писать целиком с нуля. Также тут продолжает работать правило из блока разработки функций: *"Посмотри на остальные и сделай единообразно"*
:::
> [!IMPORTANT]
> Сразу стоит оговорится: далее пойдет достаточно запутанное, если не сказать душное, описание регламента создания тестов. При этом, вы не сможете запустить созданные тесты самостоятельно, чтобы проверить их работоспособность. Поэтому их создание находится в категории "Сделайте как-нибудь": частичное несоответствие добавленных тестов регламенту не будут причиной для отклонения PR. Я буду рад, если вы добавите их хотя бы в каком-то виде и в правильном модуле, а мне будет достаточно привести их к корректному виду, а не писать целиком с нуля. Также тут продолжает работать правило из блока разработки функций: *"Посмотри на остальные и сделай единообразно"*
Все Unit-тесты находятся в модуле `OPI_Тесты`, в области `СлужебныеПроцедурыИФункции -> АтомарныеТесты -> Имя модуля без префикса`, и представляют из себя процедуру, название которой состоит из имени модуля (без префикса `OPI_`), нижнего подчеркивания и имени тестируемой функции
@@ -178,9 +177,8 @@
Процедура всегда должна содержать один или несколько вызовов функции `Обработать`, в которую передается результат выполнения, имя библиотеки и имя тестируемой функции. При желании реализовать несколько проверок в рамках одного теста, можно в качестве четвертого параметра указать строкой `Вариант`. Эти данные будут переданы в функцию проверки результата теста, о которой пойдет речь в следующем разделе
:::important
Для основного результата теста `Вариант` должен быть не указан
:::
> [!IMPORTANT]
> Для основного результата теста `Вариант` должен быть не указан
```bsl
...
@@ -202,12 +200,12 @@
Обработать(Результат, "PostgreSQL", "СоздатьТаблицу", "Ошибка типа");
```
Также в теле тестовой процедуры используются служебные комментарии `// SKIP` и `// END`. Они используются парсером при создании онлайн-документации: тестовая процедура является там наглядным примером кода для пользователя. При помощи данных служебных комментариев можно отсечь лишние строки, которые нужны в тесте, но не нужны в примере кода.
Также, в теле тестовой процедуры используются служебные комментарии `// SKIP` и `// END`. Они отслеживаются парсером при создании онлайн-документации: тестовая процедура является там наглядным примером кода для пользователя. При помощи данных служебных комментариев можно отсечь лишние строки, которые нужны в тесте, но не нужны в примере кода.
```bsl
...
// !!! Тут идет удаление таблицы перед тестом создания, чтобы не получить ошибку "уже существует"
// !!! Но в примере работы с функцией СоздатьТаблицу для документации это не нужно показывать
// Тут идет удаление таблицы перед тестом создания, чтобы не получить ошибку "уже существует"
// Но в примере работы с функцией СоздатьТаблицу для документации это не нужно показывать
OPI_PostgreSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); // SKIP
@@ -215,12 +213,12 @@
// END
// !!! Весь код после END не попадает в документацию
// Весь код после END не попадает в документацию
Обработать(Результат, "PostgreSQL", "СоздатьТаблицу");
```
Сама тестовая процедура всегда принимает один параметр - `ПараметрыФункции`. Несколько атомарных тестов объединяются по смыслу (чаще всего - по области в основном модуле библиотеки) в тестовые наборы. Тестовые наборы создаются также в модуле `OPI_Тесты`, в области `СлужебныйПрограммныйИнтерфейс -> ЗапускаемыеТесты -> Имя модуля без префикса`. Каждый тест должен принадлежать тестовому набору, там и определяются `ПараметрыФункции`
Сама тестовая процедура всегда принимает один параметр - `ПараметрыФункции`. Несколько атомарных тестов объединяются по смыслу (чаще всего - по области в основном модуле библиотеки) в тестовые наборы. Тестовые наборы создаются также в модуле `OPI_Тесты`, в области `СлужебныйПрограммныйИнтерфейс -> ЗапускаемыеТесты -> Имя модуля без префикса`. Каждый тест должен принадлежать тестовому набору, там определяются и `ПараметрыФункции`
```bsl
#Область ЗапускаемыеТесты
@@ -247,7 +245,7 @@
```
В тестовом наборе определяются параметры, передаваемые в тесты:
В тестовом наборе определяются параметры, передаваемые в тесты всего набора:
```
ПараметрыТеста = Новый Структура;
@@ -255,11 +253,13 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста);
```
Они добавляются при помощи специальной функции `OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию` и характеризуются идентификаторами, вроде `Ollama_URL`. На практике, это ключи JSON файла с секретными и не секретными данными для тестирования. Вам не будет доступен этот файл, поэтому вы можете не сильно заморачиваться над используемыми именами: вы можете найти уже существующие в тестовом наборе, если они подходят вам по смыслу (по аналогии с существующими тестами) или придумать новые, описав в PR или комментарии, что они означают.
Они добавляются в коллекцию при помощи специальной функции `OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию` и характеризуются идентификаторами, вроде `Ollama_URL`. На практике, это ключи JSON файла с секретными и не секретными данными для тестирования. Вам не будет доступен этот файл, поэтому вы можете не сильно заморачиваться над используемыми именами: можно найти уже существующие в тестовом наборе, если они подходят вам по смыслу (по аналогии с существующими тестами), или придумать новые, описав в PR, что они означают.
### Проверки тестов
Как уже было сказано ранее, каждый Unit-тест должен содержать вызов функции `Обработать`. Эта функция передает значение результата теста и его варианта в процедуру проверки, которая должна располагаться в модуле `OPI_ПолучениеДанныхТестов`, в области `СлужебныеПроцедурыИФункции -> Проверки` и иметь имя, равное имени процедуры теста, но с префиксом `Проверка_`, Например `Проверка_Telegram_ОтправитьТекстовоеСообщение`. В ней можно использовать утверждения для анализа корректности переданного результата при помощи функции `ОжидаетЧто`, а также ветвить проверки в зависимости от переданного варианта. Дополнительно проверка может иметь до трех нестандартных параметров, которые передаются при вызове функции `Обработать` после параметра `Вариант`
Как уже было сказано ранее, каждый Unit-тест должен содержать вызов функции `Обработать`. Эта функция передает значение результата теста и его варианта в соответствующую процедуру проверки, которая должна располагаться в модуле `OPI_ПолучениеДанныхТестов`, в области `СлужебныеПроцедурыИФункции -> Проверки` и иметь имя, равное имени процедуры теста, но с префиксом `Проверка_`, Например `Проверка_Telegram_ОтправитьТекстовоеСообщение`
В этой процедуре можно использовать утверждения для анализа корректности переданного результата при помощи функции `ОжидаетЧто`, а также ветвить проверки в зависимости от переданного значения в параметр `Вариант`. Дополнительно процедура проверки может иметь до трех нестандартных параметров, которые передаются при вызове функции `Обработать` после параметра `Вариант`
```bsl