Skip to content

Runn1ng/TestTaskApiLaravel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Тестирование

Протестировать api можно проверить зайдя на вашсайт/test. Ответы на запросы выводятся в консоль

Обращение

Обращение к GET-запросу вашсайт/api/services/{service_id}/tarifs

  • response: ok
    • Возврщает json, содержащий данные о тарифах service_id
  • respone: error. Причины:

    • Тарифы по указанному service_id отсутствуют
    • Указанный service_id отсутствует

Обращение к PUT-запросу вашсайт/api/users/{user_id}/services/{service_id}/tarif

  • response: ok
  • respone: error. Причины:
    • Попытка изменить несуществующий user_id или service_id
    • Попытка задать tarif_id, который отсутствует у указанного service_id
    • service_id и user_id не находятся в одной строке

Тестовое задание

Дано

  1. Структура таблиц mysql

    services - сервисы пользователей

    tarifs - тарифы сервисов

    Тарифы связываются между собой через параметр tarif_group_id

  2. Файл с конфигом для доступа к БД - db_cfg.php

Задача: Написать код, реализующий API-запросы

  1. GET /services/{service_id}/tarifs - получает тарифы для конкретного сервиса. Тарифы могут быть только с тем же самым tarif_group_id, что и у текущего тарифа сервиса.
  2. PUT /users/{user_id}/services/{service_id}/tarif Данные: {"tarif_id": (ID тарифа из запроса на получениe тарифов)}

Общие требования к API

  1. Ответы на запросы в виде JSON

  2. JSON ответа по тарифам должен соответствовать примеру:

    {
    "result":"ok",
    "tarifs":[
        {
            "title":"Земля",
            "link":"http://www.mak72.ru/tarifi_internet/in/1.htm",
            "speed":50,
            "tarifs":[
                {"ID":2,"title":"Земля (3 месяца)","price":1350,"pay_period":"3","new_payday":"1452891600+0300","speed":50},
                {"ID":1,"title":"Земля","price":480,"pay_period":"1","new_payday":"1450213200+0300","speed":50},
                {"ID":3,"title":"Земля (6 месяцев)","price":2460,"pay_period":"6","new_payday":"1460754000+0300","speed":50},
                {"ID":4,"title":"Земля (12 месяцев)","price":4200,"pay_period":"12","new_payday":"1476565200+0300","speed":50}
            ]
        },
        ...
    ]
    }
    

    new_payday - timestamp даты следующего списания и таймзона. Рассчитывается как текущая дата полночь + pay_period

  3. Запрос на выставление тарифа должен возвращать {"result": "ok"} при успехе или {"result": "error"} в случае ошибки

  4. Запрос на выставление тарифа проставляет tarif_id и payday

  5. user_id и service_id будут задаваться вручную при проверке задания

Общие требования к результату

  1. Код должен работать в любом каталоге web-сервера (не обязательно в корневом)
  2. Код не должен использовать специфических для web-сервера функций и настроек
  3. Код должен использовать конфигурационный файл db_cfg.php только для настрок БД
  4. Прикладывать db_cfg.php к решению не нужно
  5. Точка входа в API должна быть в файле index.php
  6. Учесть при написании, что управление на index.php будет передаваться через обработку 404й ошибки

About

Test tack for sobesedovanie

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published