diff options
| -rw-r--r-- | lib/way_cost.rb | 8 | ||||
| -rw-r--r-- | spec/lib/way_cost_spec.rb | 22 |
2 files changed, 30 insertions, 0 deletions
diff --git a/lib/way_cost.rb b/lib/way_cost.rb index 9f860308c..53e69ddb3 100644 --- a/lib/way_cost.rb +++ b/lib/way_cost.rb @@ -24,4 +24,12 @@ class WayCost @time == other.time && @id == other.id end + + def cache_key + raise NullIDError if !id + + "way_cost/#{id}" + end + + class NullIDError < RuntimeError; end end diff --git a/spec/lib/way_cost_spec.rb b/spec/lib/way_cost_spec.rb new file mode 100644 index 000000000..1e85c68ab --- /dev/null +++ b/spec/lib/way_cost_spec.rb @@ -0,0 +1,22 @@ +RSpec.describe WayCost do + describe "#cache_key" do + it "returns a cache string including the ID of the WayCost" do + way_cost = WayCost.new( + departure: Geokit::LatLng.new(47.91231, 1.87606), + arrival: Geokit::LatLng.new(52.50867, 13.42879), + id: '2-3' + ) + + expect(way_cost.cache_key).to eq('way_cost/2-3') + end + + it "raises an error if the WayCost doesn't have an ID" do + way_cost = WayCost.new( + departure: Geokit::LatLng.new(47.91231, 1.87606), + arrival: Geokit::LatLng.new(52.50867, 13.42879) + ) + + expect { way_cost.cache_key }.to raise_error(WayCost::NullIDError) + end + end +end |
