Sha256: 765194ca1b67def21d501080d0a4f8dd28a05acf8afb66d99517256541689848

Contents?: true

Size: 1.66 KB

Versions: 30

Compression:

Stored size: 1.66 KB

Contents

RSpec.describe Metasploit::Model::Search::With do
  let(:base_class) do
    described_class = self.described_class

    Class.new do
      include described_class
    end
  end

  context 'search_with' do
    subject(:search_with_operator) do
      base_class.search_with operator_class, options
    end

    let(:options) do
      {
          a: 1,
          b: 2
      }
    end

    let(:operator) do
      double(
          'Operator',
          :name => 'op',
          :valid! => nil
      )
    end

    let(:operator_class) do
      double(
          'Operator Class',
          :new => operator
      )
    end

    it 'should pass given options to operator_class.new' do
      expect(operator_class).to receive(:new).with(
          hash_including(options)
      ).and_return(operator)

      search_with_operator
    end

    it 'should merge :klass into options passed to operator.new' do
      expect(operator_class).to receive(:new).with(
          hash_including(
              :klass => base_class
          )
      )

      search_with_operator
    end

    it 'should validate operator' do
      allow(operator_class).to receive(:new).and_return(operator)

      expect(operator).to receive(:valid!)

      search_with_operator
    end

    it 'should add operator to search_with_operator_by_name' do
      search_with_operator

      expect(base_class.search_with_operator_by_name[operator.name]).to eq(operator)
    end
  end

  context 'search_with_operator_by_name' do
    subject(:search_with_operator_by_name) do
      base_class.search_with_operator_by_name
    end

    it 'should default to empty Hash' do
      expect(search_with_operator_by_name).to eq({})
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
metasploit-model-5.0.2 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-5.0.1 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-5.0.0 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-4.0.6 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-4.0.5 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-4.0.4 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-4.0.3 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-4.0.2 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-4.0.1 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-4.0.0 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-3.1.4 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-3.1.3 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-3.1.2 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-3.1.1 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-3.1.0 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-3.0.0 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-2.0.4 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-2.0.3 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-2.0.2 spec/lib/metasploit/model/search/with_spec.rb
metasploit-model-2.0.1 spec/lib/metasploit/model/search/with_spec.rb