Sha256: a1d6783db4ee25790c915f8577cce2dc30c5b684f28e40881f9df24dbcec13a9

Contents?: true

Size: 1.22 KB

Versions: 6

Compression:

Stored size: 1.22 KB

Contents

module InfinumJsonApiSetup
  module RSpec
    module Matchers
      # @param [Array<Integer>] required_ids
      # @return [InfinumJsonApiSetup::Rspec::Matchers::IncludeAllResourceIds]
      def include_all_resource_ids(required_ids)
        IncludeAllResourceIds.new(required_ids)
      end

      class IncludeAllResourceIds < JsonBodyMatcher
        # @param [Array<Integer>] required_ids
        def initialize(required_ids)
          super(Matchers::Util::BodyParser.new('data'))

          @required_ids = process_required_ids(required_ids)
        end

        private

        attr_reader :actual_ids
        attr_reader :required_ids

        def body_matches?
          actual_ids == required_ids
        end

        def match_failure_message
          "Expected response ID's(#{actual_ids}) to match #{required_ids}"
        end

        def process_parsing_result(data)
          @actual_ids = process_actual_ids(
            data.map { |item| process_actual_id(item['id']) }
          )
        end

        def process_required_ids(ids)
          ids.sort
        end

        def process_actual_id(value)
          value.to_i
        end

        def process_actual_ids(ids)
          ids.sort
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
infinum_json_api_setup-0.0.8 lib/infinum_json_api_setup/rspec/matchers/include_all_resource_ids.rb
infinum_json_api_setup-0.0.7 lib/infinum_json_api_setup/rspec/matchers/include_all_resource_ids.rb
infinum_json_api_setup-0.0.6 lib/infinum_json_api_setup/rspec/matchers/include_all_resource_ids.rb
infinum_json_api_setup-0.0.5 lib/infinum_json_api_setup/rspec/matchers/include_all_resource_ids.rb
infinum_json_api_setup-0.0.4 lib/infinum_json_api_setup/rspec/matchers/include_all_resource_ids.rb
infinum_json_api_setup-0.0.3 lib/infinum_json_api_setup/rspec/matchers/include_all_resource_ids.rb