Sha256: a0d93d40d30d4926f6558377be6d54e3e65b3b7f2db34fe828628eae73b955c6

Contents?: true

Size: 1.57 KB

Versions: 18

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe Praxis::MediaType do
  let(:owner_resource) { instance_double(Person, id: 100, name: /[:name:]/.gen, href: '/') }
  let(:manager_resource) { instance_double(Person, id: 101, name: /[:name:]/.gen, href: '/') }
  let(:custodian_resource) { instance_double(Person, id: 102, name: /[:name:]/.gen, href: '/') }
  let(:residents_summary_resource) do
    instance_double(Person::CollectionSummary, href: '/people', size: 2)
  end

  let(:resource) do
    double('address',
           id: 1,
           name: 'Home',
           owner: owner_resource,
           manager: manager_resource,
           custodian: custodian_resource,
           residents_summary: residents_summary_resource,
           fields: { id: true, name: true })
  end

  subject(:address) { Address.new(resource) }

  context 'attributes' do
    its(:id)    { should eq(1) }
    its(:name)  { should eq('Home') }
    its(:owner) { should be_instance_of(Person) }
  end

  context 'accessor methods' do
    subject(:address_klass) { address.class }

    context '#identifier' do
      it 'should be a kind of Praxis::MediaTypeIdentifier' do
        expect(subject.identifier).to be_kind_of(Praxis::MediaTypeIdentifier)
      end
    end

    its(:description) { should be_kind_of(String) }
  end

  context 'rendering' do
    subject(:output) { address.render }

    its([:id])    { should eq(address.id) }
    its([:name])  { should eq(address.name) }
    its([:owner]) { should eq(Person.dump(owner_resource)) }
    its([:fields]) { should eq(address.fields.dump) }
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
praxis-2.0.pre.36 spec/praxis/media_type_spec.rb
praxis-2.0.pre.35 spec/praxis/media_type_spec.rb
praxis-2.0.pre.34 spec/praxis/media_type_spec.rb
praxis-2.0.pre.33 spec/praxis/media_type_spec.rb
praxis-2.0.pre.32 spec/praxis/media_type_spec.rb
praxis-2.0.pre.31 spec/praxis/media_type_spec.rb
praxis-2.0.pre.30 spec/praxis/media_type_spec.rb
praxis-2.0.pre.29 spec/praxis/media_type_spec.rb
praxis-2.0.pre.28 spec/praxis/media_type_spec.rb
praxis-2.0.pre.27 spec/praxis/media_type_spec.rb
praxis-2.0.pre.26 spec/praxis/media_type_spec.rb
praxis-2.0.pre.25 spec/praxis/media_type_spec.rb
praxis-2.0.pre.24 spec/praxis/media_type_spec.rb
praxis-2.0.pre.23 spec/praxis/media_type_spec.rb
praxis-2.0.pre.22 spec/praxis/media_type_spec.rb
praxis-2.0.pre.21 spec/praxis/media_type_spec.rb
praxis-2.0.pre.20 spec/praxis/media_type_spec.rb
praxis-2.0.pre.19 spec/praxis/media_type_spec.rb