Sha256: 77c62de14920c92d01c4be6b8eacb9af1eccdfa0e24629ec5df35ec4eb889ea0

Contents?: true

Size: 1.85 KB

Versions: 2

Compression:

Stored size: 1.85 KB

Contents

require 'bundler/setup'
require_relative 'test_helper'
require 'rod/rest/proxy_factory'

module Rod
  module Rest
    describe ProxyFactory do
      let(:factory)           { ProxyFactory.new(metadata,client,proxy_class: proxy_class) }
      let(:metadata)          { [car_metadata,person_metadata] }
      let(:car_metadata)      { stub!.name { car_type }.subject }
      let(:person_metadata)   { stub!.name { person_type }.subject }
      let(:client)            { Object.new }
      let(:car_type)          { "Car" }
      let(:person_type)       { "Person" }
      let(:unknown_type)      { "Unknown" }
      let(:proxy_class)       { klass = stub!.new(car_metadata,client) { car_proxy_factory }.subject
                                stub(klass).new(person_metadata,client) { person_proxy_factory }
                                klass
      }
      let(:car_proxy_factory)     { stub!.new(mercedes_300_hash) { mercedes_300 }.subject }
      let(:person_proxy_factory)  { stub!.new(schumaher_hash) { schumaher }.subject }
      let(:mercedes_300_hash)     { { rod_id: mercedes_300_id, type: car_type } }
      let(:schumaher_hash)        { { rod_id: schumaher_id, type: person_type } }
      let(:unknown_hash)          { { rod_id: unknown_id, type: unknown_type } }
      let(:mercedes_300_id)       { 1 }
      let(:schumaher_id)          { 2 }
      let(:unknown_id)            { 3 }
      let(:mercedes_300)          { Object.new }
      let(:schumaher)             { Object.new }

      it "builds new car from hash" do
        factory.build(mercedes_300_hash).should == mercedes_300
      end

      it "builds new person proxy from hash" do
        factory.build(schumaher_hash).should == schumaher
      end

      it "raises UnknownResource for unknown resource type" do
        lambda { factory.build(unknown_hash) }.should raise_error(UnknownResource)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rod-rest-0.0.1.1 test/spec/proxy_factory.rb
rod-rest-0.0.1 test/spec/proxy_factory.rb