minitest-spec-rails 3.0.7 → 3.1.0
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.
- data/.gitignore +1 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +46 -0
- data/Gemfile +3 -1
- data/Guardfile +7 -0
- data/README.md +195 -41
- data/Rakefile +4 -6
- data/lib/minitest-spec-rails.rb +8 -2
- data/lib/minitest-spec-rails/dsl.rb +52 -0
- data/lib/minitest-spec-rails/init/action_controller.rb +24 -0
- data/lib/minitest-spec-rails/init/action_dispatch.rb +17 -0
- data/lib/minitest-spec-rails/init/action_mailer.rb +26 -0
- data/lib/minitest-spec-rails/init/action_view.rb +38 -0
- data/lib/minitest-spec-rails/init/active_support.rb +28 -0
- data/lib/minitest-spec-rails/init/mini_shoulda.rb +47 -0
- data/lib/minitest-spec-rails/rails.rb +7 -0
- data/lib/minitest-spec-rails/version.rb +1 -1
- data/minitest-spec-rails.gemspec +21 -16
- data/test/cases/action_controller_test.rb +41 -0
- data/test/cases/action_dispatch_test.rb +48 -0
- data/test/cases/action_mailer_test.rb +42 -0
- data/test/cases/action_view_test.rb +44 -0
- data/test/cases/active_support_test.rb +43 -0
- data/test/cases/mini_shoulda_test.rb +38 -0
- data/test/dummy_app/app/controllers/application_controller.rb +7 -0
- data/test/dummy_app/app/controllers/users_controller.rb +8 -0
- data/test/dummy_app/app/helpers/application_helper.rb +2 -0
- data/test/dummy_app/app/helpers/foos_helper.rb +5 -0
- data/test/dummy_app/app/helpers/users_helper.rb +9 -0
- data/test/dummy_app/app/models/post.rb +6 -0
- data/test/dummy_app/app/models/user.rb +6 -0
- data/test/dummy_app/app/models/user_mailer.rb +10 -0
- data/test/dummy_app/app/views/user_mailer/welcome.erb +1 -0
- data/test/dummy_app/app/views/users/index.rhtml +2 -0
- data/test/dummy_app/config/boot.rb +126 -0
- data/test/dummy_app/config/database.yml +3 -0
- data/test/dummy_app/config/environment.rb +12 -0
- data/test/dummy_app/config/environments/test.rb +28 -0
- data/test/dummy_app/config/initializers/new_rails_defaults.rb +15 -0
- data/test/dummy_app/config/routes.rb +6 -0
- data/test/dummy_app/db/schema.rb +0 -0
- data/test/dummy_app/init.rb +13 -0
- data/test/dummy_app/log/.keep +0 -0
- data/test/dummy_app/public/.htaccess +40 -0
- data/test/dummy_app/public/404.html +30 -0
- data/test/dummy_app/public/422.html +30 -0
- data/test/dummy_app/public/500.html +30 -0
- data/test/dummy_app/script/console +3 -0
- data/test/dummy_app/script/generate +3 -0
- data/test/dummy_tests/application_controller_test.rb +93 -0
- data/test/dummy_tests/foo_helper_test.rb +12 -0
- data/test/dummy_tests/integration_test.rb +30 -0
- data/test/dummy_tests/user_mailer_test.rb +91 -0
- data/test/dummy_tests/user_test.rb +72 -0
- data/test/dummy_tests/users_controller_test.rb +23 -0
- data/test/dummy_tests/users_helper_test.rb +81 -0
- data/test/support/minitest.rb +7 -0
- data/test/support/shared_test_case_behavior.rb +30 -0
- data/test/test_helper.rb +12 -0
- data/test/test_helper_dummy.rb +8 -0
- metadata +238 -63
- data/lib/minitest-spec-rails/test_case.rb +0 -33
- data/lib/test/unit.rb +0 -9
- data/lib/test/unit/assertions.rb +0 -7
- data/lib/test/unit/testcase.rb +0 -23
@@ -0,0 +1 @@
|
|
1
|
+
Welcome to MiniTest::Spec <%= @user.email %>!
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# Don't change this file!
|
2
|
+
# Configure your app in config/environment.rb and config/environments/*.rb
|
3
|
+
|
4
|
+
RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
|
5
|
+
|
6
|
+
module Rails
|
7
|
+
class << self
|
8
|
+
def boot!
|
9
|
+
unless booted?
|
10
|
+
preinitialize
|
11
|
+
pick_boot.run
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def booted?
|
16
|
+
defined? Rails::Initializer
|
17
|
+
end
|
18
|
+
|
19
|
+
def pick_boot
|
20
|
+
(vendor_rails? ? VendorBoot : GemBoot).new
|
21
|
+
end
|
22
|
+
|
23
|
+
def vendor_rails?
|
24
|
+
File.exist?("#{RAILS_ROOT}/vendor/rails")
|
25
|
+
end
|
26
|
+
|
27
|
+
def preinitialize
|
28
|
+
load(preinitializer_path) if File.exist?(preinitializer_path)
|
29
|
+
end
|
30
|
+
|
31
|
+
def preinitializer_path
|
32
|
+
"#{RAILS_ROOT}/config/preinitializer.rb"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class Boot
|
37
|
+
def run
|
38
|
+
load_initializer
|
39
|
+
Rails::Initializer.run(:set_load_path)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class VendorBoot < Boot
|
44
|
+
def load_initializer
|
45
|
+
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
|
46
|
+
Rails::Initializer.run(:install_gem_spec_stubs)
|
47
|
+
Rails::GemDependency.add_frozen_gem_path
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class GemBoot < Boot
|
52
|
+
def load_initializer
|
53
|
+
self.class.load_rubygems
|
54
|
+
load_rails_gem
|
55
|
+
require 'initializer'
|
56
|
+
end
|
57
|
+
|
58
|
+
def load_rails_gem
|
59
|
+
if version = self.class.gem_version
|
60
|
+
gem 'rails', version
|
61
|
+
else
|
62
|
+
gem 'rails'
|
63
|
+
end
|
64
|
+
rescue Gem::LoadError => load_error
|
65
|
+
if load_error.message =~ /Could not find RubyGem rails/
|
66
|
+
STDERR.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
67
|
+
exit 1
|
68
|
+
else
|
69
|
+
raise
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class << self
|
74
|
+
def rubygems_version
|
75
|
+
Gem::RubyGemsVersion rescue nil
|
76
|
+
end
|
77
|
+
|
78
|
+
def gem_version
|
79
|
+
if defined? RAILS_GEM_VERSION
|
80
|
+
RAILS_GEM_VERSION
|
81
|
+
elsif ENV.include?('RAILS_GEM_VERSION')
|
82
|
+
ENV['RAILS_GEM_VERSION']
|
83
|
+
else
|
84
|
+
parse_gem_version(read_environment_rb)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def load_rubygems
|
89
|
+
min_version = '1.3.2'
|
90
|
+
require 'rubygems'
|
91
|
+
unless rubygems_version >= min_version
|
92
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
93
|
+
exit 1
|
94
|
+
end
|
95
|
+
|
96
|
+
rescue LoadError
|
97
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
|
98
|
+
exit 1
|
99
|
+
end
|
100
|
+
|
101
|
+
def parse_gem_version(text)
|
102
|
+
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
def read_environment_rb
|
107
|
+
File.read("#{RAILS_ROOT}/config/environment.rb")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
class Rails::Boot
|
114
|
+
def run
|
115
|
+
load_initializer
|
116
|
+
Rails::Initializer.class_eval do
|
117
|
+
def load_gems
|
118
|
+
@bundler_loaded ||= Bundler.require :default, Rails.env
|
119
|
+
end
|
120
|
+
end
|
121
|
+
Rails::Initializer.run(:set_load_path)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# All that for this:
|
126
|
+
Rails.boot!
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'boot')
|
2
|
+
|
3
|
+
Rails::Initializer.run do |config|
|
4
|
+
config.log_level = :debug
|
5
|
+
config.cache_classes = false
|
6
|
+
config.whiny_nils = true
|
7
|
+
config.action_controller.session = {
|
8
|
+
:key => 'mtsr_session',
|
9
|
+
:secret => 'ceae6058a816b1446e09ce90d8372511'
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
2
|
+
|
3
|
+
# The test environment is used exclusively to run your application's
|
4
|
+
# test suite. You never need to work with it otherwise. Remember that
|
5
|
+
# your test database is "scratch space" for the test suite and is wiped
|
6
|
+
# and recreated between test runs. Don't rely on the data there!
|
7
|
+
config.cache_classes = true
|
8
|
+
|
9
|
+
# Log error messages when you accidentally call methods on nil.
|
10
|
+
config.whiny_nils = true
|
11
|
+
|
12
|
+
# Show full error reports and disable caching
|
13
|
+
config.action_controller.consider_all_requests_local = true
|
14
|
+
config.action_controller.perform_caching = false
|
15
|
+
config.action_view.cache_template_loading = true
|
16
|
+
|
17
|
+
# Disable request forgery protection in test environment
|
18
|
+
config.action_controller.allow_forgery_protection = false
|
19
|
+
|
20
|
+
# Tell Action Mailer not to deliver emails to the real world.
|
21
|
+
# The :test delivery method accumulates sent emails in the
|
22
|
+
# ActionMailer::Base.deliveries array.
|
23
|
+
config.action_mailer.delivery_method = :test
|
24
|
+
|
25
|
+
# Use SQL instead of Active Record's schema dumper when creating the test database.
|
26
|
+
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
27
|
+
# like if you have constraints or database-specific column types
|
28
|
+
# config.active_record.schema_format = :sql
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# These settings change the behavior of Rails 2 apps and will be defaults
|
2
|
+
# for Rails 3. You can remove this initializer when Rails 3 is released.
|
3
|
+
|
4
|
+
# Include Active Record class name as root for JSON serialized output.
|
5
|
+
ActiveRecord::Base.include_root_in_json = true
|
6
|
+
|
7
|
+
# Store the full class name (including module namespace) in STI type column.
|
8
|
+
ActiveRecord::Base.store_full_sti_class = true
|
9
|
+
|
10
|
+
# Use ISO 8601 format for JSON serialized times and dates.
|
11
|
+
ActiveSupport.use_standard_json_time_format = true
|
12
|
+
|
13
|
+
# Don't escape HTML entities in JSON, leave that for the #json_escape helper.
|
14
|
+
# if you're including raw json in an HTML page.
|
15
|
+
ActiveSupport.escape_html_entities_in_json = false
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
ENV['RAILS_ENV'] = 'test'
|
2
|
+
require 'rubygems'
|
3
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __FILE__)
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'active_support/all'
|
6
|
+
require 'action_controller'
|
7
|
+
require 'action_view'
|
8
|
+
require 'action_mailer'
|
9
|
+
require 'test_help'
|
10
|
+
require 'rails/version'
|
11
|
+
require 'initializer'
|
12
|
+
Bundler.require :default, :development, :test
|
13
|
+
require "#{File.expand_path('../config/environment.rb', __FILE__)}"
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# General Apache options
|
2
|
+
AddHandler fastcgi-script .fcgi
|
3
|
+
AddHandler cgi-script .cgi
|
4
|
+
Options +FollowSymLinks +ExecCGI
|
5
|
+
|
6
|
+
# If you don't want Rails to look in certain directories,
|
7
|
+
# use the following rewrite rules so that Apache won't rewrite certain requests
|
8
|
+
#
|
9
|
+
# Example:
|
10
|
+
# RewriteCond %{REQUEST_URI} ^/notrails.*
|
11
|
+
# RewriteRule .* - [L]
|
12
|
+
|
13
|
+
# Redirect all requests not available on the filesystem to Rails
|
14
|
+
# By default the cgi dispatcher is used which is very slow
|
15
|
+
#
|
16
|
+
# For better performance replace the dispatcher with the fastcgi one
|
17
|
+
#
|
18
|
+
# Example:
|
19
|
+
# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
|
20
|
+
RewriteEngine On
|
21
|
+
|
22
|
+
# If your Rails application is accessed via an Alias directive,
|
23
|
+
# then you MUST also set the RewriteBase in this htaccess file.
|
24
|
+
#
|
25
|
+
# Example:
|
26
|
+
# Alias /myrailsapp /path/to/myrailsapp/public
|
27
|
+
# RewriteBase /myrailsapp
|
28
|
+
|
29
|
+
RewriteRule ^$ index.html [QSA]
|
30
|
+
RewriteRule ^([^.]+)$ $1.html [QSA]
|
31
|
+
RewriteCond %{REQUEST_FILENAME} !-f
|
32
|
+
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
|
33
|
+
|
34
|
+
# In case Rails experiences terminal errors
|
35
|
+
# Instead of displaying this message you can supply a file here which will be rendered instead
|
36
|
+
#
|
37
|
+
# Example:
|
38
|
+
# ErrorDocument 500 /500.html
|
39
|
+
|
40
|
+
ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
|
6
|
+
<head>
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
8
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
9
|
+
<style type="text/css">
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
11
|
+
div.dialog {
|
12
|
+
width: 25em;
|
13
|
+
padding: 0 4em;
|
14
|
+
margin: 4em auto 0 auto;
|
15
|
+
border: 1px solid #ccc;
|
16
|
+
border-right-color: #999;
|
17
|
+
border-bottom-color: #999;
|
18
|
+
}
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
20
|
+
</style>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body>
|
24
|
+
<!-- This file lives in public/404.html -->
|
25
|
+
<div class="dialog">
|
26
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
27
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
28
|
+
</div>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
|
6
|
+
<head>
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
8
|
+
<title>The change you wanted was rejected (422)</title>
|
9
|
+
<style type="text/css">
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
11
|
+
div.dialog {
|
12
|
+
width: 25em;
|
13
|
+
padding: 0 4em;
|
14
|
+
margin: 4em auto 0 auto;
|
15
|
+
border: 1px solid #ccc;
|
16
|
+
border-right-color: #999;
|
17
|
+
border-bottom-color: #999;
|
18
|
+
}
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
20
|
+
</style>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body>
|
24
|
+
<!-- This file lives in public/422.html -->
|
25
|
+
<div class="dialog">
|
26
|
+
<h1>The change you wanted was rejected.</h1>
|
27
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
28
|
+
</div>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
|
6
|
+
<head>
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
8
|
+
<title>We're sorry, but something went wrong (500)</title>
|
9
|
+
<style type="text/css">
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
11
|
+
div.dialog {
|
12
|
+
width: 25em;
|
13
|
+
padding: 0 4em;
|
14
|
+
margin: 4em auto 0 auto;
|
15
|
+
border: 1px solid #ccc;
|
16
|
+
border-right-color: #999;
|
17
|
+
border-bottom-color: #999;
|
18
|
+
}
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
20
|
+
</style>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body>
|
24
|
+
<!-- This file lives in public/500.html -->
|
25
|
+
<div class="dialog">
|
26
|
+
<h1>We're sorry, but something went wrong.</h1>
|
27
|
+
<p>We've been notified about this issue and we'll take a look at it shortly.</p>
|
28
|
+
</div>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'test_helper_dummy'
|
2
|
+
|
3
|
+
module ApplicationControllerTests
|
4
|
+
def self.included(klass)
|
5
|
+
klass.class_eval do
|
6
|
+
|
7
|
+
tests ApplicationController
|
8
|
+
|
9
|
+
before { get :index }
|
10
|
+
|
11
|
+
it 'works' do
|
12
|
+
get :index
|
13
|
+
@response.body.must_equal 'Rendered MiniTest::Spec'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'allows custom assertions' do
|
17
|
+
assert_template :partial => false
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'can find the controller_class' do
|
21
|
+
self.class.controller_class.must_equal ApplicationController
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'can access the setup ivars' do
|
25
|
+
@controller.must_be_kind_of ApplicationController
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'nested 1' do
|
29
|
+
|
30
|
+
it('works') { skip }
|
31
|
+
|
32
|
+
it 'can find the controller_class' do
|
33
|
+
self.class.controller_class.must_equal ApplicationController
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'nested 2' do
|
37
|
+
|
38
|
+
it('works') { skip }
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class ApplicationControllerTest < ActionController::TestCase
|
49
|
+
include ApplicationControllerTests
|
50
|
+
it 'reflects' do
|
51
|
+
describing_class.must_equal ApplicationControllerTest
|
52
|
+
described_class.must_equal ApplicationController
|
53
|
+
self.class.described_class.must_equal ApplicationController
|
54
|
+
end
|
55
|
+
describe 'level 1' do
|
56
|
+
it 'reflects' do
|
57
|
+
describing_class.must_equal ApplicationControllerTest
|
58
|
+
described_class.must_equal ApplicationController
|
59
|
+
self.class.described_class.must_equal ApplicationController
|
60
|
+
end
|
61
|
+
describe 'level 2' do
|
62
|
+
it 'reflects' do
|
63
|
+
describing_class.must_equal ApplicationControllerTest
|
64
|
+
described_class.must_equal ApplicationController
|
65
|
+
self.class.described_class.must_equal ApplicationController
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe ApplicationController do
|
72
|
+
include ApplicationControllerTests
|
73
|
+
it 'class reflects' do
|
74
|
+
described_class.must_equal ApplicationController
|
75
|
+
self.class.described_class.must_equal ApplicationController
|
76
|
+
end
|
77
|
+
it 'reflects' do
|
78
|
+
described_class.must_equal ApplicationController
|
79
|
+
self.class.described_class.must_equal ApplicationController
|
80
|
+
end
|
81
|
+
describe 'level 1' do
|
82
|
+
it 'reflects' do
|
83
|
+
described_class.must_equal ApplicationController
|
84
|
+
self.class.described_class.must_equal ApplicationController
|
85
|
+
end
|
86
|
+
describe 'level 2' do
|
87
|
+
it 'reflects' do
|
88
|
+
described_class.must_equal ApplicationController
|
89
|
+
self.class.described_class.must_equal ApplicationController
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|