radio-t / rt-bot

Мета-репо для движения "создай своего бота"
129 stars 46 forks source link

Добавить конфиги к ботам #93

Closed selevit closed 7 years ago

selevit commented 7 years ago

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

Нужно запилить конфигурационные файлы для всех ботов.

Пример конфига для карма-бота:

bot_name: "karma-bot"

defaults:
  username: "test-user"
  display_name: "Test User"

ignored_commands:
  - "Ignored message 1"
  - "Ignored message 2"
  - "Ignored message 3"

test_cases:
  - command: "/karma selevit"
    result: "^Карма пользователя @selevit: \\d+.$"

  - command:
      username: "selevit"
      text: "selevit +1"
    result: "^Вы не можете изменять свою карму!$"

  - command: "selevit++"
    result: "^Карма пользователя @selevit увеличена \\(текущее значение: \\d+\\).$"
terbooter commented 7 years ago

Позвольте высказать свои соображения. Функциональное тестирование и конфиг с описанием бота, конечно, нужны и важны. @selevit, cпасибо!

Но есть нюансы:

 test:
  request:
    url: /info 
  response:
    code: 200
    json:
     info: ...
     author: ...

 test:
  request:
    url: /event
    json:
      text: ...
      username: ...
      display_name: ... 
  response:
    code: 201
    json:
     text: ...
     bot: ...

UP: Представим, что какой-то из ботов решили использовать третьи лица в своем чате. Им придется либо проигнорировать текущий конфиг, либо разобраться и каким-то образом перенести к себе текущую реализацию тестирования.

selevit commented 7 years ago

С одной стороны да, с другой - спека для всех ботов одна и не стоит давать возможность ее переопределять в тесткейсах.

Добавил подробное описание конфига с комментариями про коды ответа.

https://github.com/umputun/rt-bot/blob/master/ci/README.md

terbooter commented 7 years ago

@selevit , @umputun И все-таки я считаю, что файл bot-spec.yml не должен лежать в папке с проектом бота. Так сейчас все помещено в один репозиторий только для скорости и удобства, но фактически каждая папка с ботом это отдельный репозиторий и нужно быть готовым что в любой момент такая папка превратится в отдельный репо. Какой тогда смысл будет у файла bot-spec.yml ?

Предлагаю. Давайте сделаем один конфиг файл ci/bot-spec.yml и там перечислим всех ботов и тесты к ним. По аналогии с etc/nginx.conf

selevit commented 7 years ago

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

umputun commented 7 years ago

мне наоборот кажется, что bot-spec.yml должен быть для каждого бота, особенно в контексте возможности "готовым что в любой момент такая папка превратится в отдельный репо"

То, что nginx часть задается отдельно, и она общая для всех - это не то чтоб правильная модель на которую стоит равняться, но наооборот - я так сделал потому, что не хотел возится с сборкой этого дела из ботов, что было бы более правильным решением.

terbooter commented 7 years ago

Хочу разобраться, не для холивара, а для своего общего развития :) Допустим, боты из папок уехали в отдельные репозитории. Кому-то оказался полезным один из этих проектов. Он решает немного дополнить функционал. Форкает проект себе. Вопрос, что ему делать с файлом bot-spec.yml? Я вижу три варианта: 1) Удалить 2) Найти и разобраться с велосипедом гайка от которого тут лежит 3) Комбинация двух предыдущих - сделать свои тесты