Sha256: bdb973ff7d4e5a57219801374c665adf1989c4bf64abba19056d2b63f43706b6

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require "spec_helper"
require "schizo/facade"

module Schizo
  module Facade

    describe ClassBuilder do

      let(:base) do
        Class.new do
          def self.name; "Foo"; end
        end
      end

      let(:role) do
        Module.new do
          extend Role
          extended do
            @test_var = 1
          end
        end
      end

      let(:builder) do
        ClassBuilder.new(base, role)
      end

      it "works with namespaced roles" do
        role.module_eval do
          def self.name
            "Namespaced::Role"
          end
        end
        builder.product.to_s.should == "Schizo::Facades::Foo::Namespaced::Role"
      end

      context "#initialize" do

        it "sets base and role" do
          builder.base.should == base
          builder.role.should == role
        end

      end

      context "#product" do

        it "returns a facade class" do
          builder.product.tap do |facade|
            facade.should be_a(Class)
            facade.ancestors.should include(base)
            facade.ancestors.should include(Base)
          end
        end

      end

    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
schizo-0.1.3 spec/facade/class_builder_spec.rb
schizo-0.1.2 spec/facade/class_builder_spec.rb