plugin_test_helper 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,58 +1,49 @@
1
- *SVN*
1
+ == master
2
2
 
3
- *0.1.4* (June 22nd, 2008)
3
+ == 0.1.5 / 2008-07-13
4
+
5
+ * Don't load ActiveSupport before the environment has been initialized since it can hide problems in the plugin being tested
6
+ * Simplify how to determine which routing file to use
7
+
8
+ == 0.1.4 / 2008-06-22
4
9
 
5
10
  * Remove log files from gems
6
11
 
7
- *0.1.3* (May 5th, 2008)
12
+ == 0.1.3 / 2008-05-05
8
13
 
9
14
  * Update documentation
10
-
11
15
  * Update to be compatible with Rails 2.1
12
-
13
16
  * Add PluginAWeek::PluginTestHelper::PluginLocator so that you don't have to explicitly define config.plugins if the test app has anything under vendor/plugins
14
-
15
17
  * Add default routes
16
18
 
17
- *0.1.2* (October 15th, 2007)
19
+ == 0.1.2 / 2007-10-15
18
20
 
19
21
  * Don't create vendor/plugins in the plugin_test_structure generator
20
-
21
22
  * Don't load actionwebservice by default
22
-
23
23
  * Remove unnecessary configuration options from environment
24
24
 
25
- *0.1.1* (September 18th, 2007)
25
+ == 0.1.1 / 2007-09-18
26
26
 
27
27
  * Allow RAILS_FRAMEWORK_ROOT to be specified
28
-
29
28
  * fixture_path should be a string, not an array
30
-
31
29
  * Move test fixtures out of the test application root directory
32
30
 
33
- *0.1.0* (September 5th, 2007)
31
+ == 0.1.0 / 2007-09-05
34
32
 
35
33
  * Fixtures are now expected to be in plugin_root/test/fixtures instead of plugin_root/test/app_root/test/fixtures
36
-
37
34
  * Add support for running a console on the test application
38
-
39
35
  * Add basic functional tests
40
-
41
36
  * Convert dos newlines to unix newlines
42
37
 
43
- *0.0.2* (August 15th, 2007)
38
+ == 0.0.2 / 2007-08-15
44
39
 
45
40
  * Autoload plugin even if the plugin doesn't define an app_root
46
-
47
41
  * A proxy plugin for the plugin being tested is no longer needed in favor of doing selective plugin loading.
48
-
49
42
  * Make sure RAILS_ROOT is in the load path
50
-
51
43
  * Automate setting of the fixtures path
52
-
53
44
  * Load test_help instead of test/unit so that additional libraries are automatically loaded like they are in your application's tests
54
45
 
55
- *0.0.1* (May 31st, 2007)
46
+ == 0.0.1 / 2007-05-31
56
47
 
57
48
  * Initial release
58
49
 
File without changes
@@ -5,21 +5,21 @@ environment that simulates its usage in a real application.
5
5
 
6
6
  == Resources
7
7
 
8
- Wiki
9
-
10
- * http://wiki.pluginaweek.org/Plugin_test_helper
11
-
12
8
  API
13
9
 
14
10
  * http://api.pluginaweek.org/plugin_test_helper
15
11
 
12
+ Bugs
13
+
14
+ * http://pluginaweek.lighthouseapp.com/projects/13283-plugin_test_helper
15
+
16
16
  Development
17
17
 
18
- * http://dev.pluginaweek.org/browser/trunk/plugin_test_helper
18
+ * http://github.com/pluginaweek/plugin_test_helper
19
19
 
20
20
  Source
21
21
 
22
- * http://svn.pluginaweek.org/trunk/plugin_test_helper
22
+ * git://github.com/pluginaweek/plugin_test_helper.git
23
23
 
24
24
  == Description
25
25
 
data/Rakefile CHANGED
@@ -3,46 +3,54 @@ require 'rake/rdoctask'
3
3
  require 'rake/gempackagetask'
4
4
  require 'rake/contrib/sshpublisher'
5
5
 
