Sha256: 8b6203bc72fc8a484110c149325daf3066b9e317ea31c5bc68f2991d222910d1

Contents?: true

Size: 1.12 KB

Versions: 3

Compression:

Stored size: 1.12 KB

Contents

# encoding: utf-8

module Selector

  describe Selector::Not do

    let(:inversion) { described_class.new condition }
    let(:condition) do
      result = double freeze: true
      allow(result).to receive(:[]) { |value| value == :foo }
      result
    end

    describe ".new" do

      subject { inversion }

      it { is_expected.to be_kind_of Condition }
      it { is_expected.to be_frozen }

      context "ANYTHING" do

        let(:condition) { ANYTHING }
        it { is_expected.to eql NOTHING }

      end # context

      context "NOTHING" do

        let(:condition) { NOTHING }
        it { is_expected.to eql ANYTHING }

      end # context

      context "other" do

        it { is_expected.to be_kind_of described_class }

      end # context

    end # describe .new

    describe "#[]" do

      it "inverts the condition" do
        expect(inversion[:foo]).to eql(false)
        expect(inversion[:bar]).to eql(true)
      end

    end # describe #[]

    describe "#!" do

      subject { !inversion }
      it { is_expected.to equal condition }

    end # describe #!

  end # describe Selector::Not

end # module Selector

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
selector-0.0.3 spec/unit/selector/not_spec.rb
selector-0.0.2 spec/unit/selector/not_spec.rb
selector-0.0.1 spec/unit/selector/not_spec.rb