97 lines
2.6 KiB
Ruby
97 lines
2.6 KiB
Ruby
shared_examples 'champ_spec' do
|
|
describe 'database columns' do
|
|
it { is_expected.to have_db_column(:value) }
|
|
end
|
|
|
|
describe 'associations' do
|
|
it { is_expected.to belong_to(:dossier) }
|
|
it { is_expected.to belong_to(:type_de_champ) }
|
|
end
|
|
|
|
describe 'delegation' do
|
|
it { is_expected.to delegate_method(:libelle).to(:type_de_champ) }
|
|
it { is_expected.to delegate_method(:type_champ).to(:type_de_champ) }
|
|
it { is_expected.to delegate_method(:order_place).to(:type_de_champ) }
|
|
end
|
|
|
|
describe 'mandatory_and_blank?' do
|
|
let(:type_de_champ) { TypeDeChamp.new(mandatory: mandatory) }
|
|
let(:champ) { Champ.new(type_de_champ: type_de_champ, value: value) }
|
|
let(:value) { '' }
|
|
let(:mandatory) { true }
|
|
|
|
context 'when mandatory and blank' do
|
|
it { expect(champ.mandatory_and_blank?).to be(true) }
|
|
end
|
|
|
|
context 'when not blank' do
|
|
let(:value) { 'yop' }
|
|
it { expect(champ.mandatory_and_blank?).to be(false) }
|
|
end
|
|
|
|
context 'when not mandatory' do
|
|
let(:mandatory) { false }
|
|
it { expect(champ.mandatory_and_blank?).to be(false) }
|
|
end
|
|
|
|
context 'when not mandatory or blank' do
|
|
let(:value) { 'u' }
|
|
let(:mandatory) { false }
|
|
it { expect(champ.mandatory_and_blank?).to be(false) }
|
|
end
|
|
end
|
|
|
|
describe 'data_provide' do
|
|
let(:champ) { create :champ }
|
|
|
|
subject { champ.data_provide }
|
|
|
|
context 'when type_champ is datetime' do
|
|
before do
|
|
champ.type_de_champ = create :type_de_champ_public, type_champ: 'datetime'
|
|
end
|
|
|
|
it { is_expected.to eq 'datepicker' }
|
|
end
|
|
|
|
context 'when type_champ is address' do
|
|
before do
|
|
champ.type_de_champ = create :type_de_champ_public, type_champ: 'address'
|
|
end
|
|
|
|
it { is_expected.to eq 'typeahead' }
|
|
end
|
|
end
|
|
|
|
describe '.departement', vcr: {cassette_name: 'call_geo_api_departements'} do
|
|
subject { Champ.departements }
|
|
|
|
it { expect(subject).to include '99 - Étranger' }
|
|
end
|
|
|
|
context "when type_champ=date" do
|
|
let(:type_de_champ) { create(:type_de_champ_public, type_champ: "date")}
|
|
let(:champ) { create(:champ, type_de_champ: type_de_champ) }
|
|
|
|
it "should convert %d/%m/%Y format to ISO" do
|
|
champ.value = "31/12/2017"
|
|
champ.save
|
|
champ.reload
|
|
expect(champ.value).to eq("2017-12-31")
|
|
end
|
|
|
|
it "should convert to nil if date parse failed" do
|
|
champ.value = "bla"
|
|
champ.save
|
|
champ.reload
|
|
expect(champ.value).to be(nil)
|
|
end
|
|
|
|
it "should convert empty string to nil" do
|
|
champ.value = ""
|
|
champ.save
|
|
champ.reload
|
|
expect(champ.value).to be(nil)
|
|
end
|
|
end
|
|
end
|