Sha256: d2923e16a1275113eb329d9c6a762556039c63f54b299093d7e9d42396e33a35

Contents?: true

Size: 933 Bytes

Versions: 1

Compression:

Stored size: 933 Bytes

Contents

# encoding: utf-8

require 'spec_helper'

describe AbstractType::AbstractMethodDeclarations, '#abstract_method' do
  subject { object.abstract_method(:some_method) }

  let(:object)   { Class.new { include AbstractType } }
  let(:subclass) { Class.new(object)                  }

  before do
    Subclass = subclass
  end

  after do
    Object.class_eval { remove_const(:Subclass) }
  end

  it { should equal(object) }

  it 'creates an abstract method' do
    expect { subject }.to change { subclass.method_defined?(:some_method) }
      .from(false)
      .to(true)
  end

  it 'creates an abstract method with the expected arity' do
    subject
    expect(object.instance_method(:some_method).arity).to be(-1)
  end

  it 'creates a method that raises an exception' do
    subject
    expect { subclass.new.some_method }.to raise_error(
      NotImplementedError,
      'Subclass#some_method is not implemented'
    )
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
abstract_type-0.0.7 spec/unit/abstract_type/abstract_method_declarations/abstract_method_spec.rb