Sha256: 163940e8179b46bac19cd6e922a39a85de7fceefd20742bfc88fb93fa7b9a1ab

Contents?: true

Size: 1.23 KB

Versions: 12

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

RSpec.describe Mutant::Subject::Method::Singleton do
  let(:object) do
    described_class.new(
      context:  context,
      node:     node,
      warnings: warnings
    )
  end

  let(:node)     { s(:defs, s(:self), :foo, s(:args)) }
  let(:warnings) { instance_double(Mutant::Warnings)  }

  let(:context) do
    Mutant::Context.new(scope, instance_double(Pathname))
  end

  let(:scope) do
    Class.new do
      def self.foo; end

      def self.name
        'Test'
      end
    end
  end

  describe '#expression' do
    subject { object.expression }

    it { should eql(parse_expression('Test.foo')) }

    it_should_behave_like 'an idempotent method'
  end

  describe '#match_expression' do
    subject { object.match_expressions }

    it { should eql(%w[Test.foo Test*].map(&method(:parse_expression))) }

    it_should_behave_like 'an idempotent method'
  end

  describe '#prepare' do

    subject { object.prepare }

    it 'undefines method on scope' do
      expect { subject }.to change { scope.methods.include?(:foo) }.from(true).to(false)
    end

    it_should_behave_like 'a command method'
  end

  describe '#source' do
    subject { object.source }

    it { should eql("def self.foo\nend") }
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
mutant-0.9.11 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.10 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.9 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.8 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.7 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.6 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.5 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.4 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.3 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.2 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.1 spec/unit/mutant/subject/method/singleton_spec.rb
mutant-0.9.0 spec/unit/mutant/subject/method/singleton_spec.rb