151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require "spec_helper"
 | 
						|
 | 
						|
RSpec.describe Gitlab::Redis::Boolean do
 | 
						|
  subject(:redis_boolean) { described_class.new(bool) }
 | 
						|
 | 
						|
  let(:bool) { true }
 | 
						|
  let(:label_section) { "#{described_class::LABEL}#{described_class::DELIMITER}" }
 | 
						|
 | 
						|
  describe "#to_s" do
 | 
						|
    subject { redis_boolean.to_s }
 | 
						|
 | 
						|
    context "true" do
 | 
						|
      let(:bool) { true }
 | 
						|
 | 
						|
      it { is_expected.to eq("#{label_section}#{described_class::TRUE_STR}") }
 | 
						|
    end
 | 
						|
 | 
						|
    context "false" do
 | 
						|
      let(:bool) { false }
 | 
						|
 | 
						|
      it { is_expected.to eq("#{label_section}#{described_class::FALSE_STR}") }
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe ".encode" do
 | 
						|
    subject { redis_boolean.class.encode(bool) }
 | 
						|
 | 
						|
    context "true" do
 | 
						|
      let(:bool) { true }
 | 
						|
 | 
						|
      it { is_expected.to eq("#{label_section}#{described_class::TRUE_STR}") }
 | 
						|
    end
 | 
						|
 | 
						|
    context "false" do
 | 
						|
      let(:bool) { false }
 | 
						|
 | 
						|
      it { is_expected.to eq("#{label_section}#{described_class::FALSE_STR}") }
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe ".decode" do
 | 
						|
    subject { redis_boolean.class.decode(str) }
 | 
						|
 | 
						|
    context "valid encoded bool" do
 | 
						|
      let(:str) { "#{label_section}#{bool_str}" }
 | 
						|
 | 
						|
      context "true" do
 | 
						|
        let(:bool_str) { described_class::TRUE_STR }
 | 
						|
 | 
						|
        it { is_expected.to be(true) }
 | 
						|
      end
 | 
						|
 | 
						|
      context "false" do
 | 
						|
        let(:bool_str) { described_class::FALSE_STR }
 | 
						|
 | 
						|
        it { is_expected.to be(false) }
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context "partially invalid bool" do
 | 
						|
      let(:str) { "#{label_section}whoops" }
 | 
						|
 | 
						|
      it "raises an error" do
 | 
						|
        expect { subject }.to raise_error(described_class::NotAnEncodedBooleanStringError)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context "invalid encoded bool" do
 | 
						|
      let(:str) { "whoops" }
 | 
						|
 | 
						|
      it "raises an error" do
 | 
						|
        expect { subject }.to raise_error(described_class::NotAnEncodedBooleanStringError)
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe ".true?" do
 | 
						|
    subject { redis_boolean.class.true?(str) }
 | 
						|
 | 
						|
    context "valid encoded bool" do
 | 
						|
      let(:str) { "#{label_section}#{bool_str}" }
 | 
						|
 | 
						|
      context "true" do
 | 
						|
        let(:bool_str) { described_class::TRUE_STR }
 | 
						|
 | 
						|
        it { is_expected.to be(true) }
 | 
						|
      end
 | 
						|
 | 
						|
      context "false" do
 | 
						|
        let(:bool_str) { described_class::FALSE_STR }
 | 
						|
 | 
						|
        it { is_expected.to be(false) }
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context "partially invalid bool" do
 | 
						|
      let(:str) { "#{label_section}whoops" }
 | 
						|
 | 
						|
      it "raises an error" do
 | 
						|
        expect { subject }.to raise_error(described_class::NotAnEncodedBooleanStringError)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context "invalid encoded bool" do
 | 
						|
      let(:str) { "whoops" }
 | 
						|
 | 
						|
      it "raises an error" do
 | 
						|
        expect { subject }.to raise_error(described_class::NotAnEncodedBooleanStringError)
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe ".false?" do
 | 
						|
    subject { redis_boolean.class.false?(str) }
 | 
						|
 | 
						|
    context "valid encoded bool" do
 | 
						|
      let(:str) { "#{label_section}#{bool_str}" }
 | 
						|
 | 
						|
      context "true" do
 | 
						|
        let(:bool_str) { described_class::TRUE_STR }
 | 
						|
 | 
						|
        it { is_expected.to be(false) }
 | 
						|
      end
 | 
						|
 | 
						|
      context "false" do
 | 
						|
        let(:bool_str) { described_class::FALSE_STR }
 | 
						|
 | 
						|
        it { is_expected.to be(true) }
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context "partially invalid bool" do
 | 
						|
      let(:str) { "#{label_section}whoops" }
 | 
						|
 | 
						|
      it "raises an error" do
 | 
						|
        expect { subject }.to raise_error(described_class::NotAnEncodedBooleanStringError)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context "invalid encoded bool" do
 | 
						|
      let(:str) { "whoops" }
 | 
						|
 | 
						|
      it "raises an error" do
 | 
						|
        expect { subject }.to raise_error(described_class::NotAnEncodedBooleanStringError)
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |