Sha256: 4aad8d1c04cbba44a20a8d23d741c41a578c00612b61acc58530b4958084486e

Contents?: true

Size: 1.65 KB

Versions: 5

Compression:

Stored size: 1.65 KB

Contents

require 'spec_helper'

describe Critique do
  class ExampleClass
    include Critique
  end

  before do
    Critique.disable!
    # Critique.logger = '/dev/null'
  end

  it "is defined" do
    Critique.should be_a(Module)
  end

  context "when included" do
    it "defines .critique on the base class" do
      ExampleClass.should respond_to(:critique)
    end

    it "defines #critique on the base class" do
      ExampleClass.new.should respond_to(:critique)
    end
  end

  describe ".enabled?" do
    context "in the default state" do
      it "returns false" do
        Critique.should_not be_enabled
      end
    end

    context "when enabled" do
      before do
        Critique.enable!
      end

      it "returns true" do
        Critique.should be_enabled
      end
    end
  end

  describe ".critique" do
    let(:code) { 1 + 2 }

    context "when disabled" do
      it "does not execute profiling" do
        dont_allow(Critique::Profiling).profile
        ExampleClass.critique { code }
      end

      it "executes the code block" do
        result = ExampleClass.critique { code }
        result.should == 3
      end
    end

    context "when enabled" do
      before do
        Critique.enable!
      end

      it "executes profiling" do
        mock(Critique::Profiling).profile(ExampleClass, 2)
        ExampleClass.critique { code }
      end

      it "executes the code block" do
        ExampleClass.critique { code }.should == 3
      end
    end

    context "in the default (disabled) state" do
      it "does not run profiling" do
        dont_allow(Critique::Profiling).profile
        ExampleClass.critique { code }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
critique-0.2.0 spec/critique_spec.rb
critique-0.1.3 spec/critique_spec.rb
critique-0.1.2 spec/critique_spec.rb
critique-0.1.1 spec/critique_spec.rb
critique-0.1 spec/critique_spec.rb