Writing specs for a plugin module for ActionController

Hello,
I’m trying to spec a plugin that includes a module that adds
functionality to ActionController below is what I’ve come up with:

vendor/plugins/custom_attribute_fu/spec/active_record_spec.rb

require File.dirname(FILE) + ‘/spec_helper’

class TestPerson < ActiveRecord::Base
end

class TestPeopleController < ActionController::Base
#calling defines_custom_attributes should add the
custom_attribute_definitions method, I’ve defined it explicitly for
now to just get the tests running
#defines_custom_attributes

def custom_attribute_definitions
end
end

describe TestPeopleController do

describe “handling GET /custom_attribute_definitions” do

 before(:each) do
   @controller = TestPeopleController.new
   @request     = ActionController::TestRequest.new
   @response    = ActionController::TestResponse.new
 end

 def do_get
   get :custom_attribute_definitions
 end

 it "should be successful" do
   do_get
   response.should be_success
 end

end
end

When I run the spec I get:

ActionView::TemplateError in ‘TestPeopleController handling GET /
custom_attribute_definitions should be successful’
undefined method `custom_attribute_definitions’ for TestPerson(id:
integer, name: string):Class

What I don’t understand is that why get :custom_attribute_definitions
is trying to call that method on TestPerson rather than
TestPersonController.

I’m sure there’s a better way to set this up - any advice would be
greatly appreciated!

Les

On Thu, Jul 31, 2008 at 2:02 PM, Leslie F.
[email protected] wrote:

class TestPeopleController < ActionController::Base

end

appreciated!
I get a very different result. Here’s what I did:

$ rails foo
$ cd foo
$ script/plugin install git://github.com/dchelimsky/rspec.git
$ script/plugin install git://github.com/dchelimsky/rspec-rails.git
$ script/generate rspec
$ mkdir vendor/plugins/custom_attribute_fu
$ mkdir vendor/plugins/custom_attribute_fu/spec
$ touch vendor/plugins/custom_attribute_fu/spec/spec_helper.rb
$ touch vendor/plugins/custom_attribute_fu/spec/active_record_spec.rb

Then I added the text you posted above to active_record_spec.rb and
the following to spec_helper.rb:

require File.join(File.dirname(FILE), *%w[… … … … spec
spec_helper])

Then, from the RAILS_ROOT:

$ rake spec:plugins
F

ActionView::MissingTemplate in ‘TestPeopleController handling GET
/custom_attribute_definitions should be successful’

This is with rails 2.1 and the latest rspec (from git).

Am I doing something different from what you did?