diff --git a/lib/farmbot/bootstrap/settings_sync.ex b/lib/farmbot/bootstrap/settings_sync.ex index 8983cd8f..a0248309 100644 --- a/lib/farmbot/bootstrap/settings_sync.ex +++ b/lib/farmbot/bootstrap/settings_sync.ex @@ -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, diff --git a/test/farmbot/celery_script/ast/node/config_update_test.exs b/test/farmbot/celery_script/ast/node/config_update_test.exs index 3e46ffee..d8df8b99 100644 --- a/test/farmbot/celery_script/ast/node/config_update_test.exs +++ b/test/farmbot/celery_script/ast/node/config_update_test.exs @@ -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