Testing controller plugin

I have just recently started creating some plugins, mainly of the
controller variety. I have been looking for a tutorial or other
documentation detailing how to go about testing these plugins with
RSpec, but have not yet found anything helpful. Can anyone point me
toward such a thing?

Thanks,
Phillip

On 1 Feb 2010, at 15:14, Phillip K. wrote:

I have just recently started creating some plugins, mainly of the
controller variety. I have been looking for a tutorial or other
documentation detailing how to go about testing these plugins with
RSpec, but have not yet found anything helpful. Can anyone point me
toward such a thing?

Create a controller in your specs which uses the plugin in an
exemplary way, then asserts the behaviour of that controller.

cheers,
Matt

http://mattwynne.net
+447974 430184

On 8 Feb 2010, at 02:34, Phillip K. wrote:

Create a controller in your specs which uses the plugin in an
exemplary way, then asserts the behaviour of that controller.

Thanks, Matt. I have some parts of it working now, but am stumped
when trying to call an action. I need to do a post :create, but post
is not a known method. Do you happen to know of a controller plugin
that used RSpec that I could peruse?

Yeah, you need to convince RSpec that the describe blocks you’re using
are describing an ExampleGroup that’s about a Rails Controller, then
it will mix in the right methods for you. I think you can do something
like:

describe MySpecialTestController, :type => :controller do
end

That’s the general idea. I think someone else on the list will be able
to help more than me with the specifics.

As for a plug-in, I don’t know any off-hand… try a few popular ones
out on github and look for a spec directory in the root I guess.

Thanks,
Phillip


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

http://mattwynne.net
+447974 430184

Matt W. wrote:

to help more than me with the specifics.

As for a plug-in, I don’t know any off-hand… try a few popular ones
out on github and look for a spec directory in the root I guess.

Thanks, again, Matt for taking the time to respond. I was kind of
surprised by how many plugins use test::unit. I did finally find
subdomain_fu [1] and was able to get something working. However, this
approach tests the controller in a project and requires rspec-rails to
be installed for the project. I would really like to be able to test
this independent of a project. So if anyone knows how to test a
controller plugin with RSpec independent of a project, I’d really
appreciate some pointers.

Here’s what I have right now:

http://gist.github.com/298281

Thanks,
Phillip

[1] http://github.com/mbleigh/subdomain-fu

Matt W. wrote:

Thanks, Matt. I have some parts of it working now, but am stumped when
trying to call an action. I need to do a post :create, but post is not a
known method. Do you happen to know of a controller plugin that used
RSpec that I could peruse?

Thanks,
Phillip

On Mon, Feb 8, 2010 at 11:58 AM, Phillip K.
[email protected] wrote:

help more than me with the specifics.
project. So if anyone knows how to test a controller plugin with RSpec
independent of a project, I’d really appreciate some pointers.

The problem I’ve run into in trying to spec controller extensions in
isolation is that Rails controllers are not self-contained objects:
they need a bunch of surrounding state set up for them to work
properly. The testing facilities that ship with Rails hide that all
from you, but they do a lot of work for you in every test method, or
rspec code example.

In theory, you should be able to say:

=================================
require ‘rubygems’
require ‘action_controller/base’

class SomeController < ActionController::Base
def index
render :text => “this text”
end
end

describe SomeController do
describe “index” do
it “returns some text” do
c = SomeController.new
c.index.should == “this text”
end
end
end

When you do, however, you get this:

uninitialized constant ActionController::Metal (NameError)

Try to solve that and you’ll be starting down a deep rabbit hole. And
even if you do solve that, the next rails release may well break
whatever you did to solve it. The safest bet is to spec your plugin in
the context of a complete rails app.

That said, I’d love to make this easier to do with rspec, but I won’t
have cycles to drive this for quite some time. If anyone else is
interested in driving this, speak up and I’ll be happy to assist.

Cheers,
David

On 8 Feb 2010, at 16:53, David C. wrote:

describe MySpecialTestController, :type => :controller do

independent of a project, I’d really appreciate some pointers.
=================================
describe “index” do
uninitialized constant ActionController::Metal (NameError)

Try to solve that and you’ll be starting down a deep rabbit hole. And
even if you do solve that, the next rails release may well break
whatever you did to solve it. The safest bet is to spec your plugin in
the context of a complete rails app.

So maybe we just need to build a library of helpers that make it easy
to create a modified rails app in Cucumber features?

http://rubyforge.org/mailman/listinfo/rspec-users


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

http://mattwynne.net
+447974 430184

David C. wrote:

require ‘rubygems’
it “returns some text” do

David
Well, there it is. :slight_smile:

Thanks, David. I prefer to avoid rabbit holes.

Peace,
Phillip

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs