Sha256: a5967b2506d5efebdbe8448381fdb0960ac42b91a177c2f20613d3e7979a22c4

Contents?: true

Size: 1.42 KB

Versions: 17

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

RSpec.describe Mutant::Matcher::Namespace, '#call' do
  let(:object)      { described_class.new(parse_expression('TestApp*')) }
  let(:env)         { instance_double(Mutant::Env)                      }
  let(:raw_scope_a) { instance_double(Class, name: 'TestApp::Literal')  }
  let(:raw_scope_b) { instance_double(Class, name: 'TestApp::Foo')      }
  let(:raw_scope_c) { instance_double(Class, name: 'TestAppOther')      }
  let(:subject_a)   { instance_double(Mutant::Subject)                  }
  let(:subject_b)   { instance_double(Mutant::Subject)                  }

  before do
    [
      [Mutant::Matcher::Methods::Singleton, raw_scope_b, [subject_b]],
      [Mutant::Matcher::Methods::Instance,  raw_scope_b, []],
      [Mutant::Matcher::Methods::Singleton, raw_scope_a, [subject_a]],
      [Mutant::Matcher::Methods::Instance,  raw_scope_a, []]
    ].each do |klass, scope, subjects|
      matcher = instance_double(Mutant::Matcher)
      expect(matcher).to receive(:call).with(env).and_return(subjects)

      expect(klass).to receive(:new)
        .with(scope)
        .and_return(matcher)
    end

    allow(env).to receive(:matchable_scopes).and_return(
      [raw_scope_a, raw_scope_b, raw_scope_c].map do |raw_scope|
        Mutant::Scope.new(raw_scope, parse_expression(raw_scope.name))
      end
    )
  end

  it 'returns subjects' do
    expect(object.call(env)).to eql([subject_a, subject_b])
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
mutant-0.9.8 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.7 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.6 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.5 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.4 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.3 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.2 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.1 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.9.0 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.24 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.23 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.22 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.21 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.20 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.19 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.18 spec/unit/mutant/matcher/namespace_spec.rb
mutant-0.8.17 spec/unit/mutant/matcher/namespace_spec.rb