shoulda-matchers 4.2.0 → 4.3.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
  SHA256:
3
- metadata.gz: 153f24e7ae0c3f3e4cc672663e3b718d15c5c1c809c6bab7ff3b418038b4ba71
4
- data.tar.gz: 88ceb4268aa3cb820661e0ec4c41b04e1affedf68917e809f0e7fa33aff8d634
3
+ metadata.gz: c022366c394fe10215171aee752452d41f7e051ef0174b99e0d9f947486ac1f7
4
+ data.tar.gz: 38bc2bf3e4d8432ebc8a8c1bfb319fc1da9236699e1ec28d78b53d93621c96c2
5
5
  SHA512:
6
- metadata.gz: 2acfc2606814dada7608e2fe9f3fec032493ee316ebfeaeb94cb0c9d47fca23b702f5e54f4c74356a78bf952eb6cc8c42c74636a9b01201afe69a6c56504a8b7
7
- data.tar.gz: c8db9ff17937194f55950b34cb56a6a71f922634dda173aad454e26915096b3201696b09ff75fe323034922a5d40b3d88a538365f9a58e8a6628e72ecf2855cb
6
+ metadata.gz: e06ce93032d5612eb34c952eb310f199b718e35875ae31c84ae177a09ca2bbdcc5fe33cc8fc3a97f5bf77aa3c5e2c91e3f7596e8c6328c66e494c8a9f3a94d90
7
+ data.tar.gz: 10f26b7b206227be842077802b9da370775b198cf30f32e8df70fa1b1bb69cbddd831244071eab874d98e186c6abee7a8c11187015f65b8f1f570b47ba20e947
data/README.md CHANGED
@@ -1,9 +1,11 @@
1
- # Shoulda Matchers [![Gem Version][version-badge]][rubygems] [![Build Status][travis-badge]][travis] ![Downloads][downloads-badge] [![Hound][hound-badge]][hound]
1
+ # Shoulda Matchers [![Gem Version][version-badge]][rubygems] [![Build Status][travis-badge]][travis] [![Total Downloads][downloads-total]][rubygems] [![Downloads][downloads-badge]][rubygems] [![Hound][hound-badge]][hound]
2
2
 
3
3
  [version-badge]: https://img.shields.io/gem/v/shoulda-matchers.svg
4
4
  [rubygems]: https://rubygems.org/gems/shoulda-matchers
5
5
  [travis-badge]: https://img.shields.io/travis/thoughtbot/shoulda-matchers/master.svg
6
6
  [travis]: https://travis-ci.org/thoughtbot/shoulda-matchers
7
+ [downloads-total]: https://img.shields.io/gem/dt/shoulda-matchers.svg
8
+ [downloads-badge]: https://img.shields.io/gem/dtv/shoulda-matchers.svg
7
9
  [downloads-badge]: https://img.shields.io/gem/dtv/shoulda-matchers.svg
8
10
  [hound-badge]: https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg
9
11
  [hound]: https://houndci.com
@@ -334,6 +336,8 @@ about any of them, make sure to [consult the documentation][rubydocs]!
334
336
  tests your `has_one` associations.
335
337
  * **[have_readonly_attribute](lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb)**
336
338
  tests usage of the `attr_readonly` macro.
339
+ * **[have_rich_text](lib/shoulda/matchers/active_record/have_rich_text_matcher.rb)**
340
+ tests your `has_rich_text` associations.
337
341
  * **[serialize](lib/shoulda/matchers/active_record/serialize_matcher.rb)** tests
338
342
  usage of the `serialize` macro.
339
343
  * **[validate_uniqueness_of](lib/shoulda/matchers/active_record/validate_uniqueness_of_matcher.rb)**
@@ -35,7 +35,7 @@ module Shoulda
35
35
  # include ActiveModel::Model
36
36
  # attr_accessor :supported_os
37
37
  #
38
- # validates_exclusion_of :supported_os, in: ['Mac', 'Linux']
38
+ # validates_exclusion_of :supported_os, in: 5..8
39
39
  # end
