Sha256: 94e984fbf27fb23ebb931265ba2ec055be3e4f46edf46a32170f2b2602f8f85f

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

require 'helper'

RSpec.describe Flipper::Gates::Group do
  let(:feature_name) { :search }

  subject {
    described_class.new
  }

  def context(set)
    Flipper::FeatureCheckContext.new(
      feature_name: feature_name,
      values: Flipper::GateValues.new({groups: set}),
      thing: Flipper::Types::Actor.new(Struct.new(:flipper_id).new("5")),
    )
  end

  describe "#open?" do
    context "with a group in adapter, but not registered" do
      before do
        Flipper.register(:staff) { |thing| true }
      end

      it "ignores group" do
        thing = Struct.new(:flipper_id).new('5')
        expect(subject.open?(context(Set[:newbs, :staff]))).to be(true)
      end
    end

    context "thing that does not respond to method in group block" do
      before do
        Flipper.register(:stinkers) { |thing| thing.stinker? }
      end

      it "raises error" do
        expect {
          subject.open?(context(Set[:stinkers]))
        }.to raise_error(NoMethodError)
      end
    end
  end

  describe "#wrap" do
    it "returns group instance for symbol" do
      group = Flipper.register(:admins) {}
      expect(subject.wrap(:admins)).to eq(group)
    end

    it "returns group instance for group instance" do
      group = Flipper.register(:admins) {}
      expect(subject.wrap(group)).to eq(group)
    end
  end

  describe "#protects?" do
    it "returns true for group" do
      group = Flipper.register(:admins) {}
      expect(subject.protects?(group)).to be(true)
    end

    it "returns true for symbol" do
      expect(subject.protects?(:admins)).to be(true)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
flipper-0.10.2 spec/flipper/gates/group_spec.rb
flipper-0.10.1 spec/flipper/gates/group_spec.rb
flipper-0.10.0 spec/flipper/gates/group_spec.rb