How to test a plugin


#1

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?

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

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/’)

Thanks much!

Arthur


#2

On Dec 3, 9:13 am, Arthur C. removed_email_address@domain.invalid
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


#3

Thanks Fred.

It seems that the ar_plugin_skeleton is what I needed.

Thanks,
Arthur

Frederick C. wrote:

On Dec 3, 9:13�am, Arthur C. removed_email_address@domain.invalid
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


#4

On Jan 6, 7:41 am, Arthur C. removed_email_address@domain.invalid
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


#5

Wow,

Awesome, it works now.

Thanks for the quick and useful help.

Arthur

Frederick C. wrote:

On Jan 6, 7:41�am, Arthur C. removed_email_address@domain.invalid
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


#6

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 C. wrote:

Thanks Fred.

It seems that the ar_plugin_skeleton is what I needed.

Thanks,
Arthur

Frederick C. wrote:

On Dec 3, 9:13�am, Arthur C. removed_email_address@domain.invalid
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