Sha256: 5b157ef1d93702214dad59ea9e74f0824c7835833b95df79b62d8e205b0f9286

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

require File.expand_path(File.dirname(__FILE__) + "/../../../test_helper")

class MockPrivateRole < ::Inch::Evaluation::Role::Base
  applicable_if :private?
end

class MockNotPrivateRole < ::Inch::Evaluation::Role::Base
  applicable_unless :private?
end

class MockPublicRole < ::Inch::Evaluation::Role::Base
  applicable_if { |o| o.public? }
end

class MockIndifferentRole < ::Inch::Evaluation::Role::Base
  def self.applicable?(object)
    true
  end
end

class MockPrivateObject
  def private?
    true
  end

  def public?
    false
  end
end

class MockPublicObject
  def private?
    false
  end

  def public?
    true
  end
end

describe ::Inch::Evaluation::Role::Base do
  describe ".applicable" do
    let(:private_object) { MockPrivateObject.new }
    let(:public_object) { MockPublicObject.new }

    describe ".applicable_if" do
      it "should work with a symbol" do
        assert MockPrivateRole.applicable?(private_object)
        assert !MockPrivateRole.applicable?(public_object)
      end

      it "should work with a block" do
        assert MockPublicRole.applicable?(public_object)
        assert MockNotPrivateRole.applicable?(public_object)
        assert !MockPublicRole.applicable?(private_object)
      end
    end

    describe ".applicable_unless" do
      it "should work with a block" do
        assert MockNotPrivateRole.applicable?(public_object)
        assert !MockNotPrivateRole.applicable?(private_object)
      end
    end

    it "should work by implementing a class method" do
      assert MockIndifferentRole.applicable?(private_object)
      assert MockIndifferentRole.applicable?(public_object)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
inch-0.4.7 test/unit/evaluation/role/base_test.rb