FAILING: Verify mocks on exit.

pull/1125/head
Rick Carlino 2020-01-25 11:48:52 -06:00
parent 407f7f5fee
commit 7059f3c44c
13 changed files with 167 additions and 160 deletions

View File

@ -5,6 +5,7 @@ defmodule FarmbotCeleryScript.CompilerGroupsTest do
alias FarmbotCeleryScript.AST
alias FarmbotCeleryScript.SysCalls.Stubs
alias FarmbotCeleryScript.Compiler.Sequence
setup :verify_on_exit!
test "compilation of point_group in parameter application" do
fake_point_ids = [4, 5, 6, 7]

View File

@ -5,6 +5,7 @@ defmodule FarmbotCeleryScript.SchedulerTest do
alias FarmbotCeleryScript.SysCalls.Stubs
setup :set_mimic_global
setup :verify_on_exit!
test "schedules a sequence to run in the future" do
expect(Stubs, :read_pin, 1, fn _num, _mode ->

View File

@ -8,6 +8,8 @@ defmodule FarmbotCeleryScript.SysCallsTest do
AST
}
setup :verify_on_exit!
test "point, OK" do
expect(Stubs, :point, 1, fn _kind, 1 ->
%{x: 100, y: 200, z: 300}

View File

@ -5,6 +5,8 @@ defmodule FarmbotCeleryScriptTest do
alias FarmbotCeleryScript.AST
alias FarmbotCeleryScript.SysCalls.Stubs
setup :verify_on_exit!
test "uses default values when no parameter is found" do
sequence_ast =
%{

View File

@ -1,5 +1,5 @@
defmodule FarmbotCore.DeviceWorkerTest do
use ExUnit.Case, async: false
use ExUnit.Case
use Mimic
alias Farmbot.TestSupport.AssetFixtures
@ -7,7 +7,10 @@ defmodule FarmbotCore.DeviceWorkerTest do
alias FarmbotCore.Asset.Device
alias FarmbotCore.AssetWorker
@im_so_sorry 300
setup :set_mimic_global
setup :verify_on_exit!
def fresh_device(needs_reset \\ true) do
params = %{needs_reset: needs_reset}
@ -22,9 +25,7 @@ defmodule FarmbotCore.DeviceWorkerTest do
dev = fresh_device()
{:ok, _pid} = AssetWorker.start_link(dev, [])
# Hmmm
Process.sleep(300)
Process.sleep(@im_so_sorry)
end
test "DO trigger factory reset during update" do
@ -36,7 +37,7 @@ defmodule FarmbotCore.DeviceWorkerTest do
end)
GenServer.cast(pid, {:new_data, %{dev | needs_reset: true}})
Process.sleep(300)
Process.sleep(@im_so_sorry)
end
test "DO NOT trigger factory reset during update" do
@ -48,7 +49,5 @@ defmodule FarmbotCore.DeviceWorkerTest do
flunk(nooo)
raise nooo
end)
Process.sleep(300)
end
end

View File

