minispec-rails 0.2.0 → 0.3.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: f28f329c71a0112785204c37f8e24ba0f52047c5
4
- data.tar.gz: c911b14e1d51c3f8fe9855f1ee29bf4b9c209e00
3
+ metadata.gz: 1bddc2b8c861fc92f800d54f42f9eeeb99af55e5
4
+ data.tar.gz: ba50defe08cfa578e94e2c6d7cd54c8bfda11da0
5
5
  SHA512:
6
- metadata.gz: ce7a560b47a5b94064bf630d0f137449dce7c7e83e4433985002f962e84f2469bcb4fca15e22e3b9e4cdd5d7377a9f67f6f6b2d7aaee58094220cdf4b74ec56c
7
- data.tar.gz: 8dd819bbf7ce173dde14bfdec6cbf837adee06ad7e79d7a8ac97110ea7aaf4611db5614a32b85b66d44addd283be1564392357ee150d3170ce644ed6386e7ce3
6
+ metadata.gz: 500dd921bdffec8a3e4d9efb0e69f93db7c1cc51bcf7473c6bb93ee736bba6ff894987632478b286b4c420d6bce0bc0599a4331fd2093c122257edc130ce1c06
7
+ data.tar.gz: 8d5f6ccdb8a145db948e552fa265feee962ece3c9f7ad0be4ee4db40ee77cde3fd880688cdd0412a6cc3dc11ca94b021390bda740403543a8a9a4ebecbc9d5d2
data/README.md CHANGED
@@ -6,19 +6,25 @@ Use Minitest::Spec in Rails.
6
6
 
7
7
  There are plenty out there, and I'm sure they all work just fine.
8
8
  I have personally never used any of them because it was never a big deal to insert Minitest::Spec into any Rails project manually with just a few lines of code.
9
- The fewer gems/lines of code there are, the better.
10
- But obviously that's not very helpful to anyone who just wants it to work with a simple `gem blah`, done (including me).
9
+ Fewer gems/lines of code your project = better.
10
+ But I still want the convenience of a gem to get projects started quickly.
11
+
12
+ This gem gets you PURE minitest spec in a whopping 50 lines of code, and that's counting blank lines, comments, requires, and a (hopefully temporary) workaround for system tests.
13
+ There's no fancy tricks going on here.
14
+ This is plain jane minitest.
15
+ What you get is PURE spec awesomeness.
16
+ And by "PURE" I mean just `describe`s. No more defining classes on your own.
11
17
 
12
18
  ## Goals
13
19
 
14
- * Get running in Rails with Minitest::Spec with minimal lines of code.
20
+ * Get running in Rails with Minitest::Spec with minimal lines of code both in installation and the gem itself.
15
21
 
16
- ## Not Goals
22
+ ## NOT Goals
17
23
 
18
- * Help with migrating from "Rails style" to Spec style. I don't recommend anyone convert any test suite to spec style for the sake of converting. You really don't gain all that much.
19
- * Support multiple styles. You're probably here to use Spec style, so use Spec style. Why would you want to mix and match?
20
- * Support old Rails versions. Since I don't recommend converting, I don't see a big use case for supporting older Rails versions.
21
- * (for now at least) Rails generators. I personally don't find them all that useful. If there is enough demand for it, I might do it, but in the interest of keeping this gem small, I'm going to skip them.
24
+ * **Help with migrating from "Rails style" to Spec style.** I don't recommend anyone convert any test suite to spec style for the sake of converting. You really don't gain all that much by converting.
25
+ * **Support multiple styles (i.e. unit and spec).** You're probably here to use Spec style, so use Spec style. Why would you want to mix and match? Don't define test classes. Use `describe`.
26
+ * **Support old Rails versions.** Since I don't recommend converting, it doesn't seem worth it to support older Rails versions. I'm not going to explicitly define a minimum Rails version requirement, but for development I'm going to start with 5.1.1 (see the example app).
27
+ * **(for now at least) Rails generators.** I personally don't find them all that useful. If there is enough demand for it and/or someone contributes it, I might do it, but in the interest of keeping this gem small, I'm going to skip them.
22
28
 
