Stubbing objects in Radiant


#1

Hi,

Currently I’m writing some tests for a front end shopping cart extension
I
wrote for a client. Of course, for the functional testing I’d like to
stub
out some models to verify proper methods are being called by my
controller.
Unfortunately this doesn’t appear to be “just working” under the
extension
model like it does in Rails.

In fact, it doesn’t appear that my stub objects in
extension/test/mocks/test/ are even being loaded. I realize it may be
that
the load path in a Radiant environment does not even bother looking for
stubs first.

Is anyone aware of a way to stub models in Radiant extension testing?
Is
anyone aware of the load path ordering in Radiant?

Any help or insight is appreciated!

Barry Hess
removed_email_address@domain.invalid
http://www.bjhess.com


#2

I don’t believe test/mocks/test is included in the load path, as we’ve
never had anyone using mocks in extensions yet. In
extension/test/test_helper.rb, you should probably require them
specifically, or in the individual tests. If there is a canonical way
(i.e. the Rails way) that they are loaded, any info about that would be
appreciated.

Honestly, I’ve fallen in love with RSpec lately and appreciate the power
of mocks and stubs… good call.

Sean


#3

Thanks for the hints, Sean.

In extensions/shopping_cart/test/test_helper.rb I required the stub/mock
model object:

require File.dirname(FILE) + “/mocks/test/order_mailer”

In extensions/shopping_cart/test/mocks/test/order_mailer.rb I required
the
original model object:

require File.dirname(FILE) + ‘/…/…/…/app/models/order_mailer’

I imagine there’s a way to require all stub files in the mocks/test
directory. Unfortunately I’m not rockstar enough to know how off the
top of
my head.

(Andrew, I decided against Mocha simply because I haven’t used it
before,
nor has the contracting group I’m working with. I just didn’t want to
add
another moving piece. I definitely will look into it in the future,
though.)

~Barry

On 7/18/07, Sean C. removed_email_address@domain.invalid wrote:

controller.

Is anyone aware of a way to stub models in Radiant extension
Site: http://lists.radiantcms.org/mailman/listinfo/radiant


Barry Hess
removed_email_address@domain.invalid
http://www.bjhess.com


#4

I’ve been using Mocha in my extensions for a little while now. All I do
is
require ‘rubygems’ (unnecessary I know, but it’s habit) and ‘mocha’.
I guess RSpec is getting closer to stable, so maybe it’s time for a
second
look.

-Andrew


#5

Barry Hess wrote:

Thanks for the hints, Sean.

In extensions/shopping_cart/test/test_helper.rb I required the stub/mock
model object:

require File.dirname(FILE) + “/mocks/test/order_mailer”

Dir-glob to the rescue! Try this:

Dir[File.dirname(FILE) + "/mocks/test/*.rb].each do |file|
require file
end

That will load all of your mocks in the test helper.

Sean


#6

Thanks, Sean.

Another note. If you have any unit tests relating to the model that’s
been
stubbed, you’ll need to explicitly require the real model. Something
like:

require File.dirname(FILE) + ‘/…/…/app/models/order_mailer’

~Barry

On 7/18/07, Sean C. removed_email_address@domain.invalid wrote:

Search: http://radiantcms.org/mailing-list/search/
Site: http://lists.radiantcms.org/mailman/listinfo/radiant


Barry Hess
removed_email_address@domain.invalid
http://www.bjhess.com