2015-10-19 51 views
1

我的rails应用程序有Institution模型,只有AdminUser可以创建。我app/admin/institution.rb文件看起来像这样:Rspec测试ActiveAdmin创建动作

ActiveAdmin.register Institution do 

    permit_params :name, :email 

    index do 
    id_column 
    %W(name email).each do |field| 
     column field.to_sym 
    end 
    actions 
    end 

    form do |f| 
    f.inputs do 
     f.input :name 
     f.input :email 
     f.actions 
    end 

    end 

end 

,并创建一个机构相应的路线是POST /admin/institutions

有没有一种简单的方法来测试rspec中的此路线/动作?在线测试ActiveAdmin的资源非常少。所有我能找到的是this,thisthis,其中最后一个看起来最接近我正在寻找,但不完全。

我只想要一种方法来测试POST /admin/institutions端点,只传递两个必需的参数(名称和电子邮件)。然而,下面的rspec测试失败:

describe Admin::InstitutionsController, :type => :controller do 

    before(:each) do 
    @user = FactoryGirl.create(:admin_user) 
    sign_in @user 
    end 

    it 'creates an institution' do 
    post :create, name: "test_name", email: "[email protected]" 
    expect(Institution.all.count).to eq(1) 
    end 

end 

没有机构正在创建,但我没有得到任何错误。任何帮助表示赞赏,谢谢。

-Greg

+0

'希望{职位:创建,命名: “TEST_NAME”,邮件: “[email protected]”}改变{机构.Count之间}。通过(1)' –

回答

2

尝试使用institution键命名空间的参数。在Rails中大多数基于资源 的表单中,表单字段按模型名称分组。给出如下尝试:

it 'creates an institution' do 
    post :create, institution: { name: "test_name", email: "[email protected]" } 
    expect(Institution.all.count).to eq(1) 
end 

原因是形式如何呈现这两个领域的文本输入框(检查HTML源代码)。该字段的名称应该是:

  • institution[name]
  • institution[email]