Проверка ролей пользователей в rspec FactoryBot - PullRequest
0 голосов
/ 29 июня 2019

У меня есть две роли пользователя, и я хочу написать тест в rspec, чтобы увидеть, присоединяются ли роли пользователя к пользователю после создания. Также администраторы должны иметь возможность переключать роли пользователей с одной на другую.

Вот моя модель пользователя, как я структурирую тип пользователей, используя enum

 enum role: [:batman, :superman]
  after_initialize :set_default_role, :if => :new_record?

  protected 

  def set_default_role
    self.role ||= :batman
  end

Я застрял в приведенном ниже тесте и не уверен, как проверить, была ли роль успешно присоединена. Также есть ли способ проверить, можно ли изменить роль пользователя для пользователя? Например, если пользователь был создан с ролью Бэтмена, его можно переключить на Супермена?

RSpec.describe User, type: :model do

  before do
    @user = FactoryBot.create(:user)
  end

  describe "creation" do
    it "can be created" do
      expect(@user).to be_valid
    end
  end
end

1 Ответ

2 голосов
/ 29 июня 2019

Вы также можете написать ожидания для полей модели. Код довольно понятен:

let(:user){ create(:user) }

it "has role batman" do
  expect(user.role).to eq("batman")
end

Для изменения:

it "changes role" do
  expect{
    do_something_with(user)
  }.to change{ user.reload.role }.from("batman").to("superman")
end

reload может не понадобиться в модельных тестах, но обычно для других (запрос / система / и т. Д.), Где запись может изменяться в дБ, но не в точном случае в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...