jsonapi-resources-matchers 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:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9cf29e748e8ceb2c88f705e41606add289595519
         | 
| 4 | 
            +
              data.tar.gz: 8786354af24bb3c3e6b013f11f16014a39930b66
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e941507f83a4c9537bd3c7a69716efa3b1faafd242c926c61ba93a0236109c022a4334701fd4e7e01995838ae1f127d256c57a250acc41a6f19dda9df0e91e43
         | 
| 7 | 
            +
              data.tar.gz: 1c5d9824e4024b1dd101aab935a19c4a918db045a76e40582e0c5e7fb4a6a33654a4ce2cf69636336aefc7a906605ca4b332177f6f125acf854455423683c162
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
| @@ -1,8 +1,7 @@ | |
| 1 1 | 
             
            require "jsonapi/resources/matchers/version"
         | 
| 2 2 | 
             
            require "jsonapi/resources/matchers/have_attribute"
         | 
| 3 3 | 
             
            require "jsonapi/resources/matchers/filter"
         | 
| 4 | 
            -
            require "jsonapi/resources/matchers/ | 
| 5 | 
            -
            require "jsonapi/resources/matchers/have_one"
         | 
| 4 | 
            +
            require "jsonapi/resources/matchers/relationship"
         | 
| 6 5 | 
             
            require "jsonapi/resources/matchers/have_model_name"
         | 
| 7 6 | 
             
            require "jsonapi/resources/matchers/have_primary_key"
         | 
| 8 7 |  | 
| @@ -19,11 +18,11 @@ module JSONAPI | |
| 19 18 | 
             
                  end
         | 
| 20 19 |  | 
| 21 20 | 
             
                  def have_many(name)
         | 
| 22 | 
            -
                     | 
| 21 | 
            +
                    Relationship.new(:have_many, name)
         | 
| 23 22 | 
             
                  end
         | 
| 24 23 |  | 
| 25 24 | 
             
                  def have_one(name)
         | 
| 26 | 
            -
                     | 
| 25 | 
            +
                    Relationship.new(:have_one, name)
         | 
| 27 26 | 
             
                  end
         | 
| 28 27 |  | 
| 29 28 | 
             
                  def have_model_name(name)
         | 
| @@ -1,22 +1,33 @@ | |
| 1 1 | 
             
            module JSONAPI
         | 
| 2 2 | 
             
              module Resources
         | 
| 3 3 | 
             
                module Matchers
         | 
| 4 | 
            -
                  class  | 
| 4 | 
            +
                  class Relationship
         | 
| 5 5 |  | 
| 6 | 
            -
                    attr_accessor | 
| 6 | 
            +
                    attr_accessor(:name,
         | 
| 7 | 
            +
                                  :relationship_type,
         | 
| 8 | 
            +
                                  :resource,
         | 
| 9 | 
            +
                                  :expected_class_name,
         | 
| 10 | 
            +
                                  :expected_relation_name)
         | 
| 7 11 |  | 
| 8 | 
            -
                    def initialize(name)
         | 
| 12 | 
            +
                    def initialize(relationship_type, name)
         | 
| 13 | 
            +
                      self.relationship_type = relationship_type
         | 
| 9 14 | 
             
                      self.name = name
         | 
| 10 15 | 
             
                    end
         | 
| 11 16 |  | 
| 12 17 | 
             
                    def description
         | 
| 13 | 
            -
                      " | 
| 18 | 
            +
                      "#{humanized_relationship_type} `#{name}`"
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    def humanized_relationship_type
         | 
| 22 | 
            +
                      relationship_type.to_s.gsub('_',' ')
         | 
| 14 23 | 
             
                    end
         | 
| 15 24 |  | 
| 16 25 | 
             
                    def matches?(resource)
         | 
| 17 26 | 
             
                      self.resource = resource
         | 
| 18 27 |  | 
| 19 | 
            -
                      has_key_in_relationships? && | 
| 28 | 
            +
                      has_key_in_relationships? &&
         | 
| 29 | 
            +
                        matches_class_name? &&
         | 
| 30 | 
            +
                        matches_relation_name?
         | 
| 20 31 | 
             
                    end
         | 
| 21 32 |  | 
| 22 33 | 
             
                    def has_key_in_relationships?
         | 
| @@ -33,12 +44,20 @@ module JSONAPI | |
| 33 44 | 
             
                      self
         | 
| 34 45 | 
             
                    end
         | 
| 35 46 |  | 
| 47 | 
            +
                    def with_relation_name(name)
         | 
| 48 | 
            +
                      self.expected_relation_name = name
         | 
| 49 | 
            +
                      self
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
             | 
| 36 52 | 
             
                    def failure_message
         | 
| 37 53 | 
             
                      resource_name = resource.class.name.demodulize
         | 
