github
Advanced Search
  • Home
  • Pricing and Signup
  • Explore GitHub
  • Blog
  • Login

pluginaweek / plugin_test_helper

  • Admin
  • Watch Unwatch
  • Fork
  • Your Fork
  • Pull Request
  • Download Source
    • 28
    • 2
  • Source
  • Commits
  • Network (2)
  • Downloads (10)
  • Wiki (1)
  • Graphs
  • Branch: master

click here to add a description

click here to add a homepage

  • Branches (1)
    • master ✓
  • Tags (10)
    • v0.3.0
    • v0.2.1
    • v0.2.0
    • v0.1.6
    • v0.1.5
    • v0.1.4
    • v0.1.3
    • v0.1.2
    • v0.0.2
    • v0.0.1
Sending Request…
Enable Donations

Pledgie Donations

Once activated, we'll place the following badge in your repository's detail box:
Pledgie_example
This service is courtesy of Pledgie.

Simplifies plugin testing by creating an isolated Rails environment that simulates its usage in a real application — Read more

  cancel

http://www.pluginaweek.org

  cancel
  • Private
  • Read-Only
  • HTTP Read-Only

This URL has Read+Write access

Add gemspec 
obrie (author)
Tue Jun 09 20:34:26 -0700 2009
commit  4fbfd7ec92d8aa486873bcd19c3b899be88fa4ea
tree    b427078369ed6b050c590f2cc892e21cbce7da62
parent  333e7d2a3918a171819a8f70ef722fd785a3e2f0
plugin_test_helper /
name age
history
message
file .gitignore Loading commit data...
file CHANGELOG.rdoc
file LICENSE
file README.rdoc
file Rakefile
directory generators/
directory lib/
file plugin_test_helper.gemspec
directory test/
README.rdoc

plugin_test_helper

plugin_test_helper simplifies plugin testing by creating an isolated Rails environment that simulates its usage in a real application.

Resources

API

  • api.pluginaweek.org/plugin_test_helper

Bugs

  • pluginaweek.lighthouseapp.com/projects/13283-plugin_test_helper

Development

  • github.com/pluginaweek/plugin_test_helper

Source

  • git://github.com/pluginaweek/plugin_test_helper.git

Description

Plugins often need to initialize a full Rails environment, whether it be for accessing a database or simulating controller access. Traditionally, this has been done by just loading the application that the plugin was added to. However, this can cause all sorts of environment variables to change, making it seem as though the plugin is having problems when it may be something else. It also means that the plugin cannot be tested individually.

plugin_test_helper helps solve this problem by allowing plugins to create their own basic Rails environment with the ability to override any part of it, be it the database configuration, environment configuration, or adding models, controllers, helpers, etc. The following testing structure is assumed:

  your_plugin/
  your_plugin/test
  your_plugin/test/app_root
  your_plugin/test/app_root/app
  your_plugin/test/app_root/config
  your_plugin/test/app_root/db
  etc.

The app_root directory is just like your run-of-the-mill Rails application. It can contain the same directories as your full application.

To help generate the various parts of your test application, the following generators are available:

  • plugin_test_helper
  • plugin_test_structure
  • plugin_test_model
  • plugin_test_controller
  • plugin_test_migration

NOTE that you DO NOT need to generate the entire application structure. All that is required is that your test helper load plugin_test_helper. If you do not define a part of the test application (such as the environment configurations or the database configuration), then it will use the existing implementation in plugin_test_helper/generators/plugin_test_structure/templates. However, you can override any of these files by simply defining them in your plugin, using the same directory structure.

Usage

plugin_test_helper

Generates a test helper file that should be required by all unit/functional/integration tests in your plugin.

Example:

  $ ruby script/generate plugin_test_helper acts_as_most_popular
        create  vendor/plugins/acts_as_most_popular/test/test_helper.rb
  Loaded suite script/generate
  Started

  Finished in 0.000439 seconds.

  0 tests, 0 assertions, 0 failures, 0 errors

