minitest_rails_tools 0.1.8 → 0.2.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.
- checksums.yaml +7 -0
- data/LICENSE +2 -0
- data/README.md +82 -20
- data/lib/minitest_rails_tools.rb +5 -4
- data/lib/{application_integration.rb → minitest_rails_tools/application_integration.rb} +2 -0
- data/lib/{association_matchers.rb → minitest_rails_tools/association_matchers.rb} +2 -0
- data/lib/minitest_rails_tools/expectations.rb +49 -0
- data/lib/{helper_extension.rb → minitest_rails_tools/helper_extension.rb} +2 -0
- data/lib/{validation_matchers.rb → minitest_rails_tools/validation_matchers.rb} +2 -0
- metadata +44 -17
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 768e96fcb402c95ffda7b9fbc71f5a57d3bd780d
|
4
|
+
data.tar.gz: 8467239b6a4bcbee159e07fcf7292f9460dd14c4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e922e9fbf107620c241ce39281e6aeb970a7cbbb7efbab9d67896998b38354cd602fa2a696ea6e735dcbb2ba9f348deff699820cff71fc1c3fc1b68ec0b5df36
|
7
|
+
data.tar.gz: ca612691e7ebf063774fc7f6c12bca04364ea1401616a59e65d874a123fb9219fe27aa4e307478879c6503a59464ab07267e60eb3e7e11a20d737acea69456e2
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -3,64 +3,126 @@
|
|
3
3
|
|
4
4
|
This is a collection of little helpers to make working with Rails and Minitest a bit easier.
|
5
5
|
|
6
|
-
_NOTE: This is a work in progress. I'm using this gem in two of my applications and I'm going to continue to add stuff to it, as well as fixing bugs._
|
7
|
-
|
8
6
|
|
9
7
|
## Installation
|
10
8
|
|
11
9
|
To install this gem, just put it in your `Gemfile`:
|
12
10
|
|
13
11
|
group :test do
|
14
|
-
gem 'minitest', :require => false
|
15
12
|
gem 'minitest_rails_tools', :require => false
|
16
13
|
end
|
17
14
|
|
18
15
|
Afterwards require it in your `test_helper.rb`:
|
19
16
|
|
20
|
-
require 'minitest/autorun'
|
21
17
|
require 'minitest_rails_tools'
|
22
18
|
|
23
|
-
Alternatively, you could also just require certain parts of the tools
|
19
|
+
Alternatively, you could also just require certain parts of the tools.
|
20
|
+
See the respective section for the command to add only a specific part.
|
21
|
+
|
22
|
+
In order to get rid of TestUnit, just open your `application.rb` and change
|
23
|
+
the following lines:
|
24
|
+
|
25
|
+
# Pick the frameworks you want:
|
26
|
+
# require 'rails/all'
|
27
|
+
require "active_record/railtie"
|
28
|
+
require "action_controller/railtie"
|
29
|
+
require "action_mailer/railtie"
|
30
|
+
require "active_resource/railtie"
|
31
|
+
require "sprockets/railtie"
|
32
|
+
# require "rails/test_unit/railtie"
|
24
33
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
34
|
+
For generators to use MiniTest instead of TestUnit (additionally) change this:
|
35
|
+
|
36
|
+
config.generators do |g|
|
37
|
+
g.test_framework :mini_test, :spec => true, :fixture => true
|
38
|
+
end
|
29
39
|
|
30
40
|
|
31
41
|
## Tools
|
32
42
|
|
43
|
+
### Application Integration
|
44
|
+
|
45
|
+
Adds Rails' routes URL helpers and registers ControllerSpecs. Just put the
|
46
|
+
controller name into the describe title:
|
47
|
+
|
48
|
+
describe 'FooController' do
|
49
|
+
|
50
|
+
let(:bam) { 42 }
|
51
|
+
|
52
|
+
it 'does generic stuff' do
|
53
|
+
get :bar, :zer => bam
|
54
|
+
response.message.must_equal("OK")
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
This functionality is separately available by adding:
|
60
|
+
|
61
|
+
require 'minitest_rails_tools/application_integration'
|
62
|
+
|
63
|
+
|
33
64
|
### Association Matchers
|
34
65
|
|
35
66
|
This allows you to test standard Rails associations in your tests:
|
36
67
|
|
37
68
|
subject { FactoryGirl.create :foo }
|
38
|
-
|
69
|
+
|
39
70
|
must_belong_to :faz
|
40
|
-
must_have_one :
|
71
|
+
must_have_one :zer
|
41
72
|
must_have_many :bams
|
42
73
|
must_have_many_through :bars, :bams
|
43
74
|
must_have_and_belong_to_many :berks
|
44
75
|
|
76
|
+
This functionality is separately available by adding:
|
45
77
|
|
46
|
-
|
78
|
+
require 'minitest_rails_tools/association_matchers'
|
47
79
|
|
48
|
-
You may use this to test a couple of Rails' validations in your tests:
|
49
80
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
81
|
+
### Expectations
|
82
|
+
|
83
|
+
This adds a couple of extra expectations to improve readability:
|
84
|
+
|
85
|
+
Bar.must_differ('count', -1) do
|
86
|
+
delete :destroy, :id => subject.to_param
|
87
|
+
end
|
88
|
+
|
89
|
+
subject.foos.must_have_size 20
|
90
|
+
|
91
|
+
subject.foos.must_have_same_elements_as Foo.all
|
92
|
+
|
93
|
+
This functionality is separately available by adding:
|
94
|
+
|
95
|
+
require 'minitest_rails_tools/expectations'
|
54
96
|
|
55
97
|
|
56
98
|
### Helper Extension
|
57
99
|
|
58
|
-
This allows you to define a helper as your subject (and then call your helper
|
100
|
+
This allows you to define a helper as your subject (and then call your helper
|
101
|
+
methods on it):
|
59
102
|
|
60
103
|
subject { helper :foo_helper }
|
61
|
-
|
104
|
+
|
62
105
|
subject.do_my_stuff.must_equal 'OK'
|
63
106
|
|
107
|
+
This functionality is separately available by adding:
|
108
|
+
|
109
|
+
require 'minitest_rails_tools/helper_extension'
|
110
|
+
|
111
|
+
|
112
|
+
### Validation Matchers
|
113
|
+
|
114
|
+
You may use this to test a couple of Rails' validations in your tests:
|
115
|
+
|
116
|
+
subject { FactoryGirl.create :foo }
|
117
|
+
|
118
|
+
must_validate_presence_of :bar
|
119
|
+
must_validate_uniqueness_of :baz
|
120
|
+
must_validate_length_of :zer, :minimum => 2, :maximum => 5
|
121
|
+
|
122
|
+
This functionality is separately available by adding:
|
123
|
+
|
124
|
+
require 'minitest_rails_tools/validation_matchers'
|
64
125
|
|
65
126
|
|
66
|
-
Copyright © 2013 SUSE released under the MIT license.
|
127
|
+
Copyright © 2013 SUSE released under the MIT license.
|
128
|
+
For full details see LICENSE included in this distribution.
|
data/lib/minitest_rails_tools.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
require_relative 'minitest_rails_tools/application_integration'
|
2
|
+
require_relative 'minitest_rails_tools/association_matchers'
|
3
|
+
require_relative 'minitest_rails_tools/expectations'
|
4
|
+
require_relative 'minitest_rails_tools/helper_extension'
|
5
|
+
require_relative 'minitest_rails_tools/validation_matchers'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
|
3
|
+
module MiniTest::Assertions
|
4
|
+
|
5
|
+
def assert_count(value, list)
|
6
|
+
size = list.size
|
7
|
+
assert_equal value, size, "Expected size to be #{value}, but was #{size}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def assert_same_elements(value, list)
|
11
|
+
assert_equal(
|
12
|
+
list.sort, value.sort,
|
13
|
+
"Expected #{list} to have the same elements as #{value}"
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def assert_difference(expression, difference = 1, message = nil, &block)
|
18
|
+
expressions = Array.wrap expression
|
19
|
+
exps = expressions.collect do |e|
|
20
|
+
e.respond_to?(:call) ? e : lambda { eval(e, block.binding) }
|
21
|
+
end
|
22
|
+
before = exps.collect(&:call)
|
23
|
+
|
24
|
+
yield
|
25
|
+
|
26
|
+
expressions.zip(exps).each_with_index do |(code, e), i|
|
27
|
+
error = "#{code.inspect} didn't change by #{difference}"
|
28
|
+
error = "#{message}.\n#{error}" if message
|
29
|
+
assert_equal(before[i] + difference, e.call, error)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
class Object
|
36
|
+
|
37
|
+
include MiniTest::Assertions
|
38
|
+
|
39
|
+
def must_differ(expression, difference = 1, message = nil, &block)
|
40
|
+
metaclass = class << self; self end
|
41
|
+
metaclass.send(:define_method, :callback)
|
42
|
+
assert_difference("#{self}.#{expression}", difference, message, &block)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
Object.infect_an_assertion :assert_count, :must_count
|
48
|
+
Object.infect_an_assertion :assert_count, :must_have_size
|
49
|
+
Array.infect_an_assertion :assert_same_elements, :must_have_same_elements_as
|
metadata
CHANGED
@@ -1,18 +1,44 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest_rails_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Dominik Bamberger
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
13
|
-
dependencies:
|
14
|
-
|
15
|
-
|
11
|
+
date: 2013-05-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: A collection of helpers for integrating Rails and Minitest.
|
16
42
|
email: bamboo@suse.com
|
17
43
|
executables: []
|
18
44
|
extensions: []
|
@@ -21,32 +47,33 @@ files:
|
|
21
47
|
- LICENSE
|
22
48
|
- README.md
|
23
49
|
- lib/minitest_rails_tools.rb
|
24
|
-
- lib/application_integration.rb
|
25
|
-
- lib/helper_extension.rb
|
26
|
-
- lib/association_matchers.rb
|
27
|
-
- lib/
|
50
|
+
- lib/minitest_rails_tools/application_integration.rb
|
51
|
+
- lib/minitest_rails_tools/helper_extension.rb
|
52
|
+
- lib/minitest_rails_tools/association_matchers.rb
|
53
|
+
- lib/minitest_rails_tools/expectations.rb
|
54
|
+
- lib/minitest_rails_tools/validation_matchers.rb
|
28
55
|
homepage: http://github.com/openSUSE/minitest_rails_tools
|
29
|
-
licenses:
|
56
|
+
licenses:
|
57
|
+
- MIT
|
58
|
+
metadata: {}
|
30
59
|
post_install_message:
|
31
60
|
rdoc_options: []
|
32
61
|
require_paths:
|
33
62
|
- lib
|
34
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
64
|
requirements:
|
37
|
-
- -
|
65
|
+
- - '>='
|
38
66
|
- !ruby/object:Gem::Version
|
39
67
|
version: '0'
|
40
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
69
|
requirements:
|
43
|
-
- -
|
70
|
+
- - '>='
|
44
71
|
- !ruby/object:Gem::Version
|
45
72
|
version: '0'
|
46
73
|
requirements: []
|
47
74
|
rubyforge_project:
|
48
|
-
rubygems_version:
|
75
|
+
rubygems_version: 2.0.0
|
49
76
|
signing_key:
|
50
|
-
specification_version:
|
77
|
+
specification_version: 4
|
51
78
|
summary: Smoothen Minitest/Rails integration
|
52
79
|
test_files: []
|