gem「aasm」にてuserの状態遷移を実装。
rspecにてテストしてます。
userの新規作成時の状態(初期値)は「unactivated」です。
なのでrspec側で「unactivatedであること」を確認してますがエラーになります。
なぜでしょうか?
分かる方教えてください。
user
ruby
1class User < ApplicationRecord 2 3 include AASM 4 5 aasm do 6 7 state :unactivated, initial: true 8 state :activated 9 state :paused 10 state :stoped 11 state :deleted 12 13 14 event :active do 15 before do 16 self.activated_at = Time.zone.now 17 end 18 transitions from: :unactivated, to: :activated 19 end 20 21 22 event :pause do 23 transitions from: :activated, to: :paused 24 end 25 26 27 event :stop do 28 transitions from: [:activated, :paused], to: :stoped 29 end 30 31 32 event :unsubscribe do 33 transitions from: [:activated, :paused], to: :deleted 34 end 35 36 37 event :reactive do 38 transitions from: [:paused, :stoped, :deleted], to: :activated 39 end 40 41 end 42 43 44 45end 46
rspec
ruby
1require 'rails_helper' 2 3RSpec.describe User, type: :model do 4 5 6 describe '状態遷移のテスト' do 7 8 it "user作成時は「非アクティブ」であること" do 9 user = build(:user) 10 #↓ここでエラー 11 expect(user).to have_state(:unactivated) 12 expect(user).not_to have_state(:activated) 13 end 14 15 16 end 17 18 19 20end
エラーメッセージ
ruby
1Failures: 2 3 1) User 状態遷移のテスト user作成時は「非アクティブ」であること 4 Failure/Error: expect(user).to have_state(:unactivated) 5 expected that :activated would be :unactivated (on :default) 6 # ./spec/models/user_spec.rb:108:in `block (3 levels) in <top (required)>'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。