После курсов: тесто...
 
Уведомления
Очистить всё

После курсов: тестовое вернули с пометкой «слабовато». Разберёте?

5 Сообщения
4 Пользователи
2 Реакции
410 Просмотры
lena_bogatyreva
Сообщения: 27
Автор темы
Читает чужие PR бэкенд-разработчица
Присоединился: 3 года назад
[#30]

Летом закончила курсы по Rails, до этого много лет работала бухгалтером. Сделала тестовое: API для заметок на Rails 7.1 с регистрацией, CRUD и пагинацией, сидела неделю. Ответ пришёл через три дня одной строкой: «слабовато, удачи». Что именно слабовато, не написали. Кусок контроллера ниже, тесты есть только на модель.

class NotesController < ApplicationController
  def index
    @notes = Note.where(user_id: params[:user_id]).page(params[:page])
    render json: @notes
  end

  def update
    note = Note.find(params[:id])
    note.update(params.require(:note).permit(:title, :body))
    render json: note
  end
end

Подскажите, куда смотреть. Это уже четвёртое тестовое, и я начинаю думать, что дело во мне.


4 ответа
Егор64
Сообщения: 30
Читает чужие PR тимлид
Присоединился: 3 года назад

Дело не в тебе, а в двух вещах, которые видно сразу. Первая: user_id берётся из параметров, то есть любой прочитает чужие заметки, а в update заметка ищется вообще без привязки к пользователю. На безопасность смотрят первым делом и часто дальше уже не читают. Вторая: результат update не проверяется, при ошибке валидации клиент получит 200 и старые данные. И для API нужны тесты на запросы. Код при этом аккуратный, дотянуть несложно.


Ответ
kostya.sokurov
Сообщения: 73
Держит прод бэкенд-разработчик, senior
Присоединился: 4 года назад

Как это может выглядеть после правок, о которых пишет Егор:

def index
  notes = current_user.notes.order(created_at: :desc).page(params[:page])
  render json: notes
end

def update
  note = current_user.notes.find(params[:id])
  if note.update(note_params)
    render json: note
  else
    render json: { errors: note.errors }, status: :unprocessable_entity
  end
end

current_user.notes.find заодно бесплатно даёт 404 на чужую заметку. И положи README, его читают раньше кода.


Ответ
gosha70
Сообщения: 17
Пишет тесты бэкенд-разработчик, удалёнка
Присоединился: 3 года назад

В Москве на тестовые отвечают так же односложно. Помогает строчка в письме: «вот что я бы доделала, будь у меня ещё день»


Ответ
lena_bogatyreva
Сообщения: 27
Автор темы
Читает чужие PR бэкенд-разработчица
Присоединился: 3 года назад

Спасибо всем, и Егор64 отдельно за прямоту. Переделала: всё через current_user, ошибки валидации с 422, добавила восемь request-спеков и README. Отправила на следующую вакансию, и меня позвали на техническое собеседование в офис на Петроградке. Из Кудрово ехать час с лишним, но ради такого доеду. Про собеседование напишу, когда переживу)


Ответ