40
40
  #
41
41
  # # RSpec
@@ -15,6 +15,7 @@ require "shoulda/matchers/active_record/association_matchers/option_verifier"
15
15
  require "shoulda/matchers/active_record/have_db_column_matcher"
16
16
  require "shoulda/matchers/active_record/have_db_index_matcher"
17
17
  require "shoulda/matchers/active_record/have_readonly_attribute_matcher"
18
+ require "shoulda/matchers/active_record/have_rich_text_matcher"
18
19
  require "shoulda/matchers/active_record/have_secure_token_matcher"
19
20
  require "shoulda/matchers/active_record/serialize_matcher"
20
21
  require "shoulda/matchers/active_record/accept_nested_attributes_for_matcher"
@@ -0,0 +1,79 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module ActiveRecord
4
+ # The `have_rich_text` matcher tests usage of the
5
+ # `has_rich_text` macro.
6
+ #
7
+ # #### Example
8
+ #
9
+ # class Post < ActiveRecord
10
+ # has_rich_text :content
11
+ # end
12
+ #
13
+ # # RSpec
14
+ # RSpec.describe Post, type: :model do
15
+ # it { is_expected.to have_rich_text(:content) }
16
+ # end
17
+ #
18
+ # # Minitest (Shoulda)
19
+ # class PostTest < ActiveSupport::TestCase
20
+ # should have_rich_text(:content)
21
+ # end
22
+ #
23
+ # @return [HaveRichText]
24
+ #
25
+ def have_rich_text(rich_text_attribute)
26
+ HaveRichText.new(rich_text_attribute)
27
+ end
28
+
29
+ # @private
30
+ class HaveRichText
31
+ def initialize(rich_text_attribute)
32
+ @rich_text_attribute = rich_text_attribute
33
+ end
34
+
35
+ def description
36
+ "have configured :#{rich_text_attribute} as a ActionText::RichText association"
37
+ end
38
+
39
+ def failure_message
40
+ "Expected #{subject.class} to #{error_description}"
41
+ end
42
+
43
+ def failure_message_when_negated
44
+ "Did not expect #{subject.class} to have ActionText::RichText :#{rich_text_attribute}"
45
+ end
46
+
47
+ def matches?(subject)
48
+ @subject = subject
49
+ @error = run_checks
50
+ @error.nil?
51
+ end
52
+
53
+ private
54
+
55
+ attr_reader :error, :rich_text_attribute, :subject
56
+
57
+ def run_checks
58
+ if !has_attribute?
59
+ ":#{rich_text_attribute} does not exist"
60
+ elsif !has_expected_action_text?
61
+ :default
62
+ end
63
+ end
64
+
65
+ def has_attribute?
66
+ @subject.respond_to?(rich_text_attribute.to_s)
67
+ end
68
+
69
+ def has_expected_action_text?
70
+ @subject.send(rich_text_attribute).class.name == 'ActionText::RichText'
71
+ end
72
+
73
+ def error_description
74
+ error == :default ? description : "#{description} but #{error}"
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -1,6 +1,6 @@
1
1
  module Shoulda
2
2
  module Matchers
3
3
  # @private
4
- VERSION = '4.2.0'.freeze
4
+ VERSION = '4.3.0'.freeze
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoulda-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tammer Saleh
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2020-01-08 00:00:00.000000000 Z
17
+ date: 2020-02-17 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activesupport
@@ -116,6 +116,7 @@ files:
116
116
  - lib/shoulda/matchers/active_record/have_db_column_matcher.rb
117
117
  - lib/shoulda/matchers/active_record/have_db_index_matcher.rb
118
118
  - lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb
119
+ - lib/shoulda/matchers/active_record/have_rich_text_matcher.rb
119
120
  - lib/shoulda/matchers/active_record/have_secure_token_matcher.rb
120
121
  - lib/shoulda/matchers/active_record/serialize_matcher.rb
121
122
  - lib/shoulda/matchers/active_record/uniqueness.rb