plugin_test_helper 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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