Skip to content

denis-gol/bell_test_proj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание для middle/senior PHP/Symfony разработчика

Используя PHP 7 и фреймворк Symfony 5 (последние версии PHP 7.4 и Symfony 5.2), а также Doctrine ORM и с использованием Docker контейнера, написать REST API для создания и получения книг и авторов из базы данных в формате JSON.

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

  • Написать миграцию, засеивающую тестовые таблицы ~10 000 книгами и ~10 000 авторами
  • Реализовать запросы на создание книги и автора в базе /book/create, /author/create
  • Реализовать запрос на получение списка книг с автором из базы /book/search c поиском по названию книги
  • Написать Unit-тест
  • Используя возможности Symfony по локализации контента, сделать мультиязычный метод получения информации о книге /{lang}/book/{Id}, где {lang} = en|ru и {Id} = Id книги. Формат ответа: {Id: 1, 'Name':'War and Peace|Война и мир'} - поле Name выводить на языке локализации запроса.

Пример формата сущностей:

Автор:

{
  "Id": 1,
  "Name": "Лев Толстой"
}

Книга:

{
  "Id": 1,
  "Name": "War and peace|Война и мир",
  "Author": [
    {
      "Id": 1,
      "Name": "Лев Толстой"
    }
  ]
}

Результат нужно опубликовать на Github с мини-инструкцией по сборке приложения, включая docker-compose.yml, и прислать нам ссылку.


ЗАПУСК ПРОЕКТА

  • клонировать репозиторий папку /project

В ПАПКЕ С ПРОЕКТОМ:

  • в папке project/docker, скопировать и переименовать файл
    .env.example -> .env

ОТКРЫТЬ ТЕРМИНАЛ 1:

  • перейти в папку project/docker, запустить:
    > docker-compose up

    дождаться пока сбилдятся образы и запустятся все контейнеры (10-15 мин)
    убедиться, что Постгрес создал БД, Роль, Гранты (читать консоль)

ОТКРЫТЬ ТЕРМИНАЛ 2:

  • перейти в папку project/docker

  • убедиться, что все контейнеры удачно запустились (запущены: php, nginx, pgs)
    > docker ps

  • зайти в контейнер php:
    > docker-compose exec phpfpm bash

    при этом мы должны уже находиться в папке /var/www/site.local

НАХОДЯСЬ ВНУТРИ КОНТЕЙНЕРА (ТЕРМИНАЛ 2):

  • установить зависимости:
    > composer install

  • проверить, что Симфони ожил:

    в браузере набрать localhost:8888/
    должна открыться титульная страница с Симфони 5.2

  • можно проверить подключение к БД из IDE:

    testuser/testpass
    db: testapp
    port: 54320

  • накатить миграции:
    > php bin/console doctrine:migrations:migrate
    ответить yes
    если подключались снаружи к БД, то проверить что таблицы создались

  • накатить фикстуры:
    > php bin/console doctrine:fixtures:load
    ответить yes

  • запустить тесты:
    > php bin/phpunit

  • доступны роуты

    импортировать в постман коллекцию из файла bell_test_proj.pm_collection.json

About

test_descr_for_graphql

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published