Sha256: 9587198466373ac29accb291608a6bcc92fe3cc2e388909007ff74a848cf4833

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

require 'graphiti_spec_helpers'

::RSpec.shared_context 'resource testing', type: :resource do |parameter|
  let(:resource)     { described_class }
  let(:params)       { {} }

  # If you need to set context:
  #
  # Graphiti.with_context my_context, {} do
  #   render
  # end
  def render(runtime_options = {})
    json = proxy.to_jsonapi(runtime_options)
    response.body = json
    json
  end

  def proxy
    @proxy ||= begin
      ctx = ::GraphitiSpecHelpers::TestRunner.new(resource, params)
      defined?(base_scope) ? ctx.proxy(base_scope) : ctx.proxy
    end
  end

  def records
    proxy.data
  end

  def response
    @response ||= OpenStruct.new
  end
end

module GraphitiSpecHelpers
  module RSpec
    def self.included(klass)
      klass.send(:include, GraphitiSpecHelpers)

      ::RSpec.configure do |rspec|
        rspec.include_context "resource testing", type: :resource
      end
    end

    def self.schema!(resources = nil)
      ::RSpec.describe 'Graphiti Schema' do
        it 'generates a backwards-compatible schema' do
          message = <<-MSG
Found backwards-incompatibilities in schema! Run with FORCE_SCHEMA=true to ignore.

Incompatibilities:

          MSG

          errors = Graphiti::Schema.generate!(resources)
          errors.each do |e|
            message << "#{e}\n"
          end

          expect(errors.empty?).to eq(true), message
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
graphiti_spec_helpers-1.0.alpha.6 lib/graphiti_spec_helpers/rspec.rb
graphiti_spec_helpers-1.0.alpha.3 lib/graphiti_spec_helpers/rspec.rb
graphiti_spec_helpers-1.0.alpha.2 lib/graphiti_spec_helpers/rspec.rb