2014-12-30 5 views
0

я пытаюсь проверить следующий метод создания:передача пользовательского атрибута на тест контроллера RSpec factory_girl

def create 
    @appointment = Appointment.new(appointment_params) 
    set_start_end_time(params["start_hour"],params["start_minutes"]) 
    if @appointment.save 
    respond_to do |format| 
     format.js 
    end 
    end 
end 

def set_start_end_time(hours, minutes) 
    service_duration = @appointment.service ? @appointment.service.duration : 30 
    @appointment.start = @appointment.start.change({ hour: hours, min: minutes }) 
    @appointment.end = @appointment.start + (service_duration * 60) 
end 

Моя проблема заключается я не знаю, как добавить эти данные в качестве параметра на моих тестах:

params["start_hour"], params["start_minutes"] 

Это то, что я есть на appointments_controller_spec.rb до сих пор:

it "creates a new Appointment" do 
    expect { 
     post :create, {:appointment => { :client_phone => 123456, :start => "2014-12-09 11:00:00", :params => {"start_hour" => 11, "start_minutes" => 30}, :user_id => user.id, :service_id => @service.id }, :company_id => user.company.to_param, :user_id => user.id, format: :js} 
    }.to change(Appointment, :count).by(1) 
    end 

Но эти PARAMATERS делать Кажется, что nt достигает какого-либо метода.

Спасибо advamce

ответ

1

Вы params["start_hour"] и params["start_minutes"] в действии контроллера, но в спецификации, вы передаете params['appointment']['params']['start_hour']params['appointment']['params']['start_minutes']

Предполагая, что ваши действия контроллера, как вы хотите, попробуйте это в спецификация:

post :create, { :appointment => { :client_phone => 123456, :start => "2014-12-09 11:00:00" , :user_id => user.id, :service_id => @service.id }, :start_hour => 11, :start_minutes => 30, :company_id => user.company.to_param, format: :js} 
+0

thenks @evanbikes. Это сделало это. – ntonnelier

Смежные вопросы