Sha256: d22e1051744029f6a0232863cffdfde17b1faaf15898e1a3fa3f0ce4b7fcd418

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

require 'spec_helper'

describe Module::Mixins::Including do
  context 'a class including a module' do
    before do
      @m = Module.new do
        extend Module::Mixins::Including
      end
      @k = Class.new
      @k.send :include, @m
      Object.const_set "Class_#{SecureRandom.uuid.delete('-')}", @k
    end
    it 'classes_including' do
      expect(@m.classes_including).to eq [@k]
      expect(@m.classes_including.first.new).to be_a_kind_of @k
    end
    context 'inherited' do
      before do
        @child = Class.new(@k)
        Object.const_set "Class_#{SecureRandom.uuid.delete('-')}", @child
      end
      it 'classes_including includes children' do
        expect(@m.classes_including).to eq [@k, @child]
        @child.send :include, @m
      end
    end
  end
  context 'Enumerable' do
    before do
      Enumerable.extend Module::Mixins::Including
    end
    it 'classes_including' do
      expect(Enumerable.classes_including).to include Array
    end
  end
  context 'module classes_including' do
    it 'Enumerator' do
      expect(Module::Mixins::Including.classes_including(Comparable)).to include String
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
module-mixins-0.1.0 spec/module/mixins/including_spec.rb