6
- PKG_NAME = 'plugin_test_helper'
7
- PKG_VERSION = '0.1.4'
8
- PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
9
- RUBY_FORGE_PROJECT = 'pluginaweek'
10
-
11
- desc 'Default: run unit tests.'
6
+ spec = Gem::Specification.new do |s|
7
+ s.name = 'plugin_test_helper'
8
+ s.version = '0.1.5'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = 'Simplifies plugin testing by creating an isolated Rails environment that simulates its usage in a real application.'
11
+
12
+ s.files = FileList['{generators,lib,test}/**/*'].to_a - FileList['generators/plugin_test_structure/templates/app_root/log/*'].to_a + %w(CHANGELOG.rdoc init.rb LICENSE Rakefile README.rdoc)
13
+ s.require_path = 'lib'
14
+ s.has_rdoc = true
15
+ s.test_files = Dir['test/**/*_test.rb']
16
+
17
+ s.author = 'Aaron Pfeifer'
18
+ s.email = 'aaron@pluginaweek.org'
19
+ s.homepage = 'http://www.pluginaweek.org'
20
+ s.rubyforge_project = 'pluginaweek'
21
+ end
22
+
23
+ desc 'Default: run all tests.'
12
24
  task :default => :test
13
25
 
14
- desc 'Test the plugin_test_helper plugin.'
26
+ desc "Test the #{spec.name} plugin."
15
27
  Rake::TestTask.new(:test) do |t|
16
28
  t.libs << 'lib'
17
- t.pattern = 'test/**/*_test.rb'
29
+ t.test_files = spec.test_files
18
30
  t.verbose = true
19
31
  end
20
32
 
21
- desc 'Generate documentation for the plugin_test_helper plugin.'
33
+ begin
34
+ require 'rcov/rcovtask'
35
+ namespace :test do
36
+ desc "Test the #{spec.name} plugin with Rcov."
37
+ Rcov::RcovTask.new(:rcov) do |t|
38
+ t.libs << 'lib'
39
+ t.test_files = spec.test_files
40
+ t.rcov_opts << '--exclude="^(?!lib/|generators/.*/.*_generator.rb)"'
41
+ t.verbose = true
42
+ end
43
+ end
44
+ rescue LoadError
45
+ end
46
+
47
+ desc "Generate documentation for the #{spec.name} plugin."
22
48
  Rake::RDocTask.new(:rdoc) do |rdoc|
23
49
  rdoc.rdoc_dir = 'rdoc'
24
- rdoc.title = 'PluginTestHelper'
50
+ rdoc.title = spec.name
25
51
  rdoc.template = '../rdoc_template.rb'
26
52
  rdoc.options << '--line-numbers' << '--inline-source'
27
- rdoc.rdoc_files.include('README')
28
- rdoc.rdoc_files.include('lib/**/*.rb')
29
- end
30
-
31
- spec = Gem::Specification.new do |s|
32
- s.name = PKG_NAME
33
- s.version = PKG_VERSION
34
- s.platform = Gem::Platform::RUBY
35
- s.summary = 'Simplifies plugin testing by creating an isolated Rails environment that simulates its usage in a real application.'
36
-
37
- s.files = FileList['{generators,lib,test}/**/*'].to_a - FileList['generators/plugin_test_structure/templates/app_root/log/*'].to_a + %w(CHANGELOG init.rb MIT-LICENSE Rakefile README)
38
- s.require_path = 'lib'
39
- s.autorequire = 'plugin_test_helper'
40
- s.has_rdoc = true
41
- s.test_files = Dir['test/**/*_test.rb']
42
-
43
- s.author = 'Aaron Pfeifer'
44
- s.email = 'aaron@pluginaweek.org'
45
- s.homepage = 'http://www.pluginaweek.org'
53
+ rdoc.rdoc_files.include('README.rdoc', 'CHANGELOG.rdoc', 'LICENSE', 'lib/**/*.rb')
46
54
  end
47
55
 
48
56
  Rake::GemPackageTask.new(spec) do |p|
@@ -51,14 +59,14 @@ Rake::GemPackageTask.new(spec) do |p|
51
59
  p.need_zip = true
52
60
  end
53
61
 
54
- desc 'Publish the beta gem'
62
+ desc 'Publish the beta gem.'
55
63
  task :pgem => [:package] do
56
- Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{PKG_FILE_NAME}.gem").upload
64
+ Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{spec.name}-#{spec.version}.gem").upload
57
65
  end
58
66
 
59
- desc 'Publish the API documentation'
67
+ desc 'Publish the API documentation.'
60
68
  task :pdoc => [:rdoc] do
