151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'fast_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
 |