From 53f28daefea05fb7bf46b2d7a090dc28688b7255 Mon Sep 17 00:00:00 2001 From: Rick Carlino Date: Tue, 31 Mar 2020 14:45:14 -0500 Subject: [PATCH] Finish testing AutoSyncAssetHandler --- farmbot_ext/config/test.exs | 1 + .../amqp/auto_sync_asset_handler_test.exs | 27 ++++++++++++++++-- farmbot_ext/test/test_helper.exs | 28 +++++++++++-------- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/farmbot_ext/config/test.exs b/farmbot_ext/config/test.exs index a6cd3dfe..54a47b28 100644 --- a/farmbot_ext/config/test.exs +++ b/farmbot_ext/config/test.exs @@ -1,6 +1,7 @@ use Mix.Config if Mix.env() == :test do + config :ex_unit, capture_logs: true mapper = fn mod -> config :farmbot_ext, mod, children: [] end list = [ diff --git a/farmbot_ext/test/farmbot_ext/amqp/auto_sync_asset_handler_test.exs b/farmbot_ext/test/farmbot_ext/amqp/auto_sync_asset_handler_test.exs index b4210edd..3f619a28 100644 --- a/farmbot_ext/test/farmbot_ext/amqp/auto_sync_asset_handler_test.exs +++ b/farmbot_ext/test/farmbot_ext/amqp/auto_sync_asset_handler_test.exs @@ -1,4 +1,5 @@ defmodule AutoSyncAssetHandlerTest do + require Helpers use ExUnit.Case, async: false use Mimic @@ -8,6 +9,8 @@ defmodule AutoSyncAssetHandlerTest do alias FarmbotExt.AMQP.AutoSyncAssetHandler alias FarmbotCore.{Asset, BotState, Leds} + import ExUnit.CaptureLog + def auto_sync_off, do: expect(Asset.Query, :auto_sync?, fn -> false end) def auto_sync_on, do: expect(Asset.Query, :auto_sync?, fn -> true end) @@ -27,9 +30,12 @@ defmodule AutoSyncAssetHandlerTest do test "Handles @no_cache_kinds" do id = 64 params = %{} - kind = ~w(Device FbosConfig FirmwareConfig FarmwareEnv FarmwareInstallation) - |> Enum.shuffle - |> Enum.at(0) + + kind = + ~w(Device FbosConfig FirmwareConfig FarmwareEnv FarmwareInstallation) + |> Enum.shuffle() + |> Enum.at(0) + expect(Asset.Command, :update, 1, fn ^kind, ^id, ^params -> :ok end) assert :ok = AutoSyncAssetHandler.cache_sync(kind, id, params) end @@ -42,4 +48,19 @@ defmodule AutoSyncAssetHandlerTest do expect_green_leds(:solid) AutoSyncAssetHandler.handle_asset("Point", 32, nil) end + + test "cache sync" do + id = 64 + params = %{} + kind = "Point" + # Helpers.expect_log("Autocaching sync #{kind} #{id} #{inspect(params)}") + changeset = %{ab: :cd} + changesetfaker = fn ^kind, ^id, ^params -> changeset end + expect(FarmbotCore.Asset.Command, :new_changeset, 1, changesetfaker) + expect(FarmbotExt.API.EagerLoader, :cache, 1, fn ^changeset -> :ok end) + expect_sync_status_to_be("sync_now") + expect_green_leds(:slow_blink) + do_it = fn -> AutoSyncAssetHandler.cache_sync(kind, id, params) end + assert capture_log(do_it) =~ "Autocaching sync Point 64 %{}" + end end diff --git a/farmbot_ext/test/test_helper.exs b/farmbot_ext/test/test_helper.exs index db51a065..afe7455f 100644 --- a/farmbot_ext/test/test_helper.exs +++ b/farmbot_ext/test/test_helper.exs @@ -1,17 +1,21 @@ Application.ensure_all_started(:farmbot) -Mimic.copy(AMQP.Channel) -Mimic.copy(FarmbotCeleryScript.SysCalls.Stubs) -Mimic.copy(FarmbotCore.Asset.Command) -Mimic.copy(FarmbotCore.Asset.Query) -Mimic.copy(FarmbotCore.BotState) -Mimic.copy(FarmbotCore.Leds) -Mimic.copy(FarmbotCore.LogExecutor) -Mimic.copy(FarmbotExt.AMQP.ConnectionWorker) -Mimic.copy(FarmbotExt.API.EagerLoader.Supervisor) -Mimic.copy(FarmbotExt.API.Preloader) -Mimic.copy(FarmbotExt.API) -Mimic.copy(FarmbotExt.AMQP.AutoSyncAssetHandler) +[ + AMQP.Channel, + FarmbotCeleryScript.SysCalls.Stubs, + FarmbotCore.Asset.Command, + FarmbotCore.Asset.Query, + FarmbotCore.BotState, + FarmbotCore.Leds, + FarmbotCore.LogExecutor, + FarmbotExt.AMQP.AutoSyncAssetHandler, + FarmbotExt.AMQP.ConnectionWorker, + FarmbotExt.API, + FarmbotExt.API.EagerLoader, + FarmbotExt.API.EagerLoader.Supervisor, + FarmbotExt.API.Preloader, +] +|> Enum.map(&Mimic.copy/1) timeout = System.get_env("EXUNIT_TIMEOUT") || "5000" System.put_env("LOG_SILENCE", "true")