61
- Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{PKG_NAME}", 'rdoc').upload
69
+ Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{spec.name}", 'rdoc').upload
62
70
  end
63
71
 
64
72
  desc 'Publish the API docs and gem'
@@ -71,10 +79,10 @@ task :release => [:gem, :package] do
71
79
  ruby_forge = RubyForge.new.configure
72
80
  ruby_forge.login
73
81
 
74
- %w( gem tgz zip ).each do |ext|
75
- file = "pkg/#{PKG_FILE_NAME}.#{ext}"
82
+ %w(gem tgz zip).each do |ext|
83
+ file = "pkg/#{spec.name}-#{spec.version}.#{ext}"
76
84
  puts "Releasing #{File.basename(file)}..."
77
85
 
78
- ruby_forge.add_release(RUBY_FORGE_PROJECT, PKG_NAME, PKG_VERSION, file)
86
+ ruby_forge.add_release(spec.rubyforge_project, spec.name, spec.version, file)
79
87
  end
80
88
  end
@@ -0,0 +1,10 @@
1
+ Description:
2
+ Creates a script that will allow the test app to be run via the ruby console. Pass the plugin name, under_scored.
3
+
4
+ The console script is generated in test/app_root/script.
5
+
6
+ Example:
7
+ `./script/generate plugin_test_console has_comments`
8
+
9
+ creates an console script:
10
+ Console: test/app_root/script/console
@@ -1,4 +1,4 @@
1
- # Generates a test console for the plugin's test application
1
+ # Generates a test console for the plugin's test application.
2
2
  class PluginTestConsoleGenerator < Rails::Generator::NamedBase
3
3
  def manifest #:nodoc:
4
4
  record do |m|
@@ -0,0 +1,13 @@
1
+ Description:
2
+ Stubs out a new controller and its views within a plugin. Pass the plugin name,
3
+ controller name (either CamelCased or under_scored) and a list of views as arguments.
4
+
5
+ This generates a controller class in app_root/app/controllers and view
6
+ templates in app_root/app/views/controller_name.
7
+
8
+ Example:
9
+ `./script/generate plugin_test_controller has_comments Posts index show`
10
+
11
+ Post controller with URLs like /posts/index.
12
+ Controller: app/controllers/posts_controller.rb
13
+ Views: app/views/posts/index.html.erb [...]
@@ -0,0 +1,11 @@
1
+ Description:
2
+ Creates the test helper that should be required for every unit/functional test.
3
+ Pass the plugin name, under_scored.
4
+
5
+ The test helper is generated in test/.
6
+
7
+ Example:
8
+ `./script/generate plugin_test_helper has_comments`
9
+
10
+ creates an test helper:
11
+ Test Helper: test/test_helper.rb
@@ -2,8 +2,13 @@
2
2
  class PluginTestHelperGenerator < Rails::Generator::NamedBase
3
3
  def manifest #:nodoc:
4
4
  record do |m|
5
- plugin_test_root = "vendor/plugins/#{name}/test"
6
- m.file 'test_helper.rb', "#{plugin_test_root}/test_helper.rb"
5
+ plugin_root = "vendor/plugins/#{name}"
6
+
7
+ # Test directory
8
+ m.directory File.join(plugin_root, 'test')
9
+
10
+ # Test helper
11
+ m.file 'test_helper.rb', File.join(plugin_root, 'test/test_helper.rb')
7
12
  end
8
13
  end
9
14
 
