Bayselonarrend / OpenIntegrations

An 1C:Enterprise/OneScript and CLI toolbox for integration with APIs of popular online services (Telegram, VK, Viber, Bitrix24, Drive, Slack, etc.)
https://openintegrations.dev
MIT License
214 stars 25 forks source link

Добавил методы для работы со сделками Bitrix24 #39

Closed EvgeniyOst closed 2 months ago

EvgeniyOst commented 2 months ago

Добавил методы для работы со сделками:

Bayselonarrend commented 2 months ago

Отлично, спасибо. Если есть время и желание дальше еще что-то добавлять, то могу рассказать, как писать юнит-тесты под все это дело. Было бы тогда вообще огонь)

Можно также посмотреть, как они реализованы в модуле OPI_Тесты для вашего предыдущего PR по лидам

Bayselonarrend commented 2 months ago

Еще поправлю название у метода ПолучитьСтруктуруСделок на ПолучитьСтруктуруСделКИ изображение

EvgeniyOst commented 2 months ago

По тестам - да, было бы интересно попрактиковаться. В теории с yaxunit знаком, напишите, пожалуйста, что нужно поставить и как их запускать.

Bayselonarrend commented 2 months ago

Отлично

что нужно поставить и как их запускать

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

Тесты пишутся по особым правилам, ниже объясню зачем они нужны. Для создания тестов под новый раздел нужно:

  1. В модуле OPI_Тесты в области ЗапускаемыеТесты -> Bitrix24 добавить новую экспортную процедуру без параметров. Имя лучше сделать по примеру, чтобы было единообразно

image

  1. Добавить туда получение тестовых данных в структуру

image

Данные получаются методом OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию из json файла, где первый параметр это имя поля в файле, а второй - структура. Сам JSON файл можно разместить где угодно, нужно только добавить путь в функцию ПутьКФайлуДанных того же модуля OPI_ПолучениеДанныхТестов

image

Файл выглядит примерно вот так

image

Если нужны будут файлы для теста, то можно использовать вот эти (ОПИ сам преобразует в двоичные)

    "GIF": "https://openintegrations.dev/test_data/animation.gif",
    "Video": "https://openintegrations.dev/test_data/video.mp4",
    "Audio": "https://openintegrations.dev/test_data/song.mp3",
    "Audio2": "https://openintegrations.dev/test_data/song.m4a",
    "Document": "https://openintegrations.dev/test_data/document.docx",
    "Picture": "https://openintegrations.dev/test_data/picture.jpg",
    "Picture2": "https://openintegrations.dev/test_data/picture2.jpg",
    "Picture3": "https://openintegrations.dev/test_data/spy2.png",
  1. Далее в созданную процедуру в OPIТесты добавляется вызов процедур под каждую реализованную функцию API. Название должно состоять из имени модуля без префикса OPI, нижнего подчеркивания и имени метода библиотеки. В параметр передается та самая структура с тестовыми данными

image

  1. Далее создаются сами отдельные тесты под каждую функцию API. В них определяются переменны по параметрам из структуры, а затем идет вызов функции библиотеки.

image

Из основных моментов здесь:

image

image

Начинается с OPI_ПолучениеДанныхТестов.ОжидаетЧто(), где в скобках указывается переменная. Далее, после точки указывается, что проверяем: Заполнено(), ИмеетТип("Массив"), Равно("Такое то значение")

image

  1. И в конце тест добавляется в набор в модуле OPI_ПолучениеДанныхТестов. По примеру, как те, которые там уже есть

image


Это все довольно муторно, но так надо) С большего для автодокументации: доки на https://openintegrations.dev/ полностью автоматические и создаются из вот таких разнообразных правил

image

image

Так, например, одиночные тесты под каждую функцию это не только тесты сами по себе, но еще и примеры кода для документации. Для чего и нужны END и SKIP - они отмечают, какие строки кода не должны попасть в документацию. Запись же лога через // !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог попадают в пример ответа в тех же доках (при прогоне этих тестов в OneScript (они общие для OS и 1С) в Github Actions, как например здесь https://github.com/Bayselonarrend/OpenIntegrations/actions/runs/10512932585)

Bayselonarrend commented 2 months ago

Cfeху YaxUnit можно тут взять

https://github.com/bia-technologies/yaxunit/releases/tag/24.05