私は ror が初めてで、 Capybara でテストを書くことに固執しています。私がする必要があるのは、ユーザーがボタンをクリックして新しいケースの作成をテストすることです。しかし、メガネが作成されていないかどうかを確認すると。
require 'spec_helper'
feature "User can create new case" to
background do
@ user = FactoryGirl.create (: sysadmin_user) @ user.make_current
@plan = FactoryGirl.create(:plan)
@ account = FactoryGirl.create (: account, plan: @plan, user: @user)
@trial = FactoryGirl.create trial (:trial, account: @account)
@ trial.make_current
@ trial_phase = FactoryGirl.create (: trial_phase, trial: @trial)
login (@ user.email, @ user.password)
end
scenario 'create new case' to
Case.where puts ("created_by =?", @ user.id).count #returns 0
fill_in 'case_subject_identifier', with 'MyNewTest'
expect {click_button ('Create New Case')}.to change(Case,:count).by(1)
Case.where puts ("created_by =?", @ user.id).count #returns 0
end
終わり
そして、これはコントローラです:
POST /cases を HTML として
def create`
@case = Case.where("subject_identifier = ? && trial_id = ?", params[:case]
[:subject_identifier], @current_trial.id).first
if @case || params[:case][:subject_identifier].blank?
respond_to :js
else`
params[:case][:subject_identifier]
=sanitize_value(params[:case[:subject_identifier])
if params[:case]
@case = Case.create(params[:case])``
if current_user.trial_member?(@current_trial, current_user)
@case.update_attributes(:location_id => current_user.default_location_id)
else
@case.update_attributes(:location_id => Location.find_by_name("None").id)
end
@case.update_attributes(:trial_phase_id
=>TrialPhase.find_by_name("None").id,:access
=> "None")
#redirect_to "/trial/#{@current_trial.id.to_s}/cases/#{@case.id.to_s}/case_view"
respond_to do |format|
format.js { render :js => %(window.location.pathname='#{'/trial
/'+@current_trial.id.to_s+'/cases/'+@case.id.to_s+'/case_view'}') }
end
end
end