@@ -0,0 +1,13 @@
1
+ Description:
2
+ Stubs out a new database migration. Pass the plugin name, migration name
3
+ (either CamelCased or under_scored), and an optional list of attribute pairs
4
+ as arguments.
5
+
6
+ A migration class is generated in test/app_root/db/migrate prefixed by a
7
+ timestamp of the current date and time.
8
+
9
+ Example:
10
+ `./script/generate plugin_test_migration has_comments AddPosts`
11
+
12
+ If the current date is May 14, 2008 and the current time 09:09:12, this creates the AddPosts migration
13
+ db/migrate/20080514090912_add_posts.rb
@@ -0,0 +1,14 @@
1
+ Description:
2
+ Stubs out a new model. Pass the plugin name, model name, either CamelCased or
3
+ under_scored, and an optional list of attribute pairs as arguments.
4
+
5
+ This generates a model class in test/app_root/app/models, a test fixture in
6
+ test/fixtures/singular_name.yml, and a migration in test/app_root/db/migrate.
7
+
8
+ Examples:
9
+ `./script/generate plugin_test_model has_comments post`
10
+
11
+ creates an Post model, fixture, and migration:
12
+ Model: test/app_root/app/models/post.rb
13
+ Fixtures: test/fixtures/posts.yml
14
+ Migration: test/app_root/db/migrate/XXX_add_posts.rb
@@ -0,0 +1,19 @@
1
+ Description:
2
+ Stubs out a new test application. Pass the plugin name, under_scored.
3
+
4
+ This generates the application structure in test/app_root
5
+
6
+ Examples:
7
+ `./script/generate plugin_test_structure has_comments`
8
+
9
+ creates a controller and application configurations:
10
+ Controller: test/app_root/app/controllers/application.rb
11
+ Configurations: test/app_root/config/boot.rb
12
+ test/app_root/config/database.yml
13
+ test/app_root/config/environment.rb
14
+ test/app_root/config/routes.rb
15
+ test/app_root/config/environments/in_memory.rb
16
+ test/app_root/config/environments/mysql.rb
17
+ test/app_root/config/environments/postgresql.rb
18
+ test/app_root/config/environments/sqlite.rb
19
+ test/app_root/config/environments/sqlite3.rb
@@ -16,8 +16,8 @@ require 'config/boot'
16
16
  require 'plugin_test_helper/extensions/initializer'
17
17
 
18
18
  # Load the Rails environment and testing framework
19
- require_or_load 'config/environment'
20
- require_or_load 'test_help'
19
+ require 'config/environment'
20
+ require 'test_help'
21
21
 
22
22
  # Undo changes to RAILS_ENV
23
23
  silence_warnings {RAILS_ENV = ENV['RAILS_ENV']}
@@ -1,3 +1,4 @@
1
+ # Loads fixtures into the database when running the test app via the console
1
2
  (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(Rails.root, '../fixtures/*.{yml,csv}'))).each do |fixture_file|
2
3
  Fixtures.create_fixtures(File.join(Rails.root, '../fixtures'), File.basename(fixture_file, '.*'))
3
4
  end
@@ -1,4 +1,3 @@
1
- require 'active_support'
2
1
  require 'plugin_test_helper/plugin_locator'
3
2
 
4
3
  module PluginAWeek #:nodoc:
@@ -9,7 +8,8 @@ module PluginAWeek #:nodoc:
9
8
  module Initializer
10
9
  def self.included(base)
11
10
  base.class_eval do
12
- alias_method_chain :require_frameworks, :test_helper
11
+ alias_method :require_frameworks_without_test_helper, :require_frameworks
12
+ alias_method :require_frameworks, :require_frameworks_with_test_helper
13
13
  end
14
14
  end
15
15
 
@@ -18,7 +18,6 @@ module PluginAWeek #:nodoc:
18
18
  require_frameworks_without_test_helper
19
19
 
20
20
  require 'plugin_test_helper/generator'
21
- require 'plugin_test_helper/extensions/routing'
22
21
  end
23
22
  end
24
23
 
@@ -27,13 +26,23 @@ module PluginAWeek #:nodoc:
27
26
  # using the helper
28
27
  module Configuration
29
28
  def self.included(base) #:nodoc:
30
- base.class_eval do
31
- alias_method_chain :environment_path, :test_helper
32
- alias_method_chain :default_load_paths, :test_helper
33
- alias_method_chain :default_database_configuration_file, :test_helper
34
- alias_method_chain :default_controller_paths, :test_helper
35
- alias_method_chain :default_plugin_locators, :test_helper
36
- alias_method_chain :default_plugin_paths, :test_helper
29
+ alias_method_chain base, :environment_path, :test_helper
30
+ alias_method_chain base, :default_load_paths, :test_helper
31
+ alias_method_chain base, :default_database_configuration_file, :test_helper
32
+ alias_method_chain base, :default_routes_configuration_file, :test_helper
33
+ alias_method_chain base, :default_controller_paths, :test_helper
34
+ alias_method_chain base, :default_plugin_locators, :test_helper
35
+ alias_method_chain base, :default_plugin_paths, :test_helper
36
+ end
37
+
38
+ # Defines a "lite" version of ActiveSupport's alias chaining extensions.
39
+ # This is defined here and acts on a particular class so as to not conflict
40
+ # with other classes that we have no control over
41
+ def self.alias_method_chain(klass, target, feature)
42
+ with_method, without_method = "#{target}_with_#{feature}", "#{target}_without_#{feature}"
43
+ klass.class_eval do
44
+ alias_method without_method, target
45
+ alias_method target, with_method
37
46
  end
