demarches-normaliennes/spec/support/shared_examples_for_boolean_champs.rb
Sébastien Carceles fa6fc077b4
normalize boolean values (#8320)
* extract parent for yes no and checkbox champs

* checkbox stores true / false instead of on / off

* normalize blank value to nil

* normalize invalid value to false

* after party task: normalize checkbox values

* after party task: normalize yes_no values
2023-01-05 11:18:27 +00:00

59 lines
1.3 KiB
Ruby

RSpec.shared_examples "a boolean champ" do
describe 'before validation' do
subject { boolean_champ.valid? }
context "when the value is blank" do
let(:value) { "" }
it "normalizes the value to nil" do
expect { subject }.to change { boolean_champ.value }.from(value).to(nil)
end
end
context "when the value is something else" do
let(:value) { "something else" }
it "normalizes the value to 'false'" do
expect { subject }.to change { boolean_champ.value }.from(value).to(Champs::BooleanChamp::FALSE_VALUE)
end
end
end
describe '#true?' do
subject { boolean_champ.true? }
context "when the checkbox value is 'true'" do
let(:value) { 'true' }
it { is_expected.to eq(true) }
end
context "when the checkbox value is 'false'" do
let(:value) { 'false' }
it { is_expected.to eq(false) }
end
end
describe '#to_s' do
subject { boolean_champ.to_s }
context 'when the value is false' do
let(:value) { 'false' }
it { is_expected.to eq('Non') }
end
context 'when the value is true' do
let(:value) { 'true' }
it { is_expected.to eq('Oui') }
end
context 'when the value is nil' do
let(:value) { nil }
it { is_expected.to eq("Non") }
end
end
end