rspec2minitest 0.1.0 → 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 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