38
47
  end
39
48
 
@@ -62,6 +71,12 @@ module PluginAWeek #:nodoc:
62
71
  File.exists?(database_file) ? database_file : File.join(HELPER_RAILS_ROOT, 'config/database.yml')
63
72
  end
64
73
 
74
+ # Load the routes configuration file from the plugin or the helper
75
+ def default_routes_configuration_file_with_test_helper
76
+ routes_file = default_routes_configuration_file_without_test_helper
77
+ File.exists?(routes_file) ? routes_file : File.join(HELPER_RAILS_ROOT, 'config/routes.rb')
78
+ end
79
+
65
80
  # Add the helper's controllers path
66
81
  def default_controller_paths_with_test_helper
67
82
  paths = default_controller_paths_without_test_helper
@@ -77,7 +92,7 @@ module PluginAWeek #:nodoc:
77
92
  # Add the helper's vendor/plugins path
78
93
  def default_plugin_paths_with_test_helper
79
94
  paths = default_plugin_paths_without_test_helper
80
- paths << File.join(HELPER_RAILS_ROOT, '/vendor/plugins')
95
+ paths << File.join(HELPER_RAILS_ROOT, 'vendor/plugins')
81
96
  end
82
97
  end
83
98
  end
@@ -2,7 +2,8 @@ require 'rails_generator'
2
2
 
3
3
  module PluginAWeek #:nodoc:
4
4
  module PluginTestHelper
5
- # The base generator for creating parts of the test application
5
+ # The base generator for creating parts of the test application. The first
6
+ # argument of the generator is always the name of the plugin.
6
7
  class Generator < Rails::Generator::NamedBase
7
8
  attr_accessor :plugin_name
8
9
 
@@ -12,10 +13,12 @@ module PluginAWeek #:nodoc:
12
13
  end
13
14
 
14
15
  private
16
+ # The root path of the plugin's test directory
15
17
  def plugin_test_root
16
18
  "vendor/plugins/#{plugin_name}/test"
17
19
  end
18
20
 
21
+ # The root path of the plugin's test app
19
22
  def plugin_app_root
20
23
  "#{plugin_test_root}/app_root"
21
24
  end
@@ -1,6 +1,7 @@
1
1
  module PluginAWeek #:nodoc:
2
2
  module PluginTestHelper
3
3
  # Assists in the initialization process by locating the plugin being tested
4
+ # so that it is tested as if the plugin were loaded in a regular app
4
5
  class PluginLocator < Rails::Plugin::Locator
5
6
  def plugins
6
7
  [Rails::Plugin.new(File.expand_path('.'))]
