1

私は2つのモデルを持っています:LessonBookingとCustomerRequests

LessonBooking が支払われると、関連する CustomerRequest が予約済みとしてマークされます。注: LessonBooking は ID を介して直接関連付けられていませんが、顧客は支払い時に電子メールを入力します。この電子メールは、見つかった場合に「予約済み」としてマークされている既存の顧客のリクエストを確認するために使用されます。ここでは、lesson_booking.rb 内の関連するコードを示します。

event :payment_received do
  transition :form_started => :paid
end
after_transition :form_started => :paid do |booking|
  email = booking.teaching_relationship.student.account.email
  customer_request = CustomerRequest.find_by_email(email)
  unless customer_request.nil?
    customer_request.book
  end
end

CustomerRequest モデル自体にも、次に示すようにイベント「book」を持つステート マシンがあります。

event :book do
  transition [:new, :opened, :awaiting_response] => :booked
end

ここで、「form_started」から「paid」への LessonBooking の遷移と、それに続く「new」から「booked」への CustomerRequest の遷移をテストする仕様に合格することができません。

ここに私が書いた仕様があります:

context 'when there is an associated customer request' do
  before :each do
    @student = create(:student)
    relationship = create(:teaching_relationship, student: @student)
    @new_booking = create(:lesson_booking, teaching_relationship: relationship)
    @customer_request = create(:customer_request, student: @student, email: @student.account.email )
  end

  it "it changes the state of the customer request" do
    @new_booking.payment_received
    expect(@customer_request.state).to eq 'booked'
  end
end

終わり

私のテストは常に次のメモで失敗します。

expected: "booked"
got: "new"

私は一般的にテストすることを知っており、助けていただければ幸いです。

4

0 に答える 0