Write/Fix tests
This commit is contained in:
parent
168d90c6f9
commit
be1d0150ef
|
@ -1,4 +1,5 @@
|
|||
defmodule Farmbot.Bootstrap.SettingsSync do
|
||||
@moduledoc "Handles uploading and downloading of FBOS configs."
|
||||
use Task, restart: :transient
|
||||
use Farmbot.Logger
|
||||
import Farmbot.System.ConfigStorage, only: [get_config_value: 3, update_config_value: 4, get_config_as_map: 0]
|
||||
|
@ -31,13 +32,13 @@ defmodule Farmbot.Bootstrap.SettingsSync do
|
|||
case new_value do
|
||||
val when is_boolean(val) -> update_config_value(:bool, "settings", key, new_value)
|
||||
val when is_binary(val) -> update_config_value(:string, "settings", key, new_value)
|
||||
val when is_number(val) -> update_config_value(:float, "settings", key, new_value)
|
||||
val when is_number(val) -> update_config_value(:float, "settings", key, new_value / 1)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
def do_sync_settings(api_data) do
|
||||
def do_sync_settings(%{"api_migrated" => true} = api_data) do
|
||||
Logger.info 3, "API is the source of truth; Downloading data."
|
||||
old_config = get_config_as_map()["settings"]
|
||||
apply_map(old_config, api_data)
|
||||
|
@ -58,7 +59,7 @@ defmodule Farmbot.Bootstrap.SettingsSync do
|
|||
firmware_hardware = get_config_value(:string, "settings", "firmware_hardware")
|
||||
network_not_found_timer = get_config_value(:float, "settings", "network_not_found_timer")
|
||||
payload = %{
|
||||
# api_migrated: true,
|
||||
api_migrated: true,
|
||||
auto_sync: auto_sync,
|
||||
beta_opt_in: beta_opt_in,
|
||||
disable_factory_reset: disable_factory_reset,
|
||||
|
|
|
@ -8,74 +8,4 @@ defmodule Farmbot.CeleryScript.AST.Node.ConfigUpdateTest do
|
|||
{:ok, env} = ConfigUpdate.execute(%{package: :farmbot_os}, [], env)
|
||||
assert_cs_env_mutation(ConfigUpdate, env)
|
||||
end
|
||||
|
||||
test "sets network_not_found_timer", %{env: env} do
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("network_not_found_timer", 1000), env)
|
||||
|> assert_cs_success()
|
||||
|
||||
assert ConfigStorage.get_config_value(:float, "settings", "network_not_found_timer") == 1000.0
|
||||
end
|
||||
|
||||
test "Wont set network_not_found_timer to a negative number", %{env: env} do
|
||||
old = ConfigStorage.get_config_value(:float, "settings", "network_not_found_timer")
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("network_not_found_timer", -1), env)
|
||||
|> assert_cs_fail("network_not_found_timer must be greater than zero")
|
||||
|
||||
assert ConfigStorage.get_config_value(:float, "settings", "network_not_found_timer") == old
|
||||
end
|
||||
|
||||
test "sets os auto update", %{env: env} do
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("os_auto_update", true), env) |> assert_cs_success()
|
||||
assert ConfigStorage.get_config_value(:bool, "settings", "os_auto_update")
|
||||
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("os_auto_update", false), env) |> assert_cs_success()
|
||||
refute ConfigStorage.get_config_value(:bool, "settings", "os_auto_update")
|
||||
end
|
||||
|
||||
test "sets auto sync", %{env: env} do
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("auto_sync", true), env) |> assert_cs_success()
|
||||
assert ConfigStorage.get_config_value(:bool, "settings", "auto_sync")
|
||||
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("auto_sync", false), env) |> assert_cs_success()
|
||||
refute ConfigStorage.get_config_value(:bool, "settings", "auto_sync")
|
||||
end
|
||||
|
||||
test "can not set arduino hardware to unknown setting", %{env: env} do
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("firmware_hardware", "whoops"), env)
|
||||
|> assert_cs_fail("unknown hardware: whoops")
|
||||
|
||||
refute ConfigStorage.get_config_value(:string, "settings", "firmware_hardware") == "whoops"
|
||||
end
|
||||
|
||||
test "gives decent error on unknown onfig files.", %{env: env} do
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("some_other_config", "whoops"), env)
|
||||
|> assert_cs_fail("unknown config: some_other_config")
|
||||
end
|
||||
|
||||
test "can set float values with an integer", %{env: env} do
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("network_not_found_timer", 1000), env)
|
||||
|> assert_cs_success()
|
||||
end
|
||||
|
||||
test "can set float values with a float", %{env: env} do
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pair("network_not_found_timer", 1000.00), env)
|
||||
|> assert_cs_success()
|
||||
end
|
||||
|
||||
test "allows setting multiple configs", %{env: env} do
|
||||
pairs = pairs([{"network_not_found_timer", 10.0}, {"firmware_hardware", "farmduino"}])
|
||||
ConfigUpdate.execute(%{package: :farmbot_os}, pairs, env) |> assert_cs_success()
|
||||
|
||||
assert ConfigStorage.get_config_value(:string, "settings", "firmware_hardware") == "farmduino"
|
||||
assert ConfigStorage.get_config_value(:float, "settings", "network_not_found_timer") == 10.0
|
||||
end
|
||||
|
||||
defp pair(key, val) do
|
||||
{:ok, pair, _} = Pair.execute(%{label: key, value: val}, [], struct(Macro.Env, []))
|
||||
[pair]
|
||||
end
|
||||
|
||||
defp pairs(pairs) do
|
||||
Enum.map(pairs, fn({key, val}) -> pair(key, val) end) |> List.flatten()
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue