rspec2minitest 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7593adead559b43c41faa38ad724b4f05c4c205
4
- data.tar.gz: 2bd734b277cd890f2d29573278e2be409629644f
3
+ metadata.gz: a69aaff32e17e87b41cafe0f444beeb52e872796
4
+ data.tar.gz: f89fafaf965c3d270d733c3344c61dfadec5510c
5
5
  SHA512:
6
- metadata.gz: e8a4ad5f694c808a2eb1f4160ebbe7483962e62b94ec71b800ca73df7aa7c34732de84ee639289f2369d844ed375b78b7fd3b763c7e17ea020bc556f6ff24d2c
7
- data.tar.gz: 8d9ee06c36460d32ab62966252257e71f0a6120fea3fd06b55d0232432d5e5e7e544ca8c0c80d70978501d49565e5615a685931b8a7c96a87112e5eab728e52c
6
+ metadata.gz: 71abb15f5f359e266299928e7ec8d0dd99ee09cdfc6141264e2bb56681229ba5e36a652d2ec379683cd54e54c9766e8c02978b3fc7f0103628dfabd1f0aa3e88
7
+ data.tar.gz: 1b945657b7e60dbe72cbed7640e1a9701ef84e9a437f7922a229736e6bf34baaf625022d6e370a673f3a07ff5ff2f8d0455aa97e3ba5f0d447ea3dabbbb2a679
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0
4
+
5
+ * Fix: Allow other major versions of MiniTest than 4
6
+ * Fix: Allow other verbs than `have`
7
+ * New method: `add_matchers`
8
+ * New integration: paperclip
9
+ * New integration: capybara
data/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ [![Gem Version](https://badge.fury.io/rb/rspec2minitest.png)](http://badge.fury.io/rb/rspec2minitest)
2
+ [![Dependency Status](https://gemnasium.com/cschramm/rspec2minitest.png)](https://gemnasium.com/cschramm/rspec2minitest)
3
+ [![Code Climate](https://codeclimate.com/github/cschramm/rspec2minitest.png)](https://codeclimate.com/github/cschramm/rspec2minitest)
4
+
1
5
  # RSpec2MiniTest
2
6
 
3
7
  Provides a generic factory to automatically convert the RSpec matchers of your favorite
@@ -6,31 +10,50 @@ It is a generalization of [Jared Ning's capybara_minitest_spec](https://github.c
6
10
 
7
11
  ## Installation
8
12
 
9
- In your `Gemfile`:
10
-
13
+ # Gemfile
11
14
  gem 'rspec2minitest'
12
15
 
13
- ## Examples
16
+ ## Integrations
14
17
 
15
18
  ### Capybara
16
19
 
17
20
  To create assertions / expectations from all Capybara RSpec matchers add to your `test_helper`:
18
21
 
19
- require 'rspec2minitest'
20
- require 'capybara/rspec/matchers'
21
- Capybara::RSpecMatchers.public_instance_methods.each do |matcher_name|
22
- RSpec2MiniTest.add_matcher matcher_name,
23
- matcher_module: Capybara::RSpecMatchers,
24
- assertion_prefix: 'page'
25
- end
22
+ require 'rspec2minitest/capybara'
23
+
24
+ For the `have_text` matcher you can then use:
25
+
26
+ # Unit
27
+ assert_page_has_text(page, text)
28
+ refute_page_has_text(page, text)
29
+
30
+ # Spec
31
+ it { must_have_text(text) }
32
+ it { wont_have_text(text) }
33
+
34
+ For all matchers see [Capybara/RSpecMatchers](http://rubydoc.info/gems/capybara/Capybara/RSpecMatchers)
26
35
 
27
36
  This is exactly what the `capybara_minitest_spec` gem does. If Capybara
28
37
  matchers are the only ones you need to convert, I recommend using that gem.
29
38
 
30
39
  ### Paperclip
31
40
 
32
- To create attachment assertions / expectations for your models add to your `test_helper`:
41
+ # test_helper
42
+ require 'rspec2minitest/paperclip'
43
+
44
+ The `have_attachment` matcher gets converted to `assert_model_has_attachment`
45
+ and `must_have_attachment` and their negative counterparts.
46
+
47
+ For all matchers see [Paperclip::Shoulda::Matchers](http://rubydoc.info/gems/paperclip/Paperclip/Shoulda/Matchers)
48
+
49
+ ### Custom integrations
50
+
51
+ You can use the API of rspec2minitest to easily create your own integrations
52
+ within your test_helper. `require 'rspec2minitest'` provides you with an
53
+ RSpec2MiniTest module that provides an `add_matcher` function to convert
54
+ single matchers and an `add_matchers` function to convert all public instance
55
+ methods of a given module.
33
56
 
34
- require 'rspec2minitest'
35
- require 'paperclip/matchers'
36
- RSpec2MiniTest.add_matcher 'have_attached_file', matcher_module: Paperclip::Shoulda::Matchers
57
+ Have a look at the integrations in `lib/rspec2minitest` for examples and do
58
+ not forget to issue a pull request to add `lib/rspec2minitest/#{gemname}.rb`
59
+ to the rspec2minitest spec. :)
@@ -4,14 +4,25 @@ module RSpec2MiniTest
4
4
  module_function
5
5
 
6
6
  def add_matcher(matcher_name, matcher_module: nil, assertion_prefix: nil)
7
- positive_name = RSpec2MiniTest::PositiveTestName.new(
8
- matcher_name, matcher_module: matcher_module, assertion_prefix: assertion_prefix
9
- )
10
- negative_name = RSpec2MiniTest::NegativeTestName.new(
11
- matcher_name, matcher_module: matcher_module, assertion_prefix: assertion_prefix
12
- )
13
- [positive_name, negative_name].each do |test_name|
14
- define_expectation test_name
7
+ test_names = [
8
+ RSpec2MiniTest::PositiveTestName,
9
+ RSpec2MiniTest::NegativeTestName
10
+ ]
11
+
12
+ test_names.each do |test_name|
13
+ define_expectation(
14
+ test_name.new(matcher_name, matcher_module, assertion_prefix)
15
+ )
16
+ end
17
+ end
18
+
19
+ module_function
20
+
21
+ def add_matchers(matcher_module, assertion_prefix: nil)
22
+ matcher_module.public_instance_methods.each do |matcher_name|
23
+ add_matcher matcher_name,
24
+ matcher_module: matcher_module,
25
+ assertion_prefix: assertion_prefix
15
26
  end
16
27
  end
17
28
 
@@ -22,10 +33,10 @@ module RSpec2MiniTest
22
33
 
23
34
  def define_assertion(test_name)
24
35
  method_name = test_name.assertion_name
25
- MiniTest::Assertions.send(:define_method, method_name) do |page, *args|
36
+ MiniTest::Assertions.send(:define_method, method_name) do |object, *args|
26
37
  matcher = test_name.matcher(*args)
27
38
 
28
- matches = matcher.send test_name.match_method, page
39
+ matches = matcher.send test_name.match_method, object
29
40
  failure_message = message { matcher.send test_name.failure_message_method }
30
41
 
31
42
  assert matches, failure_message
@@ -0,0 +1,4 @@
1
+ require 'rspec2minitest'
2
+ require 'capybara/rspec/matchers'
3
+
4
+ RSpec2MiniTest.add_matchers Capybara::RSpecMatchers, assertion_prefix: 'page'
@@ -0,0 +1,4 @@
1
+ require 'rspec2minitest'
2
+ require 'paperclip/matchers'
3
+
4
+ RSpec2MiniTest.add_matchers Paperclip::Shoulda::Matchers, assertion_prefix: 'model'
@@ -1,10 +1,12 @@
1
+ require 'verbs'
2
+
1
3
  module RSpec2MiniTest
2
4
  class TestName
3
- def initialize(matcher_name, matcher_module: nil, assertion_prefix: nil)
5
+ def initialize(matcher_name, matcher_module, assertion_prefix)
4
6
  extend matcher_module if matcher_module
5
7
 
6
8
  @matcher_name = matcher_name.to_s
7
- @assertion_prefix = assertion_prefix
9
+ @assertion_prefix = assertion_prefix && "#{assertion_prefix}_" || ''
8
10
  end
9
11
 
10
12
  def matcher(*args)
@@ -13,14 +15,16 @@ module RSpec2MiniTest
13
15
 
14
16
  private
15
17
 
16
- def has
17
- @matcher_name.sub /^have/, 'has'
18
+ def conjugated
19
+ pieces = @matcher_name.split('_', 2)
20
+ pieces[0] = pieces[0].verb.conjugate(person: :third)
21
+ pieces.join('_')
18
22
  end
19
23
  end
20
24
 
21
25
  class PositiveTestName < TestName
22
26
  def assertion_name
23
- "assert_#{@assertion_prefix && "#{@assertion_prefix}_" || ''}#{has}"
27
+ "assert_#{@assertion_prefix}_#{conjugated}"
24
28
  end
25
29
 
26
30
  def expectation_name
@@ -38,7 +42,7 @@ module RSpec2MiniTest
38
42
 
39
43
  class NegativeTestName < TestName
40
44
  def assertion_name
41
- "refute_#{@assertion_prefix && "#{@assertion_prefix}_" || ''}#{has}"
45
+ "refute_#{@assertion_prefix}#{conjugated}"
42
46
  end
43
47
 
44
48
  def expectation_name
@@ -1,7 +1,7 @@
1
1
  module RSpec2MiniTest
2
2
  class Version
3
3
  MAJOR = 0
4
- MINOR = 1
4
+ MINOR = 2
5
5
  PATCH = 0
6
6
 
7
7
  def self.to_s
@@ -28,5 +28,6 @@ Gem::Specification.new do |s|
28
28
 
29
29
  s.add_development_dependency 'rake'
30
30
 
31
- s.add_runtime_dependency 'minitest', '~> 4.7'
31
+ s.add_runtime_dependency 'minitest', '>= 2.0.0'
32
+ s.add_runtime_dependency 'verbs'
32
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec2minitest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Schramm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-04 00:00:00.000000000 Z
11
+ date: 2013-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -28,16 +28,30 @@ dependencies:
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: '4.7'
33
+ version: 2.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: verbs
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
39
46
  - !ruby/object:Gem::Version
40
- version: '4.7'
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: |2
42
56
 
43
57
  Provides a generic factory to automatically convert RSpec matchers
@@ -49,10 +63,13 @@ extra_rdoc_files:
49
63
  - README.md
50
64
  files:
51
65
  - .gitignore
66
+ - CHANGELOG.md
52
67
  - Gemfile
53
68
  - LICENSE
54
69
  - README.md
55
70
  - lib/rspec2minitest.rb
71
+ - lib/rspec2minitest/capybara.rb
72
+ - lib/rspec2minitest/paperclip.rb
56
73
  - lib/rspec2minitest/test_name.rb
57
74
  - lib/rspec2minitest/version.rb
58
75
  - rspec2minitest.gemspec
@@ -76,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
93
  version: '0'
77
94
  requirements: []
78
95
  rubyforge_project:
79
- rubygems_version: 2.0.7
96
+ rubygems_version: 2.1.2
80
97
  signing_key:
81
98
  specification_version: 4
82
99
  summary: Provides a generic factory to automatically convert RSpec matchers into assertions