Sha256: fafcd8adc65fbfde7aa442bfaab96a84c1a02762120190eb8d8bf5de029667c7

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require 'spec_helper'
require 'tailor/composite_observable'

# Class to use for tests.
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

1 entries across 1 versions & 1 rubygems

Version Path
tailor-1.4.1 spec/unit/tailor/composite_observable_spec.rb