/test-gazprom

Тестовое задание: Газпром-нефть Автоматизация

Primary LanguageTypeScript

Задание

  • Обязательно использование React, Typescript;
  • Желательно использовать UI-библиотеку готовых компонентов (прекрасно если Ant Design, но допустимо также Material UI и любые другие);
  • Желательно использовать сервис для подготовки mock API (см. примечания), например Mockoon;
  • В остальном разрешено использовать любые библиотеки которые посчитаешь уместными (Redux, Mobx, Axios и др.)

Задача:

  1. Подготовить эндпоинты /documents1 и /documents2 С обоих возвращаются данные в формате :

{

id: string,

name: string,

quantity: number,

deliveryDate: string,

price: number,

currency: ‘USD’ | ‘RUB’, } []

  1. Создать таблицу в которой будут данные из обоих запросов, по умолчанию отсортированные по deliveryDate. Все поля кроме id, являются столбцами этой таблицы.

  2. Добавить возможность сортировки по всем столбцам этой таблицы.

  3. Для каждой строки таблицы нужно добавить галочку выбора товара, а также в заголовке таблицы галочку выбора всех товаров.

  4. В последней строке таблицы вывести результирующий показатель «Общее количество» (сумма всех quantity).

  5. Добавить кнопку «Аннулировать», при нажатии на которую должно появляться модальное окно с текстом «Вы уверены что хотите аннулировать товар(ы): [названия выбранных товаров через запятую]», и кнопки «Применить», «Отклонить».

Если пользователь нажимает кнопку «Применить» отправить запрос на эндпоинт /cancel с перечислением id товаров которые мы хотим аннулировать. Если пользователь нажимает кнопку «Отклонить» закрыть модальное окно.

Примечания:

  1. Допустимо захардкодить данные, получаемые с сервера по эндпоинтам /documents1 и /documents2 и отправляемые на сервер по эндпоинту /cancel, но будет плюсом имитировать клиент-серверное взаимодействие через сервис mock API.
  2. Требований к дизайну нет, все на усмотрение разработчика.

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

Для запуска проекта:

  1. Клонировать репозиторий
  2. Установить зависимости npm install
  3. Запустить проект npm run dev
  4. Открыть окружение из файла apiConfig.json в корне проекта.
  5. Запустить сервер