Sha256: 347fc315d75451f3b380f6b682fa1f5969ec7c5a10c31e8f469d9f4770fdf9e4

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

require 'spec_helper'
require 'tailor/composite_observable'


class Tester
  include Tailor::CompositeObservable
end

describe Tailor::CompositeObservable do
  subject { Tester.new }

  describe '.define_observer' do
    context "observer = 'pants'" do
      before { Tailor::CompositeObservable.define_observer 'pants' }

      context 'observer responds to #pants_update' do
        it "defines an instance method 'add_pants_observer' that takes 1 arg" do
          observer = double 'Observer', respond_to?: true
          subject.add_pants_observer(observer)
        end
      end

      context 'observer does not respond to #pants_update' do
        it "defines an instance method 'add_pants_observer' that takes 1 arg" do
          observer = double 'Observer', respond_to?: false
          expect { subject.add_pants_observer(observer) }.
            to raise_error NoMethodError
        end
      end

      it 'defines an instance method #notify_pants_observers' do
        expect { subject.notify_pants_observers }.
          to_not raise_error
      end

      it 'defines an instance method #pants_changed' do
        expect { subject.pants_changed }.to_not raise_error
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tailor-1.4.0 spec/unit/tailor/composite_observable_spec.rb
tailor-1.3.1 spec/unit/tailor/composite_observable_spec.rb
tailor-1.3.0 spec/unit/tailor/composite_observable_spec.rb