minitest-mustwonted 1.0.0 → 1.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4422bb0e2968257b82b63ed0cf419a1edc95ad51
4
+ data.tar.gz: 273572fb3c29f46dc47c96275a53f0e996f07a32
5
+ SHA512:
6
+ metadata.gz: 19e55587e7cc6e3fb893058c563c2b1a72b98bb85b1aafb76b66e1b0c1edd84f30563a095c56e2c560b128ee47d364c648581c66bf4bb65436168eb6a7623194
7
+ data.tar.gz: ce9e182af0d0a8ce7c3357ed69f99470fcfa9a23e49a2a9eec953067546a2865aeedc3c0341a883ebc3caa16aa1da1b766d7389f13b98ff36fe92524df4abb4b
data/README.md CHANGED
@@ -1,13 +1,13 @@
1
- # Must Wanted Things for MiniTest
1
+ # Most Wanted Things for Minitest
2
2
 
3
- This is a little plugn for [minitest](https://github.com/seattlerb/minitest)
4
- which contains a new `must/wont` matchers engine, a set of essential matchers
5
- and hooks for testing ruby/rails applications.
3
+ This is a little plugn for [Minitest](https://github.com/seattlerb/Minitest)
4
+ which contains a new rspec-like `must/wont` matchers engine, and a set of
5
+ essential matchers and hooks for testing ruby/rails applications.
6
6
 
7
7
  ## Usage
8
8
 
9
- 1) Add `gem minitest-mustwonted` into your `Gemfile`
10
- 2) Enjoy!
9
+ 1. Add `gem minitest-mustwonted` into your `Gemfile`
10
+ 2. Enjoy!
11
11
 
12
12
 
13
13
  ## Awesome Matchers
@@ -15,7 +15,7 @@ and hooks for testing ruby/rails applications.
15
15
  Awesome matchers are set of easy to read logic-like matchers
16
16
 
17
17
  ```ruby
18
- describe MiniTest::MustWonted do
18
+ describe Minitest::MustWonted do
19
19
  it "must provide awesome matchers" do
20
20
  22.must == 22
21
21
  22.wont == 33
@@ -36,7 +36,7 @@ end
36
36
  Magick matchers are `rspec` like `be_smth` matchers
37
37
 
38
38
  ```ruby
39
- describe MiniTest::MustWonted do
39
+ describe Minitest::MustWonted do
40
40
  it "must provide magick matchers" do
41
41
  [].must be_empty
42
42
  [0].wont be_empty
@@ -55,7 +55,7 @@ end
55
55
  Additional `have` matcher will let you write easily readable collection checks
56
56
 
57
57
  ```ruby
58
- describe MiniTest::MustWonted do
58
+ describe Minitest::MustWonted do
59
59
  class User
60
60
  def comments(type=nil)
61
61
  if type
@@ -87,7 +87,7 @@ Most of the `assert_smth` | `refute_smth` methods are piped throught the `must`
87
87
  `wont` interface automatically and resolved on fly.
88
88
 
89
89
  ```ruby
90
- describe MiniTest::MustWonted do
90
+ describe Minitest::MustWonted do
91
91
  it "must support legacy assertions" do
92
92
  '2'.must equal(3)
93
93
  '3'.wont equal(2)
@@ -108,7 +108,7 @@ as long as they take the subject as the first argument.
108
108
  `minitest-matchers` validation package
109
109
 
110
110
  ```ruby
111
- describe MiniTest::MustWonted do
111
+ describe Minitest::MustWonted do
112
112
  it "must provide validation matchers" do
113
113
  @user.must have_valid(:name).with("Nikolay", "Vasilisa")
114
114
  @user.wont have_valid(:name).with(nil, '', false)
@@ -164,10 +164,10 @@ class MyAwesomeMatcher
164
164
  end
165
165
  ```
166
166
 
167
- Once you done, register your matcher with `MiniTest::MustWonted` and start using it
167
+ Once you done, register your matcher with `Minitest::MustWonted` and start using it
168
168
 
