minitest-rails 0.1.0.alpha → 0.1.0.alpha2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +12 -5
- data/lib/generators/mini_test/controller/controller_generator.rb +2 -2
- data/lib/generators/mini_test/helper/helper_generator.rb +2 -2
- data/lib/generators/mini_test/helper/templates/helper_test.rb +1 -1
- data/lib/generators/mini_test/install/templates/test/minitest_helper.rb +7 -0
- data/lib/generators/mini_test/integration/integration_generator.rb +2 -2
- data/lib/generators/mini_test/integration/templates/integration_spec.rb +2 -2
- data/lib/generators/mini_test/model/model_generator.rb +2 -2
- data/lib/generators/mini_test/scaffold/scaffold_generator.rb +2 -2
- data/lib/minitest-rails.rb +1 -1
- data/lib/minitest/rails.rb +2 -3
- data/lib/minitest/rails/action_dispatch.rb +2 -2
- data/lib/minitest/rails/active_support.rb +15 -3
- data/lib/minitest/rails/tasks/minitest.rake +30 -17
- data/minitest-rails.gemspec +2 -2
- data/test/test_controller_generator.rb +25 -0
- data/test/test_helper_generator.rb +26 -1
- data/test/test_model_generator.rb +22 -0
- metadata +10 -10
data/README.rdoc
CHANGED
@@ -37,8 +37,9 @@ This will add the <tt>minitest_helper.rb</tt> file to the <tt>test</tt> director
|
|
37
37
|
== Usage
|
38
38
|
|
39
39
|
We aim to expose MiniTest with minimal changes for testing within Rails.
|
40
|
-
Your test classes will inherit from MiniTest::Rails::
|
41
|
-
You can
|
40
|
+
Your test classes will inherit from MiniTest::Rails::ActiveSupport::TestCase a opposed to ActiveSupport::TestCase.
|
41
|
+
You can use the MiniTest::Spec DSL.
|
42
|
+
You can generate test files with the standard model, controller, resource, and other generators:
|
42
43
|
|
43
44
|
rails generate model User
|
44
45
|
|
@@ -46,12 +47,18 @@ And you can specify generating the tests using the MiniTest::Spec DSL on any of
|
|
46
47
|
|
47
48
|
rails generate model User --spec
|
48
49
|
|
49
|
-
And you can specify generating the fixture for a model by providing the <tt>--fixture</tt> option:
|
50
|
+
And you can specify not generating the fixture for a model by providing the <tt>--skip-fixture</tt> option:
|
50
51
|
|
51
|
-
rails generate model User --fixture
|
52
|
+
rails generate model User --skip-fixture
|
52
53
|
|
53
54
|
You can also set these as defaults by adding the following to the <tt>config/application.rb</tt> file:
|
54
55
|
|
55
56
|
config.generators do |g|
|
56
|
-
g.test_framework :mini_test, :spec => true, :fixture =>
|
57
|
+
g.test_framework :mini_test, :spec => true, :fixture => false
|
57
58
|
end
|
59
|
+
|
60
|
+
== Get Involved
|
61
|
+
|
62
|
+
Join the mailing list to get help or offer suggestions.
|
63
|
+
|
64
|
+
https://groups.google.com/forum/#!forum/minitest-rails
|
@@ -10,9 +10,9 @@ module MiniTest
|
|
10
10
|
|
11
11
|
def create_test_files
|
12
12
|
if options[:spec]
|
13
|
-
template "controller_spec.rb", "test/controllers
|
13
|
+
template "controller_spec.rb", File.join("test/controllers", class_path, "#{file_name}_controller_test.rb")
|
14
14
|
else
|
15
|
-
template "controller_test.rb", "test/controllers
|
15
|
+
template "controller_test.rb", File.join("test/controllers", class_path, "#{file_name}_controller_test.rb")
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -9,9 +9,9 @@ module MiniTest
|
|
9
9
|
|
10
10
|
def create_test_files
|
11
11
|
if options[:spec]
|
12
|
-
template "helper_spec.rb", "test/helpers
|
12
|
+
template "helper_spec.rb", File.join("test/helpers", class_path, "#{file_name}_helper_test.rb")
|
13
13
|
else
|
14
|
-
template "helper_test.rb", "test/helpers
|
14
|
+
template "helper_test.rb", File.join("test/helpers", class_path, "#{file_name}_helper_test.rb")
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -7,6 +7,13 @@ require "minitest/rails"
|
|
7
7
|
# Uncomment if you want awesome colorful output
|
8
8
|
# require "minitest/pride"
|
9
9
|
|
10
|
+
class MiniTest::Rails::ActiveSupport::TestCase
|
11
|
+
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
12
|
+
fixtures :all
|
13
|
+
|
14
|
+
# Add more helper methods to be used by all tests here...
|
15
|
+
end
|
16
|
+
|
10
17
|
# Do you want all existing Rails tests to use MiniTest::Rails?
|
11
18
|
# Comment out the following and either:
|
12
19
|
# A) Change the require on the existing tests to `require "minitest_helper"`
|
@@ -9,9 +9,9 @@ module MiniTest
|
|
9
9
|
|
10
10
|
def create_test_files
|
11
11
|
if options[:spec]
|
12
|
-
template 'integration_spec.rb', File.join('test/
|
12
|
+
template 'integration_spec.rb', File.join('test/acceptance', class_path, "#{file_name}_test.rb")
|
13
13
|
else
|
14
|
-
template 'integration_test.rb', File.join('test/
|
14
|
+
template 'integration_test.rb', File.join('test/acceptance', class_path, "#{file_name}_test.rb")
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "minitest_helper"
|
2
2
|
|
3
|
-
# To be handled correctly this spec must end with "
|
4
|
-
describe "<%= class_name %>
|
3
|
+
# To be handled correctly this spec must end with "Acceptance Test"
|
4
|
+
describe "<%= class_name %> Acceptance Test" do
|
5
5
|
# it "must be a real test" do
|
6
6
|
# flunk "Need real tests"
|
7
7
|
# end
|
@@ -3,8 +3,8 @@ require "generators/mini_test"
|
|
3
3
|
module MiniTest
|
4
4
|
module Generators
|
5
5
|
class ModelGenerator < Base
|
6
|
-
argument :attributes, :type => :array, :default => [],
|
7
|
-
class_option :fixture, :type => :boolean, :default =>
|
6
|
+
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
7
|
+
class_option :fixture, :type => :boolean, :default => true, :desc => "Create fixture file"
|
8
8
|
class_option :spec, :type => :boolean, :default => false, :desc => "Use MiniTest::Spec DSL"
|
9
9
|
|
10
10
|
check_class_collision :suffix => "Test"
|
@@ -12,9 +12,9 @@ module MiniTest
|
|
12
12
|
|
13
13
|
def create_test_files
|
14
14
|
if options[:spec]
|
15
|
-
template "controller_spec.rb", "test/controllers
|
15
|
+
template "controller_spec.rb", File.join("test/controllers", class_path, "#{file_name}_controller_test.rb")
|
16
16
|
else
|
17
|
-
template "controller_test.rb", "test/controllers
|
17
|
+
template "controller_test.rb", File.join("test/controllers", class_path, "#{file_name}_controller_test.rb")
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/minitest-rails.rb
CHANGED
data/lib/minitest/rails.rb
CHANGED
@@ -9,8 +9,7 @@ require "minitest/rails/action_dispatch"
|
|
9
9
|
|
10
10
|
# Enable turn if it is available
|
11
11
|
begin
|
12
|
-
require 'turn'
|
13
|
-
MiniTest::Unit.use_natural_language_case_names = true
|
12
|
+
require 'turn/autorun'
|
14
13
|
rescue LoadError
|
15
14
|
end
|
16
15
|
|
@@ -23,7 +22,7 @@ if defined?(ActiveRecord::Base)
|
|
23
22
|
MiniTest::Rails::ActionDispatch::IntegrationTest.fixture_path = MiniTest::Rails::ActiveSupport::TestCase.fixture_path
|
24
23
|
|
25
24
|
def create_fixtures(*table_names, &block)
|
26
|
-
Fixtures.create_fixtures(MiniTest::Rails::ActiveSupport::TestCase.fixture_path, table_names, {}, &block)
|
25
|
+
ActiveRecord::Fixtures.create_fixtures(MiniTest::Rails::ActiveSupport::TestCase.fixture_path, table_names, {}, &block)
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
@@ -17,5 +17,5 @@ module MiniTest
|
|
17
17
|
end
|
18
18
|
|
19
19
|
# Register by name
|
20
|
-
MiniTest::Spec.register_spec_type(/
|
21
|
-
MiniTest::Spec.register_spec_type(/
|
20
|
+
MiniTest::Spec.register_spec_type(/AcceptanceTest$/, MiniTest::Rails::ActionDispatch::IntegrationTest)
|
21
|
+
MiniTest::Spec.register_spec_type(/Acceptance Test$/, MiniTest::Rails::ActionDispatch::IntegrationTest)
|
@@ -20,9 +20,17 @@ module MiniTest
|
|
20
20
|
assert yield, msg
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
if defined?(ActiveRecord::Base)
|
24
|
+
# Use AS::TestCase for the base class when describing a model
|
25
|
+
register_spec_type(self) do |desc|
|
26
|
+
desc < ActiveRecord::Base
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# For backward compatibility with Test::Unit
|
31
|
+
def build_message(message, template = nil, *args)
|
32
|
+
template = template.gsub('<?>', '<%s>')
|
33
|
+
message || sprintf(template, *args)
|
26
34
|
end
|
27
35
|
|
28
36
|
Assertion = ::MiniTest::Assertion
|
@@ -40,6 +48,10 @@ module MiniTest
|
|
40
48
|
:sorted
|
41
49
|
end
|
42
50
|
|
51
|
+
def describe(*args, &block)
|
52
|
+
Kernel.describe(args, block)
|
53
|
+
end
|
54
|
+
|
43
55
|
include ::ActiveSupport::Testing::SetupAndTeardown
|
44
56
|
include ::ActiveSupport::Testing::Assertions
|
45
57
|
include ::ActiveSupport::Testing::Deprecation
|
@@ -1,29 +1,42 @@
|
|
1
1
|
require 'rake/testtask'
|
2
|
+
require 'rails/test_unit/sub_test_task'
|
2
3
|
|
3
|
-
|
4
|
+
TASKS = %w(models controllers helpers mailers acceptance) #views
|
5
|
+
MINITEST_TASKS = TASKS.map { |sub| "minitest:#{sub}" }
|
4
6
|
|
5
|
-
desc
|
7
|
+
desc "Runs minitest"
|
6
8
|
task :test do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end.compact
|
15
|
-
abort "Errors running #{errors * ', '}!" if errors.any?
|
9
|
+
Rake::Task['minitest'].invoke
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Runs #{MINITEST_TASKS.join(", ")} together"
|
13
|
+
task :minitest do
|
14
|
+
Rake::Task['minitest:run'].invoke
|
16
15
|
end
|
17
16
|
|
18
|
-
namespace
|
19
|
-
|
20
|
-
|
17
|
+
namespace 'minitest' do
|
18
|
+
|
19
|
+
task :run do
|
20
|
+
errors = MINITEST_TASKS.collect do |task|
|
21
|
+
begin
|
22
|
+
Rake::Task[task].invoke
|
23
|
+
nil
|
24
|
+
rescue => e
|
25
|
+
{ :task => task, :exception => e }
|
26
|
+
end
|
27
|
+
end.compact
|
28
|
+
|
29
|
+
if errors.any?
|
30
|
+
puts errors.map { |e| "Errors running #{e[:task]}! #{e[:exception].inspect}" }.join("\n")
|
31
|
+
abort
|
32
|
+
end
|
21
33
|
end
|
22
34
|
|
23
|
-
|
24
|
-
|
25
|
-
t.libs
|
35
|
+
TASKS.each do |sub|
|
36
|
+
Rails::SubTestTask.new(sub => 'test:prepare') do |t|
|
37
|
+
t.libs.push 'test'
|
26
38
|
t.pattern = "test/#{sub}/**/*_test.rb"
|
27
39
|
end
|
28
40
|
end
|
41
|
+
|
29
42
|
end
|
data/minitest-rails.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "minitest-rails"
|
5
|
-
s.version = "0.1.0.
|
5
|
+
s.version = "0.1.0.alpha2.20120706021507"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Mike Moore"]
|
9
|
-
s.date = "2012-
|
9
|
+
s.date = "2012-07-06"
|
10
10
|
s.description = "Adds MiniTest as the default testing library in Rails 3."
|
11
11
|
s.email = ["mike@blowmage.com"]
|
12
12
|
s.extra_rdoc_files = ["CHANGELOG.rdoc", "Manifest.txt", "README.rdoc"]
|
@@ -25,6 +25,18 @@ class TestControllerGenerator < MiniTest::Unit::TestCase
|
|
25
25
|
FileUtils.rm_r "test/controllers"
|
26
26
|
end
|
27
27
|
|
28
|
+
def test_namespaced_controller_generator
|
29
|
+
text = capture(:stdout) do
|
30
|
+
MiniTest::Generators::ControllerGenerator.start ["admin/user"]
|
31
|
+
end
|
32
|
+
assert_match(/create test\/controllers\/admin\/user_controller_test.rb/m, text)
|
33
|
+
assert File.exists? "test/controllers/admin/user_controller_test.rb"
|
34
|
+
contents = open("test/controllers/admin/user_controller_test.rb").read
|
35
|
+
assert_match(/class Admin::UserControllerTest/m, contents)
|
36
|
+
ensure
|
37
|
+
FileUtils.rm_r "test/controllers"
|
38
|
+
end
|
39
|
+
|
28
40
|
def test_controller_generator_spec
|
29
41
|
text = capture(:stdout) do
|
30
42
|
MiniTest::Generators::ControllerGenerator.start ["user", "--spec"]
|
@@ -36,4 +48,17 @@ class TestControllerGenerator < MiniTest::Unit::TestCase
|
|
36
48
|
ensure
|
37
49
|
FileUtils.rm_r "test/controllers"
|
38
50
|
end
|
51
|
+
|
52
|
+
def test_namespaced_controller_generator_spec
|
53
|
+
text = capture(:stdout) do
|
54
|
+
MiniTest::Generators::ControllerGenerator.start ["admin/user", "--spec"]
|
55
|
+
end
|
56
|
+
assert_match(/create test\/controllers\/admin\/user_controller_test.rb/m, text)
|
57
|
+
assert File.exists? "test/controllers/admin/user_controller_test.rb"
|
58
|
+
contents = open("test/controllers/admin/user_controller_test.rb").read
|
59
|
+
assert_match(/describe Admin::UserController do/m, contents)
|
60
|
+
ensure
|
61
|
+
FileUtils.rm_r "test/controllers"
|
62
|
+
end
|
63
|
+
|
39
64
|
end
|
@@ -18,13 +18,25 @@ class TestHelperGenerator < MiniTest::Unit::TestCase
|
|
18
18
|
assert_match(/create test\/helpers\/user_helper_test.rb/m, text)
|
19
19
|
assert File.exists? "test/helpers/user_helper_test.rb"
|
20
20
|
contents = open("test/helpers/user_helper_test.rb").read
|
21
|
-
assert_match(/class UserHelperTest < MiniTest::
|
21
|
+
assert_match(/class UserHelperTest < MiniTest::Unit::TestCase/m, contents)
|
22
22
|
ensure
|
23
23
|
# TODO: Don"t write the files
|
24
24
|
# I agree, it would be better to mock the file getting written
|
25
25
|
FileUtils.rm_r "test/helpers"
|
26
26
|
end
|
27
27
|
|
28
|
+
def test_namespaced_helper_generator
|
29
|
+
text = capture(:stdout) do
|
30
|
+
MiniTest::Generators::HelperGenerator.start ["admin/user"]
|
31
|
+
end
|
32
|
+
assert_match(/create test\/helpers\/admin\/user_helper_test.rb/m, text)
|
33
|
+
assert File.exists? "test/helpers/admin/user_helper_test.rb"
|
34
|
+
contents = open("test/helpers/admin/user_helper_test.rb").read
|
35
|
+
assert_match(/class Admin::UserHelperTest < MiniTest::Unit::TestCase/m, contents)
|
36
|
+
ensure
|
37
|
+
FileUtils.rm_r "test/helpers"
|
38
|
+
end
|
39
|
+
|
28
40
|
def test_helper_generator_spec
|
29
41
|
text = capture(:stdout) do
|
30
42
|
MiniTest::Generators::HelperGenerator.start ["user", "--spec"]
|
@@ -36,4 +48,17 @@ class TestHelperGenerator < MiniTest::Unit::TestCase
|
|
36
48
|
ensure
|
37
49
|
FileUtils.rm_r "test/helpers"
|
38
50
|
end
|
51
|
+
|
52
|
+
def test_helper_generator_spec
|
53
|
+
text = capture(:stdout) do
|
54
|
+
MiniTest::Generators::HelperGenerator.start ["admin/user", "--spec"]
|
55
|
+
end
|
56
|
+
assert_match(/create test\/helpers\/admin\/user_helper_test.rb/m, text)
|
57
|
+
assert File.exists? "test/helpers/admin/user_helper_test.rb"
|
58
|
+
contents = open("test/helpers/admin/user_helper_test.rb").read
|
59
|
+
assert_match(/describe Admin::UserHelper do/m, contents)
|
60
|
+
ensure
|
61
|
+
FileUtils.rm_r "test/helpers"
|
62
|
+
end
|
63
|
+
|
39
64
|
end
|
@@ -23,6 +23,7 @@ class TestModelGenerator < MiniTest::Unit::TestCase
|
|
23
23
|
# TODO: Don"t write the files
|
24
24
|
# I agree, it would be better to mock the file getting written
|
25
25
|
FileUtils.rm_r "test/models"
|
26
|
+
FileUtils.rm_r "test/fixtures"
|
26
27
|
end
|
27
28
|
|
28
29
|
def test_model_generator_spec
|
@@ -31,8 +32,29 @@ class TestModelGenerator < MiniTest::Unit::TestCase
|
|
31
32
|
end
|
32
33
|
assert_match(/create test\/models\/user_test.rb/m, text)
|
33
34
|
assert File.exists? "test/models/user_test.rb"
|
35
|
+
assert File.exists? "test/fixtures/users.yml"
|
34
36
|
contents = open("test/models/user_test.rb").read
|
35
37
|
assert_match(/describe User do/m, contents)
|
38
|
+
ensure
|
39
|
+
FileUtils.rm_r "test/models"
|
40
|
+
FileUtils.rm_r "test/fixtures"
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_model_generator_fixture
|
44
|
+
text = capture(:stdout) do
|
45
|
+
MiniTest::Generators::ModelGenerator.start ["user"]
|
46
|
+
end
|
47
|
+
assert File.exists? "test/fixtures/users.yml"
|
48
|
+
ensure
|
49
|
+
FileUtils.rm_r "test/models"
|
50
|
+
FileUtils.rm_r "test/fixtures"
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_model_generator_no_fixture
|
54
|
+
text = capture(:stdout) do
|
55
|
+
MiniTest::Generators::ModelGenerator.start ["user", "--skip-fixture"]
|
56
|
+
end
|
57
|
+
refute File.exists? "test/fixtures/users.yml"
|
36
58
|
ensure
|
37
59
|
FileUtils.rm_r "test/models"
|
38
60
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.alpha2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
16
|
-
requirement: &
|
16
|
+
requirement: &70311455892940 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70311455892940
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &70311455892500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.1'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70311455892500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rdoc
|
38
|
-
requirement: &
|
38
|
+
requirement: &70311455892060 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.10'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70311455892060
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: hoe
|
49
|
-
requirement: &
|
49
|
+
requirement: &70311455891620 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '3.0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70311455891620
|
58
58
|
description: Adds MiniTest as the default testing library in Rails 3.
|
59
59
|
email:
|
60
60
|
- mike@blowmage.com
|