Forum: Ruby on Rails How to test a plugin

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F3f27949240208ffe170ff8ba6abe6ea?d=identicon&s=25 Arthur Chan (arthurccube)
on 2008-12-03 10:13
Guys,

I've created a plugin, i wanna put my automated test there.

However, I got bad file descriptor error when i run the test like normal
unit test file:
"ruby plugins/acts_as_fox/test/acts_as_fox_test.rb"

How to test a plugin?

Also, is it right to say that I should only put my unit tests (but not
functional test for example) for the plugin in the plugin test folder?


<code for acts_as_fox_test.rb>

require File.join(File.dirname(__FILE__), 'test_helper')

require 'test/unit'


class ActsAsTripTest < Test::Unit::TestCase
  # Replace this with your real tests.
  def test_this_plugin
    flunk
  end
end

</code>


<code for test_helper.rb>
plugin_test_dir = File.dirname(__FILE__)
require File.join(plugin_test_dir, '/test_helper')

# Load the Rails environment
require File.join(plugin_test_dir, '../../../../config/environment')
require 'active_record/fixtures'

# Load up out database & create our logger
databases = YAML::load(IO.read(plugin_test_dir + '/database.yml'))
ActiveRecord::Base.logger = Logger.new(plugin_test_dir + "/debug.log")

# Connect to our plugin test database
ActiveRecord::Base.establish_connection(databases[ENV['DB'] || 'mysql'])

# Load the test schema into the database
load(File.join(plugin_test_dir, 'schema.rb'))

# Load fixtures for the plugin
Test::Unit::TestCase.fixture_path = File.join(plugin_test_dir,
'fixtures/')
</code>

Thanks much!

Arthur
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-12-03 10:24
(Received via mailing list)
On Dec 3, 9:13 am, Arthur Chan <rails-mailing-l...@andreas-s.net>
wrote:
> Guys,
>
> I've created a plugin, i wanna put my automated test there.
>
> However, I got bad file descriptor error when i run the test like normal
> unit test file:
> "ruby plugins/acts_as_fox/test/acts_as_fox_test.rb"
>
> How to test a plugin?
>
Well what I do is based on a skeleton plugin I have here:
http://github.com/fcheung/ar_plugin_skeleton/tree/master

It doesn't do functional tests but that's basically a case of adding

require 'action_controller/test_case'
require 'action_controller/test_process'

ActionController::Routing::Routes.draw do |map|
  # Install the default route as the lowest priority.
  map.connect ':controller/:action/:id'
end
ActionController::Base.view_paths = [Test::Unit::TestCase.fixture_path
+ 'views/']

to the test helper file

Fred
F3f27949240208ffe170ff8ba6abe6ea?d=identicon&s=25 Arthur Chan (arthurccube)
on 2008-12-05 08:16
Thanks Fred.

It seems that the ar_plugin_skeleton is what I needed.

Thanks,
Arthur

Frederick Cheung wrote:
> On Dec 3, 9:13�am, Arthur Chan <rails-mailing-l...@andreas-s.net>
> wrote:
>> Guys,
>>
>> I've created a plugin, i wanna put my automated test there.
>>
>> However, I got bad file descriptor error when i run the test like normal
>> unit test file:
>> "ruby plugins/acts_as_fox/test/acts_as_fox_test.rb"
>>
>> How to test a plugin?
>>
> Well what I do is based on a skeleton plugin I have here:
> http://github.com/fcheung/ar_plugin_skeleton/tree/master
>
> It doesn't do functional tests but that's basically a case of adding
>
> require 'action_controller/test_case'
> require 'action_controller/test_process'
>
> ActionController::Routing::Routes.draw do |map|
>   # Install the default route as the lowest priority.
>   map.connect ':controller/:action/:id'
> end
> ActionController::Base.view_paths = [Test::Unit::TestCase.fixture_path
> + 'views/']
>
> to the test helper file
>
> Fred
F3f27949240208ffe170ff8ba6abe6ea?d=identicon&s=25 Arthur Chan (arthurccube)
on 2009-01-06 08:41
I can run functional test now, thanks!!

A problem I found in running the test is that it does not load the
route.rb so that it fails in some action --- e.g. assets_path/_url not
defined.

Any clue to it is appreciated.

Arthur

Arthur Chan wrote:
> Thanks Fred.
>
> It seems that the ar_plugin_skeleton is what I needed.
>
> Thanks,
> Arthur
>
> Frederick Cheung wrote:
>> On Dec 3, 9:13�am, Arthur Chan <rails-mailing-l...@andreas-s.net>
>> wrote:
>>> Guys,
>>>
>>> I've created a plugin, i wanna put my automated test there.
>>>
>>> However, I got bad file descriptor error when i run the test like normal
>>> unit test file:
>>> "ruby plugins/acts_as_fox/test/acts_as_fox_test.rb"
>>>
>>> How to test a plugin?
>>>
>> Well what I do is based on a skeleton plugin I have here:
>> http://github.com/fcheung/ar_plugin_skeleton/tree/master
>>
>> It doesn't do functional tests but that's basically a case of adding
>>
>> require 'action_controller/test_case'
>> require 'action_controller/test_process'
>>
>> ActionController::Routing::Routes.draw do |map|
>>   # Install the default route as the lowest priority.
>>   map.connect ':controller/:action/:id'
>> end
>> ActionController::Base.view_paths = [Test::Unit::TestCase.fixture_path
>> + 'views/']
>>
>> to the test helper file
>>
>> Fred
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-01-06 09:57
(Received via mailing list)
On Jan 6, 7:41 am, Arthur Chan <rails-mailing-l...@andreas-s.net>
wrote:
> I can run functional test now, thanks!!
>
> A problem I found in running the test is that it does not load the
> route.rb so that it fails in some action --- e.g. assets_path/_url not
> defined.
>
> Any clue to it is appreciated.
>
You need to define any routes needed  in the
ActionController::Routing::Routes.draw block in test_helper.rb

Fred
F3f27949240208ffe170ff8ba6abe6ea?d=identicon&s=25 Arthur Chan (arthurccube)
on 2009-01-06 10:01
Wow,

Awesome, it works now.

Thanks for the quick and useful help.

Arthur

Frederick Cheung wrote:
> On Jan 6, 7:41�am, Arthur Chan <rails-mailing-l...@andreas-s.net>
> wrote:
>> I can run functional test now, thanks!!
>>
>> A problem I found in running the test is that it does not load the
>> route.rb so that it fails in some action --- e.g. assets_path/_url not
>> defined.
>>
>> Any clue to it is appreciated.
>>
> You need to define any routes needed  in the
> ActionController::Routing::Routes.draw block in test_helper.rb
>
> Fred
This topic is locked and can not be replied to.