Skip to content

Instantly share code, notes, and snippets.

@crmaxx
Forked from Bazai/test_task.md
Created March 26, 2013 20:00
Show Gist options
  • Save crmaxx/5248669 to your computer and use it in GitHub Desktop.
Save crmaxx/5248669 to your computer and use it in GitHub Desktop.

#Суть задания Необходимо реализовать отдельным приложением парсер данных о чартерных рейсах с сайтов туроператоров, на ваш выбор:

  1. Лабиринт - http://online.labirint.travel/freight_monitor (Греция; город прибытия - KOS)
  2. NEC Travel - http://online.nectravel.ru/freight_monitor (Турция; город прибытия - ISTANBUL)

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

####Объяснение что и откуда можно брать в итоговой таблице туроператора: Пояснения в таблице

####Интерфейс готового приложения должен выглядеть примерно так: Нажатие кнопки "Парсить":

  1. Осуществляет запрос к туроператору
  2. Парсит информацию из полученной таблицы только в пределах заданных в календариках дат
  3. В зависимости от выбранной радиокнопки (xml/json/html) выводит результаты парсинга в выбранном формате

Интерфейс приложения

#Требования к заданию

  1. В качестве БД для задания использовать либо sqlite либо mysql. NoSQL не нужно.
  2. Считаем, что в системе обязательно будут присутствовать сущности: Рейс и Аэропорт
  3. Готовое приложение должно иметь покрытие тестами, хотя бы с помощью RSpec.
  4. Для запросов использовать gem 'rest-client'
  5. Для тестов правильности парсинга и запросов на сайт оператора использовать gem 'webmock'
  6. Шаблонизатор для вьюх - HAML
  7. В зависимости от выбранного значения радио-кнопок выдавать ответ в HTML, XML и JSON вариантах. Для отработки всего этого добра использовать gem 'rabl'

#Подсказки

Flight.rb:

belongs_to  :departure_airport,   :class_name => "Airport"
belongs_to  :arrival_airport,     :class_name => "Airport"

Не нужно тестировать фронтэнд. Важно протестировать класс парсера, правильное формирование запросов к внешнему сервису и замокать ответы от туроператора.

Если есть какие то непонятные моменты, не стесняйтесь задавать вопросы по адресу: bazzy.bazzy@gmail.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment