diff options
Diffstat (limited to 'spec/models/custom_field_spec.rb')
| -rw-r--r-- | spec/models/custom_field_spec.rb | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/spec/models/custom_field_spec.rb b/spec/models/custom_field_spec.rb index 51128b0a2..b92bcfbdb 100644 --- a/spec/models/custom_field_spec.rb +++ b/spec/models/custom_field_spec.rb @@ -16,7 +16,6 @@ RSpec.describe CustomField, type: :model do end end - context "custom fields for a resource" do let!( :fields ){ [create(:custom_field), create(:custom_field, code: :energy)] } let!( :instance_fields ){ @@ -26,10 +25,49 @@ RSpec.describe CustomField, type: :model do } } it { expect(Chouette::VehicleJourney.custom_fields).to eq(fields) } - it { expect(vj.custom_fields).to eq(instance_fields) } + it { + instance_fields.each do |code, cf| + cf.each do |k, v| + expect(vj.custom_fields[code].send(k)).to eq(v) + end + end + } end context "custom field_values for a resource" do it { expect(vj.custom_field_value("energy")).to eq(99) } end + + context "with an 'integer' field_type" do + let!(:field){ [create(:custom_field, code: :energy, options: {field_type: 'integer'})] } + let!( :vj ){ create :vehicle_journey, custom_field_values: {energy: "99"} } + it "should cast the value" do + expect(vj.custom_fields[:energy].value).to eq 99 + end + + it "should validate the value" do + { + "99" => true, + "azerty" => false, + "91a" => false, + "a91" => false + }.each do |val, valid| + vj = build :vehicle_journey, custom_field_values: {energy: val} + if valid + expect(vj.validate).to be_truthy + else + expect(vj.validate).to be_falsy + expect(vj.errors.messages[:"custom_fields.energy"]).to be_present + end + end + end + end + + context "with a 'string' field_type" do + let!(:field){ [create(:custom_field, code: :energy, options: {field_type: 'string'})] } + let!( :vj ){ create :vehicle_journey, custom_field_values: {energy: 99} } + it "should cast the value" do + expect(vj.custom_fields[:energy].value).to eq '99' + end + end end |
