Sha256: 074ed568eb3725434be01fd11e58ae0a513e7ef31e5e0819b4cc8f227147575d

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

describe "Observable#remove_observer" do
  
  it "should be possible to remove a single observer for a key" do
    a = KVOTestSimple.new
    b = KVOTestSimple.new
    
    a_saw_observer = false
    
    first_observer = a.observe(:first_name) do |info|
      a_saw_observer = true
    end
    
    second_a_saw_observer = false
    
    a.observe(:first_name) do |info|
      second_a_saw_observer = true
    end
    
    a.remove_observer first_observer, :first_name
    a.set_attribute :first_name, "something"
    a.first_name.should == "setting_something"
    
    a_saw_observer.should == false
    second_a_saw_observer.should == true
    
  end
  
  
  it "should not post any notifications to any observer when all removed" do
    c = KVOTestSimple.new
    
    d_saw = e_saw = f_saw = false
    
    d = c.observe :first_name do |info|
      d_saw = true
    end
    
    e = c.observe :first_name do |info|
      e_saw = true
    end
    
    f = c.observe :first_name do |info|
      f_saw = true
    end
    
    c.remove_observer d, :first_name
    c.remove_observer e, :first_name
    c.remove_observer f, :first_name
    
    c.set_attribute :first_name, "something"
    c.first_name.should == "setting_something"
    
    d_saw.should == false
    e_saw.should == false
    f_saw.should == false

  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
opal-0.1.0 opals/foundation/spec/system/observable/remove_observer_spec.rb