@@ -0,0 +1,21 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class PluginTestConsoleGeneratorTest < Test::Unit::TestCase
4
+ def setup
5
+ setup_app('empty')
6
+
7
+ require 'rails_generator'
8
+ require 'rails_generator/scripts/generate'
9
+ Rails::Generator::Base.sources << Rails::Generator::PathSource.new(:plugin_test_console, "#{Rails.root}/../../generators")
10
+ Rails::Generator::Scripts::Generate.new.run(['plugin_test_console', 'acts_as_foo'])
11
+ end
12
+
13
+ def test_should_create_console
14
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/script/console")
15
+ end
16
+
17
+ def teardown
18
+ teardown_app
19
+ FileUtils.rm_r(Dir.glob('test/app_root/*'))
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class PluginTestControllerGeneratorTest < Test::Unit::TestCase
4
+ def setup
5
+ setup_app('empty')
6
+
7
+ require 'rails_generator'
8
+ require 'rails_generator/scripts/generate'
9
+ Rails::Generator::Base.sources << Rails::Generator::PathSource.new(:plugin_test_controller, "#{Rails.root}/../../generators")
10
+ Rails::Generator::Scripts::Generate.new.run(['plugin_test_controller', 'acts_as_foo', 'site', 'index'])
11
+ end
12
+
13
+ def test_should_create_controller
14
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/app/controllers/site_controller.rb")
15
+ end
16
+
17
+ def test_should_create_view
18
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/app/views/site/index.html.erb")
19
+ end
20
+
21
+ def teardown
22
+ teardown_app
23
+ FileUtils.rm_r(Dir.glob('test/app_root/*'))
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class PluginTestHelperGeneratorTest < Test::Unit::TestCase
4
+ def setup
5
+ setup_app('empty')
6
+
7
+ require 'rails_generator'
8
+ require 'rails_generator/scripts/generate'
9
+ Rails::Generator::Base.sources << Rails::Generator::PathSource.new(:plugin_test_helper, "#{Rails.root}/../../generators")
10
+ Rails::Generator::Scripts::Generate.new.run(['plugin_test_helper', 'acts_as_foo'])
11
+ end
12
+
13
+ def test_should_create_test_helper
14
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/test_helper.rb")
15
+ end
16
+
17
+ def teardown
18
+ teardown_app
19
+ FileUtils.rm_r(Dir.glob('test/app_root/*'))
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class PluginTestMigrationGeneratorTest < Test::Unit::TestCase
4
+ def setup
5
+ setup_app('empty')
6
+
7
+ require 'rails_generator'
8
+ require 'rails_generator/scripts/generate'
9
+ Rails::Generator::Base.sources << Rails::Generator::PathSource.new(:plugin_test_migration, "#{Rails.root}/../../generators")
10
+ Rails::Generator::Scripts::Generate.new.run(['plugin_test_migration', 'acts_as_foo', 'create_bars'])
11
+ end
12
+
13
+ def test_should_create_migration
14
+ migration_path = Dir["#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/db/migrate/*"].first
15
+ assert_not_nil migration_path
16
+ assert_match /^.*_create_bars.rb$/, migration_path
17
+ end
18
+
19
+ def teardown
20
+ teardown_app
21
+ FileUtils.rm_r(Dir.glob('test/app_root/*'))
22
+ end
23
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class PluginTestModelGeneratorTest < Test::Unit::TestCase
4
+ def setup
5
+ setup_app('empty')
6
+
7
+ require 'rails_generator'
8
+ require 'rails_generator/scripts/generate'
9
+ Rails::Generator::Base.sources << Rails::Generator::PathSource.new(:plugin_test_model, "#{Rails.root}/../../generators")
10
+ Rails::Generator::Scripts::Generate.new.run(['plugin_test_model', 'acts_as_foo', 'bar'])
11
+ end
12
+
13
+ def test_should_create_model
14
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/app/models/bar.rb")
15
+ end
16
+
17
+ def test_should_create_migration
18
+ migration_path = Dir["#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/db/migrate/*"].first
19
+ assert_not_nil migration_path
20
+ assert_match /^.*_create_bars.rb$/, migration_path
21
+ end
22
+
23
+ def test_should_create_fixtures
24
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/fixtures/bars.yml")
25
+ end
26
+
27
+ def teardown
28
+ teardown_app
29
+ FileUtils.rm_r(Dir.glob('test/app_root/*'))
30
+ end
31
+ end
@@ -0,0 +1,57 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class PluginTestStructureGeneratorTest < Test::Unit::TestCase
4
+ def setup
5
+ setup_app('empty')
6
+
7
+ require 'rails_generator'
8
+ require 'rails_generator/scripts/generate'
9
+ Rails::Generator::Base.sources << Rails::Generator::PathSource.new(:plugin_test_structure, "#{Rails.root}/../../generators")
10
+ Rails::Generator::Scripts::Generate.new.run(['plugin_test_structure', 'acts_as_foo'])
11
+ end
12
+
13
+ def test_should_create_application_controller
14
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/app/controllers/application.rb")
15
+ end
16
+
17
+ def test_should_create_in_memory_environment
18
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/environments/in_memory.rb")
19
+ end
20
+
21
+ def test_should_create_mysql_environment
22
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/environments/mysql.rb")
23
+ end
24
+
25
+ def test_should_create_postgresql_environment
26
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/environments/postgresql.rb")
27
+ end
28
+
29
+ def test_should_create_sqlite_environment
30
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/environments/sqlite.rb")
31
+ end
32
+
33
+ def test_should_create_sqlite3_environment
34
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/environments/sqlite3.rb")
35
+ end
36
+
37
+ def test_should_create_boot_file
38
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/boot.rb")
39
+ end
40
+
41
+ def test_should_create_database_configuration
42
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/database.yml")
43
+ end
44
+
45
+ def test_should_create_environment_configuration
46
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/environment.rb")
47
+ end
48
+
49
+ def test_should_create_routes
50
+ assert File.exists?("#{Rails.root}/vendor/plugins/acts_as_foo/test/app_root/config/routes.rb")
51
+ end
52
+
53
+ def teardown
54
+ teardown_app
55
+ FileUtils.rm_r(Dir.glob('test/app_root/*'))
56
+ end
57
+ end
data/test/test_helper.rb CHANGED
@@ -26,5 +26,10 @@ class Test::Unit::TestCase
26
26
  ActiveRecord::Base.reset_subclasses
