Sha256: 0c172537be4664a62db6775c23d3726b61751ddea1fc3031c6e4ebd40c0cbfcf

Contents?: true

Size: 951 Bytes

Versions: 7

Compression:

Stored size: 951 Bytes

Contents

require 'spec_helper'

describe ROM::ClassBuilder do
  subject(:builder) { ROM::ClassBuilder.new(options) }

  let(:klass) { builder.call }

  describe '#call' do
    let(:options) do
      { name: 'Test', parent: parent }
    end

    let(:parent) { Class.new }

    it 'returns a class constant' do
      expect(klass).to be_instance_of(Class)
    end

    it 'sets class name based on provided :name option' do
      expect(klass.name).to eql(options[:name])
    end

    it 'uses a parent class provided by :parent option' do
      expect(klass).to be < parent
    end

    it 'defines to_s and inspect' do
      expect(klass.to_s).to eql(options[:name])
      expect(klass.inspect).to eql(options[:name])
    end

    it 'yields created class' do
      klass = builder.call do |yielded_class|
        yielded_class.class_eval do
          def self.testing; end
        end
      end

      expect(klass).to respond_to(:testing)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rom-0.6.2 spec/unit/rom/support/class_builder_spec.rb
rom-0.6.1 spec/unit/rom/support/class_builder_spec.rb
rom-0.6.0 spec/unit/rom/support/class_builder_spec.rb
rom-0.6.0.rc1 spec/unit/rom/support/class_builder_spec.rb
rom-0.6.0.beta3 spec/unit/rom/support/class_builder_spec.rb
rom-0.6.0.beta2 spec/unit/rom/support/class_builder_spec.rb
rom-0.6.0.beta1 spec/unit/rom/support/class_builder_spec.rb