rspice 0.7.1 → 0.7.2
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 +4 -4
 - data/README.md +2 -0
 - data/lib/rspice.rb +1 -0
 - data/lib/rspice/custom_matchers.rb +1 -0
 - data/lib/rspice/custom_matchers/inherit_from.rb +1 -1
 - data/lib/rspice/custom_matchers/not_change.rb +16 -0
 - data/lib/rspice/custom_matchers/validate.rb +53 -0
 - data/lib/rspice/errors.rb +5 -0
 - data/lib/rspice/version.rb +1 -1
 - metadata +6 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 433e59a89a64cfe80aab86e0f409e38bed62dab5a8158015f293dd6019fdeb9e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: '0197210d9d2f37246668daff52fa510c7ec3490541babb91cfe1f7a59a449c2a'
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 9d8fb6f73405cf0796150e6a96d0d336795d7aafd28b105b710ff39dc180d5adc0e2790d94b84256a9bbc5cde04577d019bcf66551d111acdb13a2b003adabf5
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 1054cd43b84d8f5d3fe0ce2640694eb956a0ca67b82acf2428823842558495b9ebd3228740e12416d49f1497f25066653c301903844860e0aa9336cc5ffc2d68
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -47,6 +47,8 @@ require 'rspice' 
     | 
|
| 
       47 
47 
     | 
    
         
             
            * [have_error_on_attribute](lib/rspice/custom_matchers/have_error_on_attribute.rb) tests usages of [ActiveModel::Errors](https://api.rubyonrails.org/classes/ActiveModel/Errors.html)
         
     | 
| 
       48 
48 
     | 
    
         
             
            * [include_module](lib/rspice/custom_matchers/include_module.rb) tests usages of [Module#include](https://apidock.com/ruby/Module/include)
         
     | 
| 
       49 
49 
     | 
    
         
             
            * [inherit_from](lib/rspice/custom_matchers/inherit_from.rb) tests inheritance of [Classes](https://apidock.com/ruby/Class)
         
     | 
| 
      
 50 
     | 
    
         
            +
            * [not_change](lib/rspice/custom_matchers/not_change.rb) negated `change` matcher
         
     | 
| 
      
 51 
     | 
    
         
            +
            * [validate](lib/rspice/custom_matchers/validate.rb) tests application and configuration of custom validators
         
     | 
| 
       50 
52 
     | 
    
         | 
| 
       51 
53 
     | 
    
         
             
            ## Shared Context
         
     | 
| 
       52 
54 
     | 
    
         | 
    
        data/lib/rspice.rb
    CHANGED
    
    
| 
         @@ -1,3 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            # RSpec matcher that tests that an object does not change.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Because of how RSpec's `change` matcher works, this is required
         
     | 
| 
      
 5 
     | 
    
         
            +
            # to chain multiple negated change matchers.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     def noop
         
     | 
| 
      
 8 
     | 
    
         
            +
            #       # I don't do anything!
         
     | 
| 
      
 9 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            #     describe "#noop" do
         
     | 
| 
      
 12 
     | 
    
         
            +
            #       it "doesn't change anything in the database" do
         
     | 
| 
      
 13 
     | 
    
         
            +
            #         expect { noop }.
         
     | 
| 
      
 14 
     | 
    
         
            +
            #           not_to change { User.count }.
         
     | 
| 
      
 15 
     | 
    
         
            +
            #           and not_change { Article.count }
         
     | 
| 
      
 16 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 17 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       3 
19 
     | 
    
         
             
            RSpec::Matchers.define_negated_matcher(:not_change, :change)
         
     | 
| 
         @@ -0,0 +1,53 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # RSpec matcher that tests application of a custom validator to a spefific attribute
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            #   describe User do
         
     | 
| 
      
 6 
     | 
    
         
            +
            #     # With no options:
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     it { is_expected.to validate(:an_attribute).with(CustomValidator) }
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            #     # With options:
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     it { is_expected.to validate(:an_attribute).with(CustomValidator).with_options(aliased_as: :a_property) }
         
     | 
| 
      
 11 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            RSpec::Matchers.define :validate do |attribute|
         
     | 
| 
      
 14 
     | 
    
         
            +
              match do |subject|
         
     | 
| 
      
 15 
     | 
    
         
            +
                raise Rspice::IncompleteMatcherError, "validator class not provided" unless @expected_validator.present?
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                @validator = subject.class.validators.find do |validator|
         
     | 
| 
      
 18 
     | 
    
         
            +
                  next unless validator.respond_to?(:attributes)
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  validator.attributes.include?(attribute.to_sym) && validator.class == @expected_validator
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                @validator.present? && options_matching?
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              def options_matching?
         
     | 
| 
      
 27 
     | 
    
         
            +
                if @options.present?
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @options.keys.all? { |option| @validator.options[option] == @options[option] }
         
     | 
| 
      
 29 
     | 
    
         
            +
                else
         
     | 
| 
      
 30 
     | 
    
         
            +
                  true
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              chain :with do |validator|
         
     | 
| 
      
 35 
     | 
    
         
            +
                @expected_validator = validator
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              chain :with_options do |options|
         
     | 
| 
      
 39 
     | 
    
         
            +
                @options = options
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              description do
         
     | 
| 
      
 43 
     | 
    
         
            +
                "validate with #{@validator.class}#{" with options #{@options}" if @options.present?}"
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              failure_message do
         
     | 
| 
      
 47 
     | 
    
         
            +
                "expected to validate #{attribute} with #{@expected_validator}#{" with options #{@options}" if @options.present?}"
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              failure_message_when_negated do
         
     | 
| 
      
 51 
     | 
    
         
            +
                "not expected to validate #{attribute} with #{@expected_validator}#{" with options #{@options}" if @options.present?}"
         
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rspice/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rspice
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.7. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.7.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Eric Garside
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-05-01 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rspec
         
     | 
| 
         @@ -56,6 +56,8 @@ files: 
     | 
|
| 
       56 
56 
     | 
    
         
             
            - lib/rspice/custom_matchers/include_module.rb
         
     | 
| 
       57 
57 
     | 
    
         
             
            - lib/rspice/custom_matchers/inherit_from.rb
         
     | 
| 
       58 
58 
     | 
    
         
             
            - lib/rspice/custom_matchers/not_change.rb
         
     | 
| 
      
 59 
     | 
    
         
            +
            - lib/rspice/custom_matchers/validate.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib/rspice/errors.rb
         
     | 
| 
       59 
61 
     | 
    
         
             
            - lib/rspice/rspec_configuration.rb
         
     | 
| 
       60 
62 
     | 
    
         
             
            - lib/rspice/shared_context.rb
         
     | 
| 
       61 
63 
     | 
    
         
             
            - lib/rspice/shared_context/with_an_example_descendant_class.rb
         
     | 
| 
         @@ -88,7 +90,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       88 
90 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       89 
91 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       90 
92 
     | 
    
         
             
            requirements: []
         
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 94 
     | 
    
         
            +
            rubygems_version: 2.7.6
         
     | 
| 
       92 
95 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       93 
96 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       94 
97 
     | 
    
         
             
            summary: An `RSpec` utility gem of custom matchers, shared contexts and examples
         
     |