Sha256: 667c06728bbf1e352e08ea3c422888f090b56328411a82d1f1c19ceffb8b4d5e

Contents?: true

Size: 1.23 KB

Versions: 8

Compression:

Stored size: 1.23 KB

Contents

require 'xing/mappers/base'

describe Xing::Mappers::Base do
  it "should exist" do
    expect(Xing::Mappers::Base).to be_a(Module)
  end

  context "subclasses" do
    let :record do
      double("some record").tap do |obj|
        allow(obj).to receive(:save).and_return(true)
      end
    end
    let :json do
      { 'links'=> {},
        'data'=> { some: "value"}
      }
    end

    before do
      stub_const("Xing::Services::ErrorConverter", double('error converter')).tap do |stub|
        allow(stub).to receive_message_chain(:new, :convert).and_return({})
      end
    end

    it "should error if it doesn't have an update_record method and a record_class" do
      class MyMapper < Xing::Mappers::Base
      end

      mapper = MyMapper.new(json)
      mapper.record = record

      expect do
        mapper.save
      end.to raise_error
    end

    it "shouldn't error if it does have an update_record and a record_class method" do
      class MyBetterMapper < Xing::Mappers::Base
        def update_record
        end
        def record_class
          Object
        end
      end

      mapper = MyBetterMapper.new(json)
      mapper.record = record

      expect do
        mapper.save
      end.not_to raise_error
    end
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
xing-backend-0.0.18 spec/xing/mappers/base_spec.rb
xing-backend-0.0.17 spec/xing/mappers/base_spec.rb
xing-backend-0.0.16 spec/xing/mappers/base_spec.rb
xing-backend-0.0.15 spec/xing/mappers/base_spec.rb
xing-backend-0.0.14 spec/xing/mappers/base_spec.rb
xing-backend-0.0.13 spec/xing/mappers/base_spec.rb
xing-backend-0.0.12 spec/xing/mappers/base_spec.rb
xing-backend-0.0.11 spec/xing/mappers/base_spec.rb