7 votes

Ecrire des spécifications de contrôleur et de fonctionnalités pour ActiveAdmin en utilisant RSpec ?

Comment écrit-on un contrôleur et une spécification de fonctionnalité pour le code ActiveAdmin suivant :

# app/admin/organization.rb
ActiveAdmin.register Organization do
  batch_action :approve do |selection|
    Organization.find(selection).each {|organization| organization.approve }
    redirect_to collection_path, notice: 'Organisations approuvées.'
  end
end

Voici ma spécification de fonctionnalité. Il ne peut pas trouver les 'Actions groupées' que ActiveAdmin charge dans le menu contextuel.

# spec/features/admin/organization_feature_spec.rb
require 'spec_helper'
include Devise::TestHelpers

describe 'Admin Organisation' do
  before(:each) do
    @user = FactoryGirl.create(:admin_user)
    login('admin@company.com', 'password1')
  end

  it 'approuve en lot' do
    organisation = FactoryGirl.create(:organization)
    visit admin_organizations_path
    check 'collection_selection_toggle_all'
    click_link 'Batch Actions'
    click_link 'Approuver la sélection'
    organisation.reload
    organisation.state.should eq 'approuvé'
  end
end

Version

  • Rails 3.2.14
  • ActiveAdmin 0.6.0

9voto

scarver2 Points 2605

J'ai compris comment construire une spécification de contrôleur.

# spec/controllers/admin/organizations_controller_spec.rb
require 'spec_helper'
include Devise::TestHelpers

describe Admin::OrganizationsController do
  render_views

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

  it 'approuver l'organisation' do
    @organization = FactoryGirl.create(:organization, state: 'pending')
    post :batch_action, batch_action: 'approve', collection_selection_toggle_all: 'on', collection_selection: [@organization.id]
    @organization.reload
    @organization.pending?.should be_false
  end

Si quelqu'un sait comment écrire la spécification de fonctionnalité, merci de partager cette information.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X