Sha256: 7d05d7ec8f0379c90fe1e6afaa79ed56b24d335844145ba3898fb893800c87c8

Contents?: true

Size: 1.56 KB

Versions: 4

Compression:

Stored size: 1.56 KB

Contents

# encoding: utf-8

describe QueryBuilder::CQL::Operators do

  before do
    described_class.singleton_class.send(:define_method, :x) { |v, x| x * v }
    described_class.singleton_class.send(:define_method, :y) { |v| v }
    described_class.singleton_class.send :private, :y
  end

  let(:klass)    { Class.new { include QueryBuilder::CQL::Operators } }
  let(:instance) { klass.new }

  describe "#respond_to?" do
    subject { instance.respond_to? name }

    context "existing transproc" do
      let(:name) { :x }
      it { is_expected.to eql(true) }
    end

    context "private method" do
      let(:name) { :y }
      it { is_expected.to eql(false) }
    end

    context "non-existing transproc" do
      let(:name) { :z }
      it { is_expected.to eql(false) }
    end
  end # describe #respond_to?

  describe "#method_missing" do
    subject { instance.public_send(*args) }

    context "existing transproc" do
      let(:args) { [:x, 2] }

      it "returns a transproc" do
        expect(subject[3]).to eql described_class[*args][3]
      end
    end

    context "private method" do
      let(:args) { [:y] }

      it "fails" do
        expect { subject }.to raise_error(StandardError)
      end
    end

    context "non-existing transproc" do
      let(:args) { [:z] }

      it "fails" do
        expect { subject }.to raise_error(StandardError)
      end
    end
  end # describe #respond_to?

  after do
    described_class.singleton_class.send(:remove_method, :x)
    described_class.singleton_class.send(:remove_method, :y)
  end

end # describe QueryBuilder::Core::Operators

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
query_builder-0.0.4 spec/unit/cql/operators_spec.rb
query_builder-0.0.3 spec/unit/cql/operators_spec.rb
query_builder-0.0.2 spec/unit/cql/operators_spec.rb
query_builder-0.0.1 spec/unit/cql/operators_spec.rb