aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorTeddy Wing2018-03-12 15:25:50 +0100
committerTeddy Wing2018-03-14 16:38:40 +0100
commit33c2dad6ba2483a4c71d7248979bf9d82a65f234 (patch)
tree20a119ff082c2bc58b190d1394dea73e2526a4e7 /lib
parente558625cd5e3cad60757a537320eb15f1c045cd0 (diff)
downloadchouette-core-33c2dad6ba2483a4c71d7248979bf9d82a65f234.tar.bz2
TomTom::Batch: Extract code to `#extract_costs_to_way_costs!`
Extract some code from `#batch` to allow us to test the part that takes distance and time values from the response JSON and put fill them into `WayCost`s. In order for the test to work, had to add an `#==` method to `WayCost` and make `distance` and `time` accessors. The JSON file fixture is a copy of a response from the TomTom `/batch` API. The file is pretty big. I'm not sure if maybe I should condense it for the sake of test performance. Refs #6095
Diffstat (limited to 'lib')
-rw-r--r--lib/tom_tom/batch.rb9
-rw-r--r--lib/way_cost.rb10
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/tom_tom/batch.rb b/lib/tom_tom/batch.rb
index 913f018b5..6ceb9c226 100644
--- a/lib/tom_tom/batch.rb
+++ b/lib/tom_tom/batch.rb
@@ -23,9 +23,14 @@ module TomTom
}.to_json
end
- response = JSON.parse(response.body)
+ extract_costs_to_way_costs!(
+ way_costs,
+ JSON.parse(response.body)
+ )
+ end
- calculated_routes = response['batchItems']
+ def extract_costs_to_way_costs!(way_costs, batch_json)
+ calculated_routes = batch_json['batchItems']
calculated_routes.each_with_index do |route, i|
next if route['statusCode'] != 200
diff --git a/lib/way_cost.rb b/lib/way_cost.rb
index 027d8f593..5de64177f 100644
--- a/lib/way_cost.rb
+++ b/lib/way_cost.rb
@@ -1,6 +1,6 @@
class WayCost
attr_reader :departure, :arrival
- attr_writer :distance, :time
+ attr_accessor :distance, :time
def initialize(
departure:,
@@ -15,4 +15,12 @@ class WayCost
@time = time
@id = id
end
+
+ def ==(other)
+ other.is_a?(self.class) &&
+ @departure == other.departure &&
+ @arrival == other.arrival &&
+ @distance == other.distance &&
+ @time == other.time
+ end
end