diff options
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 9 | ||||
| -rw-r--r-- | spec/models/custom_field_spec.rb | 11 |
2 files changed, 17 insertions, 3 deletions
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index a8c9c1824..32f3cb731 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -256,8 +256,15 @@ module Chouette end end + def self.custom_fields + CustomField.where(resource_type: self.name.split("::").last) + end + + def custom_fields - CustomField.where(resource_type: self.class.name.split("::").last) + Hash[*self.class.custom_fields.map do |v| + [v.code, v.slice(:code, :name, :field_type, :options).update(value: custom_field_value(v.code))] + end.flatten] end def custom_field_value key diff --git a/spec/models/custom_field_spec.rb b/spec/models/custom_field_spec.rb index 80873683c..6ebf994db 100644 --- a/spec/models/custom_field_spec.rb +++ b/spec/models/custom_field_spec.rb @@ -17,8 +17,15 @@ RSpec.describe CustomField, type: :model do context "custom fields for a resource" do - let!( :fields ){ (1..2).map{ create :custom_field } } - it { expect(vj.custom_fields).to eq(fields) } + let!( :fields ){ [create(:custom_field), create(:custom_field, code: :energy)] } + let!( :instance_fields ){ + { + fields[0].code => fields[0].slice(:code, :name, :field_type, :options).update(value: nil), + "energy" => fields[1].slice(:code, :name, :field_type, :options).update(value: 99) + } + } + it { expect(Chouette::VehicleJourney.custom_fields).to eq(fields) } + it { expect(vj.custom_fields).to eq(instance_fields) } end context "custom field_values for a resource" do |
