/aspirant-test-issue

Результат выполнения тестового задания

Primary LanguagePHP

Результат выполнения тестового задания
(само задание см. ниже)

Начало работы с проектом

  1. Клонировать репозиторий и перейти в его папку
  2. Запустить команду make build для первоначального билда приложения
  3. Теперь приложение должно быть доступно по адресу http://localhost/

Импорт фильмов из RSS-канала

Из папки с проектом выполнить команду make import-movies

Запуск юнит-тестов

Из папки с проектом выполнить команду make run-tests

Список всех новых консольных команд

Команда Описание
help Справка по командам
build Билд приложения
import-movies Импорт фильмов
migrate-test Выполнение миграций тестовой БД
migrate Выполнение миграций БД
rollback-test Откат последней миграции тестовой БД
rollback Откат последней миграции БД
run-tests Запуск юнит-тестов

Настроено тестирование в пайплайнах

Github Actions

Тестовое задание для PHP-программиста

JUNIOR-уровень

Измените существующий код так, чтобы на главной странице приложения было:

  • текущее время и дата;
  • название класса контроллера, который отвечает за отображение этой страницы;
  • название метода контроллера, который отправляет данные на эту страницу;

MIDDLE-уровень

Дополните существующий код так, чтобы:

  • в БД приложения были импортированы (с помощью консольной команды) 10 последних записей (не больше) из iTunes Movie Trailers;
  • на главной странице приложения были показаны эти 10 записей. Каждая должна состоять из заголовка трейлера и постера;
  • заголовок каждой записи должен быть ссылкой на подробную страницу трейлера. На подробной странице кроме заголовка и постера должно быть описание трейлера и ссылка на источиник, а так же ссылка для возврата к странице списка;
  • имейте в виду, что приложение будет разворачиваться и тестироваться на независимом хосте — у вас должно быть описано, как запустить обновление БД и импорт данных;
  • будьте готовы объяснить ваше решение.

Дополнительные скилы

  • Выполните все этапы для middle;
  • предложите другую схему получения rss и преобразования полученного в итоговый класс;
  • предожите схему валидации полей сущностей;
  • добавьте пользователей;
  • реализуйте отметки «Нравится» для загруженных трейлеров;
  • напишите тесты;

Несколько подсказок

  • По возможности используйте docker для запуска приложения. Docker-compose.yaml готов к использованию;
  • для получения данных лучше всего использовать RSS Feed сервиса;
  • не увлекайтесь внешним оформлением, но и не забывайте про него. Элементы должны быть расположены логично;
  • обращайте внимание на наличие (и обход) потенциальных ошибок;
  • ищите, что написано неправильно, исправляйте, если считаете нужным;
  • операции импорта должны быть идемпотентны;
  • используйте любые composer-пакеты на свой вкус.

Критерии оценки

Будет оцениваться качество кода, цикломатическая сложность методов, стиль кода и суть предложенных решений. Любое исправление существующих ошибок даёт преимущество, любое изменение архитектуры в целом в лучшую сторону — ещё большее преимущество. Естественно, мы будем смотреть историю коммитов и изменений кода в процессе выполнения задачи.

Если вы не доделали задачу — покажите, что сделали, объясните, что планировалось и на чем застряли (если застряли). Если у вас есть предложения или комментарии по сути подобного проекта — обязательно опишите их, это так же будет преимуществом.

Итог работы

Ваш код должен быть выгружен в любой общедоступный репозиторий и снабжен README-файлом, в котором вы опишете свою работу и инструкции, как запустить ваш проект. Тестовые задания в виде архивов, ссылок на файловые хостинги и подобном (то есть не репозиторий) рассматриваться не будут.

Ваша история коммитов покажет, как вы работали над заданием: к примеру, один коммит с заголовком, не отражающим сути работы, является недостатком.