plugin_test_structure

Generates the entire test application structure. If you keep all files within your plugin, then you will not need to depend on the plugin_test_helper plugin when testing it.

Example:

  $ ruby script/generate plugin_test_structure acts_as_most_popular
        create  vendor/plugins/acts_as_most_popular/test/app_root
        create  vendor/plugins/acts_as_most_popular/test/app_root/config
        create  vendor/plugins/acts_as_most_popular/test/app_root/app
        create  vendor/plugins/acts_as_most_popular/test/app_root/lib
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/environments
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/routes.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/boot.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/environment.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/database.yml
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/environments/sqlite.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/environments/sqlite3.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/environments/mysql.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/environments/in_memory.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/config/environments/postgresql.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/app/controllers
        create  vendor/plugins/acts_as_most_popular/test/app_root/app/controllers/application_controller.rb
  Loaded suite script/generate
  Started

  Finished in 0.000548 seconds.

  0 tests, 0 assertions, 0 failures, 0 errors

plugin_test_model

Generates a model within your plugin’s test application. This uses a similar syntax to that of the Rails model generator.

Example:

  $ ruby script/generate plugin_test_model acts_as_most_popular Person
        create  vendor/plugins/acts_as_most_popular/test/app_root/app/models/
        create  vendor/plugins/acts_as_most_popular/test/app_root/test/fixtures/
        create  vendor/plugins/acts_as_most_popular/test/app_root/app/models/person.rb
        create  vendor/plugins/acts_as_most_popular/test/app_root/test/fixtures/people.yml
        create  vendor/plugins/acts_as_most_popular/test/app_root/db/migrate
        create  vendor/plugins/acts_as_most_popular/test/app_root/db/migrate/001_create_people.rb
  Loaded suite script/generate
  Started

  Finished in 0.000435 seconds.

  0 tests, 0 assertions, 0 failures, 0 errors

plugin_test_controller

Generates a controller within your plugin’s test application. This uses a similar syntax to that of the Rails controller generator.

Example:

  $ ruby script/generate plugin_test_controller acts_as_most_popular Person
        create  vendor/plugins/acts_as_most_popular/test/app_root/app/controllers/
        create  vendor/plugins/acts_as_most_popular/test/app_root/app/views/person
        create  vendor/plugins/acts_as_most_popular/test/app_root/app/controllers/person_controller.rb
  Loaded suite script/generate
  Started

  Finished in 0.000432 seconds.

  0 tests, 0 assertions, 0 failures, 0 errors

plugin_test_migration

Generates a migration within your plugin’s test application. This uses a similar syntax to that of the Rails migration generator.

Example:

  $ ruby script/generate plugin_test_migration acts_as_most_popular CreatePeople
        create  vendor/plugins/acts_as_most_popular/test/app_root/db/migrate
        create  vendor/plugins/acts_as_most_popular/test/app_root/db/migrate/001_create_people.rb
  Loaded suite script/generate
  Started

  Finished in 0.000443 seconds.

  0 tests, 0 assertions, 0 failures, 0 errors

plugin_test_console

Generates a script for running an interactive console with your plugin’s test application.

Example:

  $ ruby script/generate plugin_test_console acts_as_most_popular
        create  vendor/plugins/acts_as_most_popular/test/app_root/../../script
        create  vendor/plugins/acts_as_most_popular/test/app_root/../../script/console
  Loaded suite script/generate
  Started

  Finished in 0.000267 seconds.

  0 tests, 0 assertions, 0 failures, 0 errors

Dependencies

Rails 2.3 or later

References

  • Mark Meves for the initial implementation
Blog | Support | Training | Contact | API | Status | Twitter | Help | Security
© 2010 GitHub Inc. All rights reserved. | Terms of Service | Privacy Policy
Powered by the Dedicated Servers and
Cloud Computing of Rackspace Hosting®
Dedicated Server