Sha256: 59db905d44b055baf27ca0c90646e11cea9ed219becb55338dc07e001672e12a

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

require 'spec_helper'

describe Traxis::Controller do
  subject do
    ::PeopleController
  end

  let(:rack_input) { StringIO.new('something=given') }
  let(:env) do
    env = Rack::MockRequest.env_for('/people')
    env['rack.input'] = rack_input
    env['CONTENT_TYPE'] = 'application/json'
    env['HTTP_VERSION'] = 'HTTP/1.1'
    env
  end

  let(:context) do
    {
      params: [Attributor::AttributeResolver::ROOT_PREFIX, "params".freeze],
      headers: [Attributor::AttributeResolver::ROOT_PREFIX, "headers".freeze],
      payload: [Attributor::AttributeResolver::Data, "payload".freeze]
    }.freeze
  end

  let(:payload_hash) {
    {}
  }

  let(:request) do
    request = Praxis::Request.new(env)
    request.action = subject.actions[:create]
    request
  end

  describe "#create" do
    let!(:payload_attributes) {
      ::Attributor::Struct.new({
        'name' => "Jason"
      })
    }

    let(:rack_input) {
      StringIO.new(payload_attributes.to_json)
    }

    before do
      request.load_headers(context[:headers])
      request.load_params(context[:params])
      request.load_payload(context[:payload])
    end

    it "should create new resource" do
      expect(::Person).to receive(:create).with(payload_attributes)
      subject.new(request).create
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
traxis-0.0.2 spec/traxis/controller_actions_spec.rb
traxis-0.0.1 spec/traxis/controller_actions_spec.rb