| 38 | 
            -
                      message = ["expected `#{resource_name}` to  | 
| 54 | 
            +
                      message = ["expected `#{resource_name}` to #{humanized_relationship_type} `#{name}`"]
         | 
| 39 55 | 
             
                      if self.expected_class_name
         | 
| 40 56 | 
             
                        message << "with class name `#{self.expected_class_name}`"
         | 
| 41 57 | 
             
                      end
         | 
| 58 | 
            +
                      if self.expected_relation_name
         | 
| 59 | 
            +
                        message << "with relation name `#{self.expected_relation_name}`"
         | 
| 60 | 
            +
                      end
         | 
| 42 61 | 
             
                      message.join(" ")
         | 
| 43 62 | 
             
                    end
         | 
| 44 63 |  | 
| @@ -49,6 +68,13 @@ module JSONAPI | |
| 49 68 | 
             
                      self.expected_class_name == actual_class_name
         | 
| 50 69 | 
             
                    end
         | 
| 51 70 |  | 
| 71 | 
            +
                    def matches_relation_name?
         | 
| 72 | 
            +
                      return true if self.expected_relation_name.nil?
         | 
| 73 | 
            +
                      association = resource.class._relationships[name]
         | 
| 74 | 
            +
                      actual_relation_name = association.relation_name
         | 
| 75 | 
            +
                      self.expected_relation_name == actual_relation_name
         | 
| 76 | 
            +
                    end
         | 
| 77 | 
            +
             | 
| 52 78 | 
             
                  end
         | 
| 53 79 | 
             
                end
         | 
| 54 80 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jsonapi-resources-matchers
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - G5
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: exe
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2015-07- | 
| 12 | 
            +
            date: 2015-07-22 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: jsonapi-resources
         | 
| @@ -106,11 +106,10 @@ files: | |
| 106 106 | 
             
            - lib/jsonapi/resources/matchers.rb
         | 
| 107 107 | 
             
            - lib/jsonapi/resources/matchers/filter.rb
         | 
| 108 108 | 
             
            - lib/jsonapi/resources/matchers/have_attribute.rb
         | 
| 109 | 
            -
            - lib/jsonapi/resources/matchers/have_many.rb
         | 
| 110 109 | 
             
            - lib/jsonapi/resources/matchers/have_model_name.rb
         | 
| 111 | 
            -
            - lib/jsonapi/resources/matchers/have_one.rb
         | 
| 112 110 | 
             
            - lib/jsonapi/resources/matchers/have_primary_key.rb
         | 
| 113 111 | 
             
            - lib/jsonapi/resources/matchers/integrations/rspec.rb
         | 
| 112 | 
            +
            - lib/jsonapi/resources/matchers/relationship.rb
         | 
| 114 113 | 
             
            - lib/jsonapi/resources/matchers/version.rb
         | 
| 115 114 | 
             
            homepage: https://github.com/G5/jsonapi-resources-matchers
         | 
| 116 115 | 
             
            licenses:
         | 
| @@ -1,55 +0,0 @@ | |
| 1 | 
            -
            module JSONAPI
         | 
| 2 | 
            -
              module Resources
         | 
| 3 | 
            -
                module Matchers
         | 
| 4 | 
            -
                  class HaveOne
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                    attr_accessor :name, :resource, :expected_class_name
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                    def initialize(name)
         | 
| 9 | 
            -
                      self.name = name
         | 
| 10 | 
            -
                    end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                    def description
         | 
| 13 | 
            -
                      "have one `#{name}`"
         | 
| 14 | 
            -
                    end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                    def matches?(resource)
         | 
| 17 | 
            -
                      self.resource = resource
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                      has_key_in_relationships? && matches_class_name?
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    def has_key_in_relationships?
         | 
| 23 | 
            -
                      serialized_hash = JSONAPI::ResourceSerializer.new(resource.class).
         | 
| 24 | 
            -
                        serialize_to_hash(resource).with_indifferent_access
         | 
| 25 | 
            -
                      expected_key = name.to_s.dasherize
         | 
| 26 | 
            -
                      relationships = serialized_hash["data"]["relationships"]
         | 
| 27 | 
            -
                      return false if relationships.nil?
         | 
| 28 | 
            -
                      relationships.has_key?(expected_key)
         | 
| 29 | 
            -
                    end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                    def with_class_name(name)
         | 
| 32 | 
            -
                      self.expected_class_name = name
         | 
| 33 | 
            -
                      self
         | 
| 34 | 
            -
                    end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                    def failure_message
         | 
| 37 | 
            -
                      resource_name = resource.class.name.demodulize
         | 
| 38 | 
            -
                      message = ["expected `#{resource_name}` to have one `#{name}`"]
         | 
| 39 | 
            -
                      if self.expected_class_name
         | 
| 40 | 
            -
                        message << "with class name `#{self.expected_class_name}`"
         | 
| 41 | 
            -
                      end
         | 
| 42 | 
            -
                      message.join(" ")
         | 
| 43 | 
            -
                    end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                    def matches_class_name?
         | 
| 46 | 
            -
                      return true if self.expected_class_name.nil?
         | 
| 47 | 
            -
                      association = resource.class._relationships[name]
         | 
| 48 | 
            -
                      actual_class_name = association.class_name
         | 
| 49 | 
            -
                      self.expected_class_name == actual_class_name
         | 
| 50 | 
            -
                    end
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                  end
         | 
| 53 | 
            -
                end
         | 
| 54 | 
            -
              end
         | 
| 55 | 
            -
            end
         |