From d4eee787e1d0ef35971fcefc9c23a05bb8efb467 Mon Sep 17 00:00:00 2001 From: Adrian Kumpf Date: Sun, 29 Sep 2019 19:41:32 +0200 Subject: [PATCH] Handle empty :vehicle_state when updating --- lib/teslamate/vehicles/vehicle/vehicle.ex | 7 ++++++- test/teslamate/vehicles/vehicle/updating_test.exs | 1 + test/teslamate_web/live/geofence_live_test.exs | 6 +----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/teslamate/vehicles/vehicle/vehicle.ex b/lib/teslamate/vehicles/vehicle/vehicle.ex index a04cc6a7..fd2ef833 100644 --- a/lib/teslamate/vehicles/vehicle/vehicle.ex +++ b/lib/teslamate/vehicles/vehicle/vehicle.ex @@ -560,7 +560,12 @@ defmodule TeslaMate.Vehicles.Vehicle do end def handle_event(:internal, {:update, {:online, vehicle}}, {:updating, update_id}, data) do - case vehicle.vehicle_state.software_update do + case Map.get(vehicle.vehicle_state || %{}, :software_update) do + nil -> + Logger.warn("Update / no data", car_id: data.car.id) + + {:keep_state, %Data{data | last_used: DateTime.utc_now()}, schedule_fetch(5)} + %VehicleState.SoftwareUpdate{status: "installing"} -> {:keep_state, %Data{data | last_used: DateTime.utc_now()}, schedule_fetch(15)} diff --git a/test/teslamate/vehicles/vehicle/updating_test.exs b/test/teslamate/vehicles/vehicle/updating_test.exs index 0a3d5f1f..1f29741d 100644 --- a/test/teslamate/vehicles/vehicle/updating_test.exs +++ b/test/teslamate/vehicles/vehicle/updating_test.exs @@ -8,6 +8,7 @@ defmodule TeslaMate.Vehicles.Vehicle.UpdatingTest do {:ok, update_event("installing", "2019.8.4 530d1d3")}, {:ok, update_event("installing", "2019.8.4 530d1d3")}, {:ok, update_event("installing", "2019.8.4 530d1d3")}, + {:ok, %TeslaApi.Vehicle{state: "online", vehicle_state: nil}}, {:error, :vehicle_unavailable}, {:ok, %TeslaApi.Vehicle{state: "offline"}}, {:ok, update_event("installing", "2019.8.4 530d1d3")}, diff --git a/test/teslamate_web/live/geofence_live_test.exs b/test/teslamate_web/live/geofence_live_test.exs index 1f02bc5e..650cdbf8 100644 --- a/test/teslamate_web/live/geofence_live_test.exs +++ b/test/teslamate_web/live/geofence_live_test.exs @@ -64,11 +64,7 @@ defmodule TeslaMateWeb.GeoFenceLiveTest do assert ["Victory Column", "52.51452, 13.35014", "100 m", _] = html |> Floki.find("td") |> Enum.map(&Floki.text/1) - assert html =~ - ~r/a class="button.*?" href="#" phx-click="flag" phx-value-id="#{id}"/ - - assert render_click(view, :flag, %{"id" => "#{id}"}) =~ - ~r/a class="button.*?" href="#" phx-click="delete" phx-value-id="#{id}"/ + assert [{"a", _, _}] = html |> Floki.find("[data-id=#{id}]") assert [{"tbody", [], []}] = view |> render_click(:delete, %{"id" => "#{id}"}) |> Floki.find("tbody")