2012-05-30 24 views
11

Estoy tratando de comenzar a probar ActiveAdmin, en particular, necesito probar member_action desde uno de los controladores de ActiveAdmin.Prueba de ActiveAdmin con rspec

¿Conocen algún buen tutorial sobre este tema?

Gracias,

Respuesta

20

Ésta es la manera que lo hice que trabajó para mí: -

app/admin/posts.rb

ActiveAdmin.register Post do 

    menu :parent => "Admin" 


    #path = /admin/posts/:id/comments 
    member_action :comments do 
    @post = Post.find(params[:id]) 
    end 
end 

spec/controladores/admin/posts_controller_spec. rb

require 'spec_helper' 
include Devise::TestHelpers 


describe Admin::PostsController do 
    render_views 

    before(:each) do 
    @user = mock_model(User, :email => "[email protected]") 
    request.env['tester'] = mock(Tester, :authenticate => @user, :authenticate! => @user) 
    end 

    describe "Get comments" do 
    before(:each) do 
     @post = Post.create! valid_attributes 
     Post.should_receive(:find).at_least(:once).and_return(@post) 
     get :comments, :id => @post.id 
    end 

    after(:each) do 
     @post.destroy 
    end 

    it "gets the proper record to update" do 
     assigns(:post).should eq(@post) 
    end 

    it "should render the actual template" do 
     response.should contain("Comments") 
     response.body.should =~ /Comments/m 
    end 
    end 
end 
+0

consigo un error "variab locales indefinido le o método 'request 'para # " – Calin

+1

Lo tengo, tengo que guardar mis especificaciones en especificaciones/controladores para que Rspec agregue automáticamente los métodos de solicitud a mis especificaciones – Calin

+2

¿Qué es Tester en este ejemplo? –

4
# app/admin/post.rb 
ActiveAdmin.register Post do 
end 

# spec/controller/admin/posts_controller_spec.rb 
describe Admin::PostsController do 
    subject { get :index } 
    its(:status) { should eq 200 } 
end 
+1

Tengo este error: 'constante no inicializada Admin (NameError)' Por favor, ayuda. :) – across

+0

@across Eso es porque su espacio de nombres puede ser diferente o no está cargado. Tal vez estés usando 'spec/spec_helper.rb' en lugar de' spec/rails_helper.rb' (una nueva pregunta de desbordamiento de la pila sería el camino a seguir para solucionarlo). – Dorian

Cuestiones relacionadas