Sha256: 02f87a1a6f01c0b516d7917a70d5c12543c705e04f1c947676492510c25a305f

Contents?: true

Size: 1.53 KB

Versions: 19

Compression:

Stored size: 1.53 KB

Contents

require File.dirname(__FILE__) + '/../../spec_helper'

describe "IvarProxy setup", :shared => true do
  before do
    @object = Object.new
    @proxy = Spec::Rails::Example::IvarProxy.new(@object)
  end  
end

describe "IvarProxy" do
  it_should_behave_like "IvarProxy setup"
  
  it "has [] accessor" do
    @proxy['foo'] = 'bar'
    @object.instance_variable_get(:@foo).should == 'bar'
    @proxy['foo'].should == 'bar'
  end

  it "iterates through each element like a Hash" do
    values = {
      'foo' => 1,
      'bar' => 2,
      'baz' => 3
    }
    @proxy['foo'] = values['foo']
    @proxy['bar'] = values['bar']
    @proxy['baz'] = values['baz']

    @proxy.each do |key, value|
      key.should == key
      value.should == values[key]
    end
  end

  it "detects the presence of a key" do
    @proxy['foo'] = 'bar'
    @proxy.has_key?('foo').should == true
    @proxy.has_key?('bar').should == false
  end
end

describe "IvarProxy", "#delete" do
  it_should_behave_like "IvarProxy setup"
  
  it "deletes the element with key" do
    @proxy['foo'] = 'bar'
    @proxy.delete('foo').should == 'bar'
    @proxy['foo'].should be_nil
  end

  it "deletes nil instance variables" do
    @proxy['foo'] = nil
    @object.instance_variables.should include("@foo")
    @proxy.delete('foo').should == nil
    @proxy['foo'].should be_nil
    @object.instance_variables.should_not include("@foo")
  end

  it "returns nil when key does not exist" do
    @proxy['foo'].should be_nil
    @proxy.delete('foo').should == nil
    @proxy['foo'].should be_nil
  end
end

Version data entries

19 entries across 19 versions & 3 rubygems

Version Path
picolena-0.0.99 app_generators/picolena/templates/vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
picolena-0.1.0 rails_plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
picolena-0.1.1 rails_plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
picolena-0.1.3 rails_plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
picolena-0.1.2 rails_plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
picolena-0.1.4 rails_plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
picolena-0.1.5 rails_plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
spree-0.0.8 starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
spree-0.0.9 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
spree-0.2.0 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.0.2 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.0.1 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.0.3.98.1 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.0.3.98 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.0 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.1.2 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.1.1 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.1.3 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
typo-5.1 vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb