Sha256: 2fcae19f5934f89fe75d7d50ae8ccb971a9d4de9662c849d2a2c91af3978112e

Contents?: true

Size: 1.82 KB

Versions: 14

Compression:

Stored size: 1.82 KB

Contents

# encoding: utf-8
require "spec_helper"

describe CouchRest::Model::Configuration do

  before do
    @class = Class.new(CouchRest::Model::Base)
  end

  describe '.configure' do
    it "should set a configuration parameter" do
      @class.add_config :foo_bar
      @class.configure do |config|
        config.foo_bar = 'monkey'
      end
      @class.foo_bar.should == 'monkey'
    end
  end

  describe '.add_config' do
    
    it "should add a class level accessor" do
      @class.add_config :foo_bar
      @class.foo_bar = 'foo'
      @class.foo_bar.should == 'foo'
    end
    
    ['foo', :foo, 45, ['foo', :bar]].each do |val|
      it "should be inheritable for a #{val.class}" do
        @class.add_config :foo_bar
        @child_class = Class.new(@class)

        @class.foo_bar = val
        @class.foo_bar.should == val
        @child_class.foo_bar.should == val

        @child_class.foo_bar = "bar"
        @child_class.foo_bar.should == "bar"

        @class.foo_bar.should == val
      end
    end
    
    
    it "should add an instance level accessor" do
      @class.add_config :foo_bar
      @class.foo_bar = 'foo'
      @class.new.foo_bar.should == 'foo'
    end
    
    it "should add a convenient in-class setter" do
      @class.add_config :foo_bar
      @class.foo_bar "monkey"
      @class.foo_bar.should == "monkey"
    end
  end

  describe "General examples" do

    before(:all) do
      @default_model_key = 'model-type'
    end


    it "should be possible to override on class using configure method" do
      default_model_key = Cat.model_type_key
      Cat.instance_eval do
        model_type_key 'cat-type'
      end
      CouchRest::Model::Base.model_type_key.should eql(default_model_key)
      Cat.model_type_key.should eql('cat-type')
      cat = Cat.new
      cat.model_type_key.should eql('cat-type')
    end
  end

end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
couchrest_model-2.1.0.rc1 spec/unit/configuration_spec.rb
couchrest_model-2.1.0.beta2 spec/unit/configuration_spec.rb
couchrest_model-2.1.0.beta1 spec/unit/configuration_spec.rb
couchrest_model-2.0.4 spec/unit/configuration_spec.rb
couchrest_model-2.0.3 spec/unit/configuration_spec.rb
couchrest_model-2.0.1 spec/unit/configuration_spec.rb
couchrest_model-2.0.0 spec/unit/configuration_spec.rb
couchrest_model-2.0.0.beta2 spec/unit/configuration_spec.rb
couchrest_model-2.0.0.beta spec/unit/configuration_spec.rb
couchrest_model-1.2.0.beta spec/unit/configuration_spec.rb
openlogic-couchrest_model-1.0.0 spec/unit/configuration_spec.rb
couchrest_model-1.1.2 spec/unit/configuration_spec.rb
couchrest_model-1.1.1 spec/unit/configuration_spec.rb
couchrest_model-1.1.0 spec/unit/configuration_spec.rb