23
29
  ## Installation
24
30
 
@@ -39,33 +45,43 @@ Or install it yourself as:
39
45
  ## Usage
40
46
 
41
47
  Once this gem is required, you can immediately start using it to `describe` your tests.
42
- There is 1 exception: SystemTests.
43
- In order to lazy-load, just require the workaround before defining `ApplicationSystemTestCase`:
48
+ There is 1 exception: system tests (see below).
49
+
50
+ ### Spec Types
51
+
52
+ The key to getting the right type of test is to describe the right thing.
53
+
54
+ | Test subclass | describe example |
55
+ | ------------------------------- | --------------------------------- |
56
+ | ActionDispatch::IntegrationTest | `describe MyController` |
57
+ | ActiveJob::TestCase | `describe MyJob` |
58
+ | ActionMailer::TestCase | `describe MyMailer` |
59
+ | ActionDispatch::SystemTestCase | `describe 'Admin system'` |
60
+ | ActionDispatch::IntegrationTest | `describe 'Customer integration'` |
61
+ | ActiveSupport::TestCase | `describe 'AnythingElse'` |
62
+
63
+ ### Example app
64
+
65
+ See the [example rails app](https://github.com/ordinaryzelig/minispec-rails-example).
66
+
67
+ ### System tests
68
+
69
+ Require this before defining `ApplicationSystemTestCase` (see lib/minispec/rails/system_test.rb):
44
70
 
45
71
  ```ruby
46
72
  # test/application_system_test_case.rb.
47
73
  require "test_helper"
48
- require 'minispec/rails/system_test' # Add this line here.
74
+ require 'minispec/rails/system_test' # <- Add this line here.
49
75
 
50
76
  class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
51
77
  driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
52
78
  end
53
79
  ```
54
80
 
55
- ### Spec Types
56
-
57
- * `describe` any AbstractController::Base subclass, the test will be a subclass of ActionDispatch::IntegrationTest.
58
- * `describe` any ActiveJob::Base subclass, the test will be a subclass of ActiveJob::TestCase.
59
- * `describe` any ActionMailer::Base subclass, the test will be a subclass of ActiveJob::TestCase.
60
- * `describe` any String, the test will be a subclass of ActionDispatch::SystemTestCase.
61
- * `describe` anything else, the test will be a subclass of ActiveSupport::TestCase.
62
-
63
- See the [example rails app](https://github.com/ordinaryzelig/minispec-rails-example).
64
-
65
81
  ## TODO
66
82
 
67
83
  * Ask Rails to add `run_load_hooks` for ActionDispatch::SystemTestCase so we can lazy load like the others.
68
- * Custom file types? I like file types like `spec/models/my_model.spec.rb`. But maybe later.
84
+ * Custom file types? I like file types with extensions like `spec/models/my_model.spec.rb`.
69
85
 
70
86
  ## License
71
87
 
@@ -14,7 +14,8 @@ module Minispec
14
14
 
15
15
  ActiveSupport.on_load(:action_dispatch_integration_test) do
16
16
  Minitest::Spec.register_spec_type(ActionDispatch::IntegrationTest) do |desc|
17
- desc.is_a?(Class) && desc < AbstractController::Base
17
+ (desc.is_a?(Class) && desc < AbstractController::Base) ||
18
+ (desc.to_s =~ /integration$/i)
18
19
  end
19
20
  end
20
21
 
@@ -7,7 +7,7 @@ ActionDispatch::SystemTestCase.extend(
7
7
  super
8
8
  unless Minitest::Spec::TYPES.find { |matcher, type| type == ApplicationSystemTestCase }
9
9
  Minitest::Spec.register_spec_type(ApplicationSystemTestCase) do |desc|
10
- desc.is_a?(String)
10
+ desc.to_s =~ /system$/i
11
11
  end
12
12
  end
13
13
  end
@@ -1,5 +1,5 @@
1
1
  module Minispec
2
2
  module Rails
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minispec-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jared Ning
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-13 00:00:00.000000000 Z
11
+ date: 2017-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler