Домашнее задание

Описание

Создать страницы для рынка валют.

Страницы

  1. Header страницы должен содержать ссылки на список валют (Currencies) и страницу добавления валюты (Add)

  2. Страница со списком валют.

    • Должна быть доступна по адресу /сurrencies
    • Должна содержать заголовок "Currency market".
    • Список должен содержать следующие данные:
      • Логотип
      • Имя
      • Короткое имя (bitcoin - btc)
      • Цена USD
      • Имя валюты должно быть кликабельно и вести на страницу соответствующей валюты.
      • Кнопки edit/delete для редактирования и удаления валюты.
    • Placeholder с текстом "No currencies" в случае пустого списка.
  3. Страница отдельной валюты

    • Страница должна быть доступна по адресу /сurrencies/{id}
    • Заголовок страницы должен содержать имя валюты
    • Страница должна содержать данные:
      • Логотип
      • Имя
      • Короткое имя (bitcoin - btc)
      • Цена USD
    • Страница должна содержать кнопки edit/delete
      • При нажатии на delete(css class - '.delete-button') валюта удаляется и происходит редирект на страницу /currencies (можно добавить модальное окно для подтверждения удаления, но не есть обязательным)
      • При нажатии на edit(css class - '.edit-button') происходит редирект на страницу /currencies/{id}/edit
  4. Страница добавления валюты

    • Страница должна быть доступна по адресу /currencies/add
    • Страница должна содержать форму добавления валюты
      • Имя (значения не больше 255 символов)
      • Короткое имя (значения не больше 10 символов и не менее 2-х)
      • Ссылка на логотип (валидный урл)
      • Цена USD (число с плавающей точкой)
      • Все поля обязательны для заполнения
      • Все поля формы должны быть с валидацией (только на бекенде, для тестов)
      • Ошибки валидации должны показываться под полями формы.
      • Должна содержать кнопку Save
    • После успешного добавления должен быть показан список /currencies с новой записью.
  5. Страница редактирования валюты

    • Страница должна быть доступна по адресу /currencies/{id}/edit
    • Страница должна содержать форму редактирования (требования по валидации те же, что и к странице добавления)
    • После успешного сохранения должна быть показана страница /currencies/{id} с обновленными значениями.

Установка

git clone
cd project dir
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate:fresh --seed

Некоторые подготовительные данные находятся в database/seeds.

Требования

Основные

  • Для выполнения взять код из этого репозитория. Репозиторий не должен быть форкнут.
  • Страницы должны быть созданы с помощью темплейтов Blade.
  • Темплейты должны наследовать друг друга.
  • Должна присутствовать защита от XSS и CSRF атак.
  • Все тесты должны проходить. Тесты менять нельзя, но очень даже можно смотреть. Если какой-то тест написан с ошибкой (sic!) - обращайтесь в комментариях.
  • Выложить выполненное ДЗ в отдельный репозиторий на github/bitbucket.

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

  • Приветствуется использование возможностей PHP 7.0-7.2
  • Приветствуется (но не обязательно) использование Material, Bootstrap или другого front-end фреймворка для добавления CSS стилей.

Запуск тестов

  1. Создайте APP_URL в .env

  2. Запустите тесты

php artisan dusk

Запуск тестов c Homestead

Зайдите на виртуальную машину через ssh из папки, где установлен Homestead

vagrant ssh

Перейдите в директорию проекта и запустите

php artisan serve --host=192.168.10.10 --port=8080

Установите в '.env' строку

APP_URL=http://192.168.10.10:8080

Теперь можно запустить тесты.

php artisan dusk

см. https://laravel.com/docs/master/dusk