Skip to content

Latest commit

 

History

History
66 lines (46 loc) · 3.73 KB

File metadata and controls

66 lines (46 loc) · 3.73 KB

Тестовое задание Software Engineer(Ruby On Rails)

Цель

Разработать API сервер, используя возможности Ruby On Rails

Дано

Для этой задачи мы хотим получить бекенд для построения различных приложений: веб или мобильных.

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

Схема исходных данных

Пользователь(
  id
  email
  name
)

Программа(
  id
  title
  description
)

Пример данных для программ

https://github.com/KosyanMedia/travelpayouts_RoR_test/blob/master/data.json

Нужно реализовать API методы, которые позволят

  • создавать новых пользователей
  • получить информацию по одному пользователю
  • показать список всех имеющихся программ
  • метод, который создает подписку пользователя на программу
  • показать список программ на которые подписан пользователь
  • Метод автокомплита популярных программ. На вход метода приходит строка term. Метод возвращает программы, в которых term является подстрокой title программы. Метод возвращает список программ отсортированных по популярности. От большей популярности, к меньшей. Популярность определяется так: чем больше пользователей подписано на программу, тем она популярней

Технические требования

  • Ruby MRI 2.5+
  • Ruby On Rails > 5.0
  • ActiveRecord
  • Docker

На выходе должен получиться проект на Github.com с инструкцией по запуску. Приложение должно запускаться в Docker

Бонусные задания

Эти задания не оцениваются в первую очередь, но будут иметь вес при прочих равных

  • Реализовать логику и API метод создания бана(блокировки) подписки пользователя на программу. Если пользователь заблокирован в программе, то в списке программ именно этого пользователя она не будет выводиться
  • Покрыть функциональность API сервера тестами

После выполнения

  • Ты использовал какие-то дополнительные библиотеки? Если да, то зачем?
  • Сколько примерно времени заняло выполнение тестового?
  • Если бы нужно было вывести этот проект в продакшен, что бы ты улучшил?
  • Как тебе наше тестовое задание? Мы будем рады любому фидбеку