@ -7,11 +7,12 @@ defmodule AutoSyncChannelTest do
# alias FarmbotCore.JSON
alias FarmbotCore.Asset.{
Query,
# Command,
Command,
Sync
}
alias FarmbotExt.{JWT, API, AMQP.ConnectionWorker}
setup :verify_on_exit!
@fake_jwt "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZ" <>
"G1pbkBhZG1pbi5jb20iLCJpYXQiOjE1MDIxMjcxMTcsImp0a" <>
@ -71,189 +72,189 @@ defmodule AutoSyncChannelTest do
pretend_network_returned(%{conn: fake_con, chan: fake_chan})
end
# test "network returns `nil`" do
# results = pretend_network_returned(nil)
# %{conn: has_conn, chan: has_chan, preloaded: is_preloaded} = results
test "network returns `nil`" do
results = pretend_network_returned(nil)
%{conn: has_conn, chan: has_chan, preloaded: is_preloaded} = results
# assert has_chan == nil
# assert has_conn == nil
# assert is_preloaded
# end
assert has_chan == nil
assert has_conn == nil
assert is_preloaded
end
# test "network returns unexpected object (probably an error)" do
# results = pretend_network_returned({:something, :else})
# %{conn: has_conn, chan: has_chan, preloaded: is_preloaded} = results
test "network returns unexpected object (probably an error)" do
results = pretend_network_returned({:something, :else})
%{conn: has_conn, chan: has_chan, preloaded: is_preloaded} = results
# assert has_chan == nil
# assert has_conn == nil
# assert is_preloaded
# end
assert has_chan == nil
assert has_conn == nil
assert is_preloaded
end
# test "expected object bootstraps process state" do
# fake_con = %{fake: :conn}
# fake_chan = %{fake: :chan}
# fake_response = %{conn: fake_con, chan: fake_chan}
test "expected object bootstraps process state" do
fake_con = %{fake: :conn}
fake_chan = %{fake: :chan}
fake_response = %{conn: fake_con, chan: fake_chan}
# results = pretend_network_returned(fake_response)
results = pretend_network_returned(fake_response)
# %{conn: real_conn, chan: real_chan, preloaded: is_preloaded, pid: pid} = results
%{conn: real_conn, chan: real_chan, preloaded: is_preloaded, pid: pid} = results
# assert real_chan == fake_chan
# assert real_conn == fake_con
# assert is_preloaded
# send(pid, {:basic_cancel, "--NOT USED--"})
# assert_receive :close_channel_called, 150
# end
assert real_chan == fake_chan
assert real_conn == fake_con
assert is_preloaded
send(pid, {:basic_cancel, "--NOT USED--"})
assert_receive :close_channel_called, 150
end
# test "catch-all clause for inbound AMQP messages" do
# fake_con = %{fake: :conn}
# fake_chan = %{fake: :chan}
# fake_response = %{conn: fake_con, chan: fake_chan}
test "catch-all clause for inbound AMQP messages" do
fake_con = %{fake: :conn}
fake_chan = %{fake: :chan}
fake_response = %{conn: fake_con, chan: fake_chan}
# %{pid: pid} = pretend_network_returned(fake_response)
%{pid: pid} = pretend_network_returned(fake_response)
# payload =
# JSON.encode!(%{
# args: %{label: "xyz"}
# })
payload =
JSON.encode!(%{
args: %{label: "xyz"}
})
# send(pid, {:basic_deliver, payload, %{routing_key: "WRONG!"}})
# assert_receive {:rpc_reply_called, %{fake: :chan}, "device_15", "xyz"}
# end
send(pid, {:basic_deliver, payload, %{routing_key: "WRONG!"}})
assert_receive {:rpc_reply_called, %{fake: :chan}, "device_15", "xyz"}
end
# test "wont autosync unknown assets" do
# fake_con = %{fake: :conn}
# fake_chan = %{fake: :chan}
# fake_response = %{conn: fake_con, chan: fake_chan}
test "wont autosync unknown assets" do
fake_con = %{fake: :conn}
fake_chan = %{fake: :chan}
fake_response = %{conn: fake_con, chan: fake_chan}
# %{pid: pid} = pretend_network_returned(fake_response)
%{pid: pid} = pretend_network_returned(fake_response)
# payload =
# JSON.encode!(%{
# args: %{label: "xyz"}
# })
payload =
JSON.encode!(%{
args: %{label: "xyz"}
})
# send(pid, {:basic_deliver, payload, %{routing_key: "bot.device_15.sync.SavedGarden.999"}})
# assert_receive {:rpc_reply_called, %{fake: :chan}, "device_15", "xyz"}
# end
send(pid, {:basic_deliver, payload, %{routing_key: "bot.device_15.sync.SavedGarden.999"}})
assert_receive {:rpc_reply_called, %{fake: :chan}, "device_15", "xyz"}
end
# test "ignores asset deletion when auto_sync is off" do
# %{pid: pid} = under_normal_conditions()
# test_pid = self()
# payload = '{"args":{"label":"foo"}}'
# key = "bot.device_15.sync.Device.999"
test "ignores asset deletion when auto_sync is off" do
%{pid: pid} = under_normal_conditions()
test_pid = self()
payload = '{"args":{"label":"foo"}}'
key = "bot.device_15.sync.Device.999"
# stub(Query, :auto_sync?, fn ->
# send(test_pid, :called_auto_sync?)
# false
# end)
stub(Query, :auto_sync?, fn ->
send(test_pid, :called_auto_sync?)
false
end)
# send(pid, {:basic_deliver, payload, %{routing_key: key}})
# assert_receive :called_auto_sync?
# end
send(pid, {:basic_deliver, payload, %{routing_key: key}})
assert_receive :called_auto_sync?
end
# test "handles Device assets" do
# %{pid: pid} = under_normal_conditions()
# test_pid = self()
# payload = '{"args":{"label":"foo"},"body":{}}'
# key = "bot.device_15.sync.Device.999"
# stub(Query, :auto_sync?, fn -> true end)
test "handles Device assets" do
%{pid: pid} = under_normal_conditions()
test_pid = self()
payload = '{"args":{"label":"foo"},"body":{}}'
key = "bot.device_15.sync.Device.999"
stub(Query, :auto_sync?, fn -> true end)
# stub(Command, :update, fn x, y, z ->
# send(test_pid, {:update_called, x, y, z})
# :ok
# end)
stub(Command, :update, fn x, y, z ->
send(test_pid, {:update_called, x, y, z})
:ok
end)
# send(pid, {:basic_deliver, payload, %{routing_key: key}})
# assert_receive {:update_called, "Device", 999, %{}}
# end
send(pid, {:basic_deliver, payload, %{routing_key: key}})
assert_receive {:update_called, "Device", 999, %{}}
end
# def simple_asset_test_singleton(module_name) do
# %{pid: pid} = under_normal_conditions()
# test_pid = self()
# payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
# key = "bot.device_15.sync.#{module_name}.999"
def simple_asset_test_singleton(module_name) do
%{pid: pid} = under_normal_conditions()
test_pid = self()
payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
key = "bot.device_15.sync.#{module_name}.999"
# stub(Query, :auto_sync?, fn -> true end)
stub(Query, :auto_sync?, fn -> true end)
# stub(Command, :update, fn x, y, z ->
# send(test_pid, {:update_called, x, y, z})
# :ok
# end)
stub(Command, :update, fn x, y, z ->
send(test_pid, {:update_called, x, y, z})
:ok
end)
# stub(Command, :update, fn x, y, z ->
# send(test_pid, {:update_called, x, y, z})
# :ok
# end)
stub(Command, :update, fn x, y, z ->
send(test_pid, {:update_called, x, y, z})
:ok
end)
# send(pid, {:basic_deliver, payload, %{routing_key: key}})
send(pid, {:basic_deliver, payload, %{routing_key: key}})
# assert_receive {:update_called, ^module_name, 999, %{"foo" => "bar"}}
# end
assert_receive {:update_called, ^module_name, 999, %{"foo" => "bar"}}
end
# test "handles auto_sync of 'no_cache' when auto_sync is false" do
# test_pid = self()
# %{pid: pid} = under_normal_conditions()
test "handles auto_sync of 'no_cache' when auto_sync is false" do
test_pid = self()
%{pid: pid} = under_normal_conditions()
# key = "bot.device_15.sync.FbosConfig.999"
# payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
key = "bot.device_15.sync.FbosConfig.999"
payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
# stub(Query, :auto_sync?, fn ->
# send(test_pid, :called_auto_sync?)
# false
# end)
stub(Query, :auto_sync?, fn ->
send(test_pid, :called_auto_sync?)
false
end)
# stub(Command, :update, fn kind, id, params ->
# send(test_pid, {:update_called, kind, id, params})
# :ok
# end)
stub(Command, :update, fn kind, id, params ->
send(test_pid, {:update_called, kind, id, params})
:ok
end)
# send(pid, {:basic_deliver, payload, %{routing_key: key}})
# assert_receive :called_auto_sync?
# assert_receive {:update_called, "FbosConfig", 999, %{"foo" => "bar"}}
# end
send(pid, {:basic_deliver, payload, %{routing_key: key}})
assert_receive :called_auto_sync?
assert_receive {:update_called, "FbosConfig", 999, %{"foo" => "bar"}}
end
# test "auto_sync disabled, resource not in @cache_kinds" do
# test_pid = self()
# %{pid: pid} = under_normal_conditions()
test "auto_sync disabled, resource not in @cache_kinds" do
test_pid = self()
%{pid: pid} = under_normal_conditions()
# key = "bot.device_15.sync.Point.999"
# payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
key = "bot.device_15.sync.Point.999"
payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
# stub(Query, :auto_sync?, fn ->
# send(test_pid, :called_auto_sync?)
# false
# end)
stub(Query, :auto_sync?, fn ->
send(test_pid, :called_auto_sync?)
false
end)
# stub(Command, :new_changeset, fn kind, id, params ->
# send(test_pid, {:new_changeset_called, kind, id, params})
# :ok
# end)
stub(Command, :new_changeset, fn kind, id, params ->
send(test_pid, {:new_changeset_called, kind, id, params})
:ok
end)
# send(pid, {:basic_deliver, payload, %{routing_key: key}})
# assert_receive {:new_changeset_called, "Point", 999, %{"foo" => "bar"}}
# end
send(pid, {:basic_deliver, payload, %{routing_key: key}})
assert_receive {:new_changeset_called, "Point", 999, %{"foo" => "bar"}}
end
# test "handles FbosConfig", do: simple_asset_test_singleton("FbosConfig")
# test "handles FirmwareConfig", do: simple_asset_test_singleton("FirmwareConfig")
# test "handles FarmwareEnv", do: simple_asset_test_plural("FarmwareEnv")
# test "handles FarmwareInstallation", do: simple_asset_test_plural("FarmwareInstallation")
test "handles FbosConfig", do: simple_asset_test_singleton("FbosConfig")
test "handles FirmwareConfig", do: simple_asset_test_singleton("FirmwareConfig")
test "handles FarmwareEnv", do: simple_asset_test_plural("FarmwareEnv")
test "handles FarmwareInstallation", do: simple_asset_test_plural("FarmwareInstallation")
# defp simple_asset_test_plural(module_name) do
# %{pid: pid} = under_normal_conditions()
# test_pid = self()
# payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
# key = "bot.device_15.sync.#{module_name}.999"
defp simple_asset_test_plural(module_name) do
%{pid: pid} = under_normal_conditions()
test_pid = self()
payload = '{"args":{"label":"foo"},"body":{"foo": "bar"}}'
key = "bot.device_15.sync.#{module_name}.999"
# stub(Query, :auto_sync?, fn -> true end)
stub(Query, :auto_sync?, fn -> true end)
# stub(Command, :update, fn x, y, z ->
# send(test_pid, {:update_called, x, y, z})
# :ok
# end)
stub(Command, :update, fn x, y, z ->
send(test_pid, {:update_called, x, y, z})
:ok
end)
# send(pid, {:basic_deliver, payload, %{routing_key: key}})
send(pid, {:basic_deliver, payload, %{routing_key: key}})
# assert_receive {:update_called, ^module_name, 999, %{"foo" => "bar"}}
# end
assert_receive {:update_called, ^module_name, 999, %{"foo" => "bar"}}
end
end

