Sha256: 2c2871a843963b7f228f06be27671b34bb6a0676e3b3bcae55e425a906bbeccf

Contents?: true

Size: 1.89 KB

Versions: 9

Compression:

Stored size: 1.89 KB

Contents

require 'spec_helper'

require 'praxis/extensions/field_selection'

describe Praxis::Extensions::FieldExpansion do

  # include the ActionDefinitionExtension module directly, as that's where the
  # bulk of lies, and by including this instead of the base FieldExpansion module
  # we avoid the side-effect of injecting the ActionDefinitionExtension into
  # the base Praxis::ActionDefinition.
  let(:test_class) do
    Class.new do
      include Praxis::Extensions::FieldExpansion::ActionDefinitionExtension

      def initialize(params)
        @params = params
      end

      attr_accessor :params
    end
  end

  let(:test_instance) { test_class.new(test_params) }

  let(:request_params) do
    double('params',
      fields: Praxis::Extensions::FieldSelection::FieldSelector.for(Person).load(fields)
    )
  end

  let(:request) { double('Praxis::Request', params: request_params) }
  let(:media_type) { Person }

  let(:fields) { nil }

  let(:test_attributes) {  }
  let(:test_params) { double('test_params', attributes: test_attributes) }

  subject(:expansion) { test_instance.expanded_fields(request, media_type)}

  context '#expanded_fields' do

    context 'with fields and view params defined' do
      let(:test_attributes) { {} }

      context 'with no fields provided' do
        it 'returns the fields for the default view' do
          expect(expansion).to eq({id: true, name: true})
        end
      end

      context 'with a set of fields provided' do
        let(:fields) { 'id,name,owner{name}' }
        it 'returns the subset of fields' do
          expected = {id: true, name: true }
          expect(expansion).to eq expected
        end
      end
    end

    context 'with an action with no params' do
      let(:test_params) { nil }
      it 'ignores incoming parameters and expands for the default fieldset' do
        expect(expansion).to eq({id: true, name: true})
      end
    end
  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
praxis-2.0.pre.18 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.17 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.16 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.15 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.14 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.13 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.12 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.11 spec/praxis/extensions/field_expansion_spec.rb
praxis-2.0.pre.10 spec/praxis/extensions/field_expansion_spec.rb