27
27
  Dependencies.clear
28
28
  ActiveRecord::Base.clear_reloadable_connections!
29
+
30
+ # Forget that the environment files were loaded so that a new app environment
31
+ # can be set up again
32
+ $".delete('config/environment.rb')
33
+ $".delete('test_help.rb')
29
34
  end
30
35
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plugin_test_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Pfeifer
8
- autorequire: plugin_test_helper
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-22 00:00:00 -04:00
12
+ date: 2008-07-13 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -26,17 +26,18 @@ files:
26
26
  - generators/plugin_test_console/plugin_test_console_generator.rb
27
27
  - generators/plugin_test_console/templates
28
28
  - generators/plugin_test_console/templates/console
29
+ - generators/plugin_test_console/USAGE
29
30
  - generators/plugin_test_helper
30
31
  - generators/plugin_test_helper/templates
31
32
  - generators/plugin_test_helper/templates/test_helper.rb
32
33
  - generators/plugin_test_helper/plugin_test_helper_generator.rb
34
+ - generators/plugin_test_helper/USAGE
33
35
  - generators/plugin_test_structure
34
36
  - generators/plugin_test_structure/templates
35
37
  - generators/plugin_test_structure/templates/app_root
36
38
  - generators/plugin_test_structure/templates/app_root/app
37
39
  - generators/plugin_test_structure/templates/app_root/app/controllers
38
40
  - generators/plugin_test_structure/templates/app_root/app/controllers/application.rb
39
- - generators/plugin_test_structure/templates/app_root/lib
40
41
  - generators/plugin_test_structure/templates/app_root/config
41
42
  - generators/plugin_test_structure/templates/app_root/config/environment.rb
42
43
  - generators/plugin_test_structure/templates/app_root/config/environments
@@ -50,27 +51,30 @@ files:
50
51
  - generators/plugin_test_structure/templates/app_root/config/database.yml
51
52
  - generators/plugin_test_structure/templates/app_root/log
52
53
  - generators/plugin_test_structure/plugin_test_structure_generator.rb
54
+ - generators/plugin_test_structure/USAGE
53
55
  - generators/plugin_test_migration
54
56
  - generators/plugin_test_migration/templates
55
57
  - generators/plugin_test_migration/templates/migration.rb
56
58
  - generators/plugin_test_migration/plugin_test_migration_generator.rb
59
+ - generators/plugin_test_migration/USAGE
57
60
  - generators/plugin_test_controller
58
61
  - generators/plugin_test_controller/templates
59
62
  - generators/plugin_test_controller/templates/controller.rb
60
63
  - generators/plugin_test_controller/templates/view.html.erb
61
64
  - generators/plugin_test_controller/plugin_test_controller_generator.rb
65
+ - generators/plugin_test_controller/USAGE
62
66
  - generators/plugin_test_model
63
67
  - generators/plugin_test_model/plugin_test_model_generator.rb
64
68
  - generators/plugin_test_model/templates
65
69
  - generators/plugin_test_model/templates/model.rb
66
70
  - generators/plugin_test_model/templates/fixtures.yml
67
71
  - generators/plugin_test_model/templates/migration.rb
72
+ - generators/plugin_test_model/USAGE
68
73
  - lib/plugin_test_helper.rb
69
74
  - lib/plugin_test_helper
70
75
  - lib/plugin_test_helper/console_with_fixtures.rb
71
76
  - lib/plugin_test_helper/plugin_locator.rb
72
77
  - lib/plugin_test_helper/extensions
