Sha256: 544163f336005006e4a13fef3fe33b39c12d1a40b54b265745eceb03c4981915

Contents?: true

Size: 1.09 KB

Versions: 4

Compression:

Stored size: 1.09 KB

Contents

require 'json'

module SmartRspec
  module Support
    module Controller
      module Response
        def json(response)
          @json ||= JSON.parse(response.body)
          self
        end

        def error
          @error ||= @json['errors'].first
        end

        def collection
          @collection ||= [@json['data']].flatten
        end

        def meta_record_count
          @json['meta']['record_count']
        end

        def relationship_data
          @relationship_data ||= collection.flat_map do |record|
            record['relationships'].flat_map do |_, relation|
              [relation['data']].flatten.map { |data| data.slice('type', 'id') }
            end.compact
          end
        end

        def included_data
          return [] if @json['included'].nil?
          @included_data ||= @json['included'].flat_map do |record|
            record.slice('type', 'id')
          end
        end

        def check_keys_in(member, keys)
          collection.all? do |record|
            record[member].keys.sort == keys.sort
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
smart_rspec-0.2.0 lib/smart_rspec/support/controller/response.rb
smart_rspec-0.1.6 lib/smart_rspec/support/controller/response.rb
smart_rspec-0.1.5 lib/smart_rspec/support/controller/response.rb
smart_rspec-0.1.4 lib/smart_rspec/support/controller/response.rb