Sha256: 7f3135784e1e0abbb1a796fa7e9668025a95b77eb25581f34c2399cc8daec165

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

RSpec.describe Fear::Some do
  include Fear::Option::Mixin

  it_behaves_like Fear::RightBiased::Right do
    let(:right) { described_class.new('value') }
  end

  subject(:some) { Some(42) }

  describe '#select' do
    subject { some.select(&predicate) }

    context 'predicate evaluates to true' do
      let(:predicate) { ->(v) { v > 40 } }
      it { is_expected.to eq(some) }
    end

    context 'predicate evaluates to false' do
      let(:predicate) { ->(v) { v < 40 } }
      it { is_expected.to eq(None()) }
    end
  end

  describe '#reject' do
    subject { some.reject(&predicate) }

    context 'predicate evaluates to true' do
      let(:predicate) { ->(v) { v > 40 } }
      it { is_expected.to eq(None()) }
    end

    context 'predicate evaluates to false' do
      let(:predicate) { ->(v) { v < 40 } }
      it { is_expected.to eq(some) }
    end
  end

  describe '#get' do
    subject { some.get }
    it { is_expected.to eq(42) }
  end

  describe '#or_nil' do
    subject { some.or_nil }
    it { is_expected.to eq(42) }
  end

  describe '#empty?' do
    subject { some.empty? }
    it { is_expected.to eq(false) }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fear-0.2.0 spec/fear/some_spec.rb