73
- - lib/plugin_test_helper/extensions/routing.rb
74
78
  - lib/plugin_test_helper/extensions/initializer.rb
75
79
  - lib/plugin_test_helper/generator.rb
76
80
  - test/app_root
@@ -78,6 +82,12 @@ files:
78
82
  - test/fixtures/people.yml
79
83
  - test/functional
80
84
  - test/functional/plugin_test_helper_test.rb
85
+ - test/functional/plugin_test_migration_generator_test.rb
86
+ - test/functional/plugin_test_controller_generator_test.rb
87
+ - test/functional/plugin_test_model_generator_test.rb
88
+ - test/functional/plugin_test_console_generator_test.rb
89
+ - test/functional/plugin_test_helper_generator_test.rb
90
+ - test/functional/plugin_test_structure_generator_test.rb
81
91
  - test/test_helper.rb
82
92
  - test/app_roots
83
93
  - test/app_roots/with_model
@@ -126,11 +136,11 @@ files:
126
136
  - test/app_roots/with_custom_application_controller/app/controllers/application.rb
127
137
  - test/unit
128
138
  - test/unit/plugin_locator_test.rb
129
- - CHANGELOG
139
+ - CHANGELOG.rdoc
130
140
  - init.rb
131
- - MIT-LICENSE
141
+ - LICENSE
132
142
  - Rakefile
133
- - README
143
+ - README.rdoc
134
144
  has_rdoc: true
135
145
  homepage: http://www.pluginaweek.org
136
146
  post_install_message:
@@ -152,11 +162,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
162
  version:
153
163
  requirements: []
154
164
 
155
- rubyforge_project:
165
+ rubyforge_project: pluginaweek
156
166
  rubygems_version: 1.1.1
157
167
  signing_key:
158
168
  specification_version: 2
159
169
  summary: Simplifies plugin testing by creating an isolated Rails environment that simulates its usage in a real application.
160
170
  test_files:
161
171
  - test/functional/plugin_test_helper_test.rb
172
+ - test/functional/plugin_test_migration_generator_test.rb
173
+ - test/functional/plugin_test_controller_generator_test.rb
174
+ - test/functional/plugin_test_model_generator_test.rb
175
+ - test/functional/plugin_test_console_generator_test.rb
176
+ - test/functional/plugin_test_helper_generator_test.rb
177
+ - test/functional/plugin_test_structure_generator_test.rb
162
178
  - test/unit/plugin_locator_test.rb
@@ -1,49 +0,0 @@
1
- module PluginAWeek #:nodoc:
2
- module PluginTestHelper
3
- module Extensions #:nodoc:
4
- # Overrides where the path of the application routes is located so that
5
- # it defaults to this helper's implementation or can be overridden by the
6
- # plugin using this helper
7
- module Routing
8
- def self.included(base)
9
- base.class_eval do
10
- alias_method_chain :reload, :test_helper
11
- alias_method_chain :load_routes!, :test_helper
12
- end
13
- end
14
-
15
- # Load routes from either the helper or the plugin
16
- def reload_with_test_helper
17
- if @routes_last_modified && defined?(Rails.root)
18
- routes_path = File.join("#{Rails.root}/config/routes.rb")
19
- routes_path = File.join("#{HELPER_RAILS_ROOT}/config/routes.rb") unless File.exists?(routes_path)
20
-
21
- mtime = File.stat(routes_path).mtime
22
- # if it hasn't been changed, then just return
23
- return if mtime == @routes_last_modified
24
- # if it has changed then record the new time and fall to the load! below
25
- @routes_last_modified = mtime
26
- end
27
- load!
28
- end
29
-
30
- # Load routes from either the helper or the plugin
31
- def load_routes_with_test_helper!
32
- if defined?(Rails.root) && defined?(::ActionController::Routing::Routes) && self == ::ActionController::Routing::Routes
33
- routes_path = File.join("#{Rails.root}/config/routes.rb")
34
- routes_path = File.join("#{HELPER_RAILS_ROOT}/config/routes.rb") unless File.exists?(routes_path)
35
-
36
- load File.join(routes_path)
37
- @routes_last_modified = File.stat(routes_path).mtime
38
- else
39
- add_route ":controller/:action/:id"
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
46
-
47
- ActionController::Routing::RouteSet.class_eval do
48
- include PluginAWeek::PluginTestHelper::Extensions::Routing
49
- end