View File

@ -9,6 +9,7 @@ defmodule FarmbotExt.API.PreloaderTest do
}
alias FarmbotExt.{API, API.Preloader}
setup :verify_on_exit!
test "get sync error" do
expect(API, :get_changeset, fn Sync ->

View File

@ -1,9 +1,11 @@
Application.ensure_all_started(:farmbot)
timeout = System.get_env("EXUNIT_TIMEOUT")
Mimic.copy(FarmbotCore.Asset.Query)
Mimic.copy(FarmbotExt.API)
Mimic.copy(FarmbotExt.AMQP.ConnectionWorker)
Mimic.copy(FarmbotCeleryScript.SysCalls.Stubs)
Mimic.copy(FarmbotCore.Asset.Command)
Mimic.copy(FarmbotCore.Asset.Query)
Mimic.copy(FarmbotExt.AMQP.ConnectionWorker)
Mimic.copy(FarmbotExt.API)
if timeout do
ExUnit.start(assert_receive_timeout: String.to_integer(timeout))

View File

@ -1,10 +1,9 @@
defmodule FarmbotFirmware.UARTTransportTest do
use ExUnit.Case
use Mimic
setup [:verify_on_exit!]
doctest FarmbotFirmware.UARTTransport
alias FarmbotFirmware.{UartDefaultAdapter, UARTTransport}
setup :verify_on_exit!
test "UARTTransport.init/1" do
expect(UartDefaultAdapter, :start_link, fn ->

View File

@ -2,7 +2,7 @@ defmodule FarmbotFirmware.UARTDefaultAdapterTest do
use ExUnit.Case
use Mimic
setup [:verify_on_exit!]
setup :verify_on_exit!
alias FarmbotFirmware.{UartDefaultAdapter}
test "delegates" do
@ -34,7 +34,4 @@ defmodule FarmbotFirmware.UARTDefaultAdapterTest do
UartDefaultAdapter.stop(pid)
UartDefaultAdapter.write(pid, str)
end
test "configuration" do
end
end

View File

@ -3,7 +3,7 @@ defmodule FarmbotOs.AvrdudeTest do
use Mimic
setup [:verify_on_exit!]
setup :verify_on_exit!
test "works" do
File.touch("/tmp/wow")

View File

@ -4,6 +4,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
use Plug.Test
use Mimic
setup :verify_on_exit!
@opts Router.init([])

View File

@ -10,6 +10,7 @@ defmodule FarmbotOS.SysCallsTest do
}
use Mimic
setup :verify_on_exit!
test "emergency_unlock" do
expect(FarmbotFirmware, :command, fn {:command_emergency_unlock, []} ->