169
169
  ```ruby
170
- MiniTest::MustWonted :method_name, MyAwesomeMatcher
170
+ Minitest::MustWonted :method_name, MyAwesomeMatcher
171
171
 
172
172
  describe Something do
173
173
  it "must do something" do
@@ -181,10 +181,10 @@ end
181
181
 
182
182
  Most ideas were boldly taken from:
183
183
 
184
- [minitest-rails](https://github.com/blowmage/minitest-rails)
185
- [minitest-matchers](https://github.com/zenspider/minitest-matchers)
186
- [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers)
187
- [rspec-rails](https://github.com/rspec/rspec-rails)
184
+ * [minitest-rails](https://github.com/blowmage/minitest-rails)
185
+ * [minitest-matchers](https://github.com/zenspider/minitest-matchers)
186
+ * [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers)
187
+ * [rspec-rails](https://github.com/rspec/rspec-rails)
188
188
 
189
189
 
190
190
  ## Copyright
@@ -1,10 +1,10 @@
1
1
  require 'minitest/spec'
2
2
 
3
- module MiniTest::MustWonted
4
- VERSION = '1.0.0'
3
+ module Minitest::MustWonted
4
+ VERSION = '1.0.1'
5
5
 
6
6
  def self.add(*args)
7
- MiniTest::MustWonted::Matcher.add *args
7
+ Minitest::MustWonted::Matcher.add *args
8
8
  end
9
9
  end
10
10
 
@@ -23,5 +23,5 @@ end
23
23
  end
24
24
 
25
25
  # registering the matchers
26
- MiniTest::MustWonted.add :have, MiniTest::MustWonted::Matcher::Have
27
- MiniTest::MustWonted.add :have_valid, MiniTest::MustWonted::Matcher::Valid
26
+ Minitest::MustWonted.add :have, Minitest::MustWonted::Matcher::Have
27
+ Minitest::MustWonted.add :have_valid, Minitest::MustWonted::Matcher::Valid
@@ -1,12 +1,12 @@
1
1
  #
2
2
  # The actual matcher engine
3
3
  #
4
- class MiniTest::MustWonted::Matcher
4
+ class Minitest::MustWonted::Matcher
5
5
 
6
6
  class << self
7
7
  def must(subject, matcher=nil, flipped=false)
8
8
  if matcher == nil
9
- MiniTest::MustWonted::Matcher::Awesome.new(subject, flipped)
9
+ Minitest::MustWonted::Matcher::Awesome.new(subject, flipped)
10
10
  elsif matcher.respond_to?(:match?)
11
11
  matcher.match?(subject, flipped)
12
12
  subject # returning the reference to the subject in case of chained calls
@@ -20,11 +20,19 @@ class MiniTest::MustWonted::Matcher
20
20
  end
21
21
 
22
22
  def add(name, klass)
23
- MiniTest::Unit::TestCase.instance_eval do
23
+ Minitest::Spec.instance_eval do
24
24
  define_method name do |*args|
25
25
  klass.new *args
26
26
  end
27
27
  end
28
+
29
+ if defined?(ActiveSupport)
30
+ ActiveSupport::TestCase.instance_eval do
31
+ define_method name do |*args|
32
+ klass.new *args
33
+ end
34
+ end
35
+ end
28
36
  end
29
37
  end
30
38
 
@@ -6,26 +6,27 @@
6
6
  # smth.must > smth
7
7
  # ...
8
8
  #
9
- class MiniTest::MustWonted::Matcher::Awesome
10
- include MiniTest::Assertions
9
+ class Minitest::MustWonted::Matcher::Awesome
10
+ include Minitest::Assertions
11
11
 
12
- attr_reader :subject, :flipped
12
+ attr_accessor :subject, :flipped, :assertions
13
13
 
14
14
  def initialize(subject, flipped)
15
- @subject = subject
16
- @flipped = flipped
15
+ @subject = subject
16
+ @flipped = flipped
17
+ @assertions = 0
17
18
  end
18
19
 
19
20
  def ==(value)
20
- __call 'equal', false, @subject, value
21
+ __call 'equal', false, value, @subject
21
22
  end
22
23
 
23
24
  def !=(value)
24
- __call 'equal', true, @subject, value
25
+ __call 'equal', true, value, @subject
25
26
  end
26
27
 
27
28
  def =~(regexp)
28
- __call 'match', false, @subject, regexp
29
+ __call 'match', false, regexp, @subject
29
30
  end
30
31
 
31
32
  def > (value)
@@ -4,7 +4,7 @@
4
4
  # @user.must have(10).comments
5
5
  # @array.must have(2).items
6
6
  #
7
- class MiniTest::MustWonted::Matcher::Have
7
+ class Minitest::MustWonted::Matcher::Have
8
8
 
9
9
  def initialize(size)
10
10
  @size = size
@@ -18,7 +18,7 @@ class MiniTest::MustWonted::Matcher::Have
18
18
  end
19
19
 
20
20
  if wont ? items.size == @size : items.size != @size
21
- raise MiniTest::Assertion, "Expected #{subject.inspect} to have #{
21
+ raise Minitest::Assertion, "Expected #{subject.inspect} to have #{
22
22
  @size} ##{@name}(#{@args.join(',')})\nbut instead it has: #{size}"
23
23
  end
24
24
  end
@@ -2,7 +2,7 @@
2
2
  # This matcher automatically calls the legacy `must_smth`, `refute_something`
3
3
  # matchers if they are exists
4
4
  #
5
- class MiniTest::MustWonted::Matcher::Legacy
5
+ class Minitest::MustWonted::Matcher::Legacy
6
6
 
7
7
  def initialize(name, args, test)
8
8
  @name = name
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # The Magick `be_smth` matcher
3
3
  #
4
- class MiniTest::MustWonted::Matcher::Magick
4
+ class Minitest::MustWonted::Matcher::Magick
5
5
 
6
6
  def initialize(name, args)
7
7
  @name = name.slice(3, name.size)
@@ -14,7 +14,7 @@ class MiniTest::MustWonted::Matcher::Magick
14
14
  match = subject.send @name, *@args
15
15
 
16
16
  if wont ? match : !match
17
- raise MiniTest::Assertion, "Expected #{subject.inspect} ##{
17
+ raise Minitest::Assertion, "Expected #{subject.inspect} ##{
18
18
  @name} to return: #{ wont ? "false" : "true"
19
19
  }\nbut instead have: #{match.inspect}"
20
20
  end
@@ -7,7 +7,7 @@
7
7
  #
8
8
  # Credits: we're mimicking the minitest-matchers validation matchers here
9
9
  #
10
- class MiniTest::MustWonted::Matcher::Valid
10
+ class Minitest::MustWonted::Matcher::Valid
11
11
  def initialize(name)
12
12
  @name = name.to_sym
13
13
  @args = []
@@ -35,12 +35,12 @@ class MiniTest::MustWonted::Matcher::Valid
35
35
  error = subject.errors[@name]
36
36
 
37
37
  if error && !wont
38
- raise MiniTest::Assertion, "Expected the #{
38
+ raise Minitest::Assertion, "Expected the #{
39
39
  subject.inspect} to have valid #{@name
40
40
  } with #{subject.send(@name).inspect
41
41
  }\nbut had an error instead: #{error.inspect}"
42
42
  elsif wont && !error
43
- raise MiniTest::Assertion, "Expected the #{
43
+ raise Minitest::Assertion, "Expected the #{
44
44
  subject.inspect} to have invalid #{@name
45
45
  } with #{subject.send(@name).inspect
46
46
  }\nbut had no errors for this field instead"
@@ -10,7 +10,7 @@ class Object
10
10
  # ....
11
11
  #
12
12
  def must(*args)
13
- MiniTest::MustWonted::Matcher.must(self, *args)
13
+ Minitest::MustWonted::Matcher.must(self, *args)
14
14
  end
15
15
 
16
16
  #
@@ -21,6 +21,6 @@ class Object
21
21
  # ....
22
22
  #
23
23
  def wont(*args)
24
- MiniTest::MustWonted::Matcher.wont(self, *args)
24
+ Minitest::MustWonted::Matcher.wont(self, *args)
25
25
  end
26
26
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Console runnner
3
3
  #
4
- module MiniTest::MustWonted
4
+ module Minitest::MustWonted
5
5
  def self.run(args)
6
6
  puts args
7
7
  end
@@ -1,7 +1,7 @@
1
1
  #
2
- # Extra sweets for the MiniTest::Spec unit
2
+ # Extra sweets for the Minitest::Spec unit
3
3
  #
4
- class MiniTest::Spec
4
+ class Minitest::Spec
5
5
 
6
6
  #
7
7
  # A shortcut to `must` directly on current subject
@@ -30,12 +30,29 @@ class MiniTest::Spec
30
30
  #
31
31
  def method_missing(name, *args)
32
32
  if name.slice(0, 3) == 'be_'
33
- MiniTest::MustWonted::Matcher::Magick.new(name, args)
33
+ Minitest::MustWonted::Matcher::Magick.new(name, args)
34
34
  elsif respond_to?("assert_#{name}")
35
- MiniTest::MustWonted::Matcher::Legacy.new(name, args, self)
35
+ Minitest::MustWonted::Matcher::Legacy.new(name, args, self)
36
36
  else
37
37
  super name, *args
38
38
  end
39
39
  end
40
40
 
41
41
  end
42
+
43
+ if defined?(ActiveSupport)
44
+ class ActiveSupport::TestCase
45
+ #
46
+ # Catching up the magick `be_smthing?` matchers
47
+ #
48
+ def method_missing(name, *args)
49
+ if name.slice(0, 3) == 'be_'
50
+ Minitest::MustWonted::Matcher::Magick.new(name, args)
51
+ elsif respond_to?("assert_#{name}")
52
+ Minitest::MustWonted::Matcher::Legacy.new(name, args, self)
53
+ else
54
+ super name, *args
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- describe MiniTest::MustWonted::Matcher::Awesome do
3
+ describe Minitest::MustWonted::Matcher::Awesome do
4
4
 
5
5
  describe "==" do
6
6
  it "must test correctly" do
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- describe MiniTest::MustWonted::Matcher::Have do
3
+ describe Minitest::MustWonted::Matcher::Have do
4
4
 
5
5
  describe 'simple case' do
6
6
  subject{ Struct.new(:dogs, :cats).new([1,2,3],[1,2]) }
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- describe MiniTest::MustWonted::Matcher::Legacy do
3
+ describe Minitest::MustWonted::Matcher::Legacy do
4
4
 
5
5
  describe "simple case" do
6
6
  it "must be handled correctly" do
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- describe MiniTest::MustWonted::Matcher::Magick do
3
+ describe Minitest::MustWonted::Matcher::Magick do
4
4
 
5
5
  describe "plain calls" do
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- describe MiniTest::MustWonted::Matcher::Valid do
3
+ describe Minitest::MustWonted::Matcher::Valid do
4
4
 
5
5
  class User
6
6
  attr_accessor :name, :email, :errors
@@ -1,9 +1,9 @@
1
1
  require 'test_helper'
2
2
 
3
- describe MiniTest::MustWonted::Matcher do
3
+ describe Minitest::MustWonted::Matcher do
4
4
  subject{ nil }
5
5
 
6
- Matcher = MiniTest::MustWonted::Matcher
6
+ Matcher = Minitest::MustWonted::Matcher
7
7
 
8
8
  describe ".must" do
9
9
  describe "without a matcher" do
@@ -10,7 +10,7 @@ describe Object do
10
10
  end
11
11
 
12
12
  it "must bypass the call into Matcher.must" do
13
- MiniTest::MustWonted::Matcher.expects(:must).with(subject, 'something')
13
+ Minitest::MustWonted::Matcher.expects(:must).with(subject, 'something')
14
14
 
15
15
  subject.must 'something'
16
16
  end
@@ -22,7 +22,7 @@ describe Object do
22
22
  end
23
23
 
24
24
  it "must bypass the call into Matcher.wont" do
25
- MiniTest::MustWonted::Matcher.expects(:wont).with(subject, 'something')
25
+ Minitest::MustWonted::Matcher.expects(:wont).with(subject, 'something')
26
26
 
27
27
  subject.wont 'something'
28
28
  end
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
3
 
4
- describe MiniTest::Spec do
4
+ describe Minitest::Spec do
5
5
  subject { {} }
6
6
 
7
7
  it "must allow to use must" do
data/test/test_helper.rb CHANGED
@@ -4,9 +4,9 @@ require 'minitest/autorun'
4
4
  require 'minitest/pride'
5
5
  require 'mocha/setup'
6
6
 
7
- class MiniTest::Spec
7
+ class Minitest::Spec
8
8
  def assert_fails_correctly
9
9
  # TODO make sure that the errors are raised with correct file/line references
10
- -> { yield }.must_raise MiniTest::Assertion
10
+ -> { yield }.must_raise Minitest::Assertion
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-mustwonted
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nikolay Nemshilov
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-29 00:00:00.000000000 Z
11
+ date: 2013-07-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: minitest
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  description: Provides a new unversal and esily extendable matchers engine
@@ -56,26 +53,25 @@ files:
56
53
  - README.md
57
54
  homepage: http://github.com/MadRabbit/minitest-mustwonted
58
55
  licenses: []
56
+ metadata: {}
59
57
  post_install_message:
60
58
  rdoc_options: []
61
59
  require_paths:
62
60
  - lib
63
61
  required_ruby_version: !ruby/object:Gem::Requirement
64
- none: false
65
62
  requirements:
66
- - - ! '>='
63
+ - - '>='
67
64
  - !ruby/object:Gem::Version
68
65
  version: '0'
69
66
  required_rubygems_version: !ruby/object:Gem::Requirement
70
- none: false
71
67
  requirements:
72
- - - ! '>='
68
+ - - '>='
73
69
  - !ruby/object:Gem::Version
74
70
  version: '0'
75
71
  requirements: []
76
72
  rubyforge_project:
77
- rubygems_version: 1.8.23
73
+ rubygems_version: 2.0.3
78
74
  signing_key:
79
- specification_version: 3
80
- summary: new must/wont matchers engine for minitest
75
+ specification_version: 4
76
+ summary: new must/wont matchers engine for Minitest
81
77
  test_files: []