From e9c14e1450b0bbc2c9e52abbec7abff0d8e54b33 Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Fri, 5 Apr 2024 10:08:00 -0700 Subject: [PATCH] Add some tests --- lib/pinchflat/settings/settings.ex | 2 -- .../settings/setting_controller.ex | 4 ---- test/pinchflat/settings_test.exs | 18 +++++++++++++++ .../controllers/setting_controller_test.exs | 23 +++++++++++++++++++ 4 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 test/pinchflat_web/controllers/setting_controller_test.exs diff --git a/lib/pinchflat/settings/settings.ex b/lib/pinchflat/settings/settings.ex index ab8d10d..25a8d68 100644 --- a/lib/pinchflat/settings/settings.ex +++ b/lib/pinchflat/settings/settings.ex @@ -25,7 +25,6 @@ defmodule Pinchflat.Settings do Returns {:ok, %Setting{}} | {:error, %Ecto.Changeset{}} """ - # TODO: test def update_setting(%Setting{} = setting, attrs) do setting |> Setting.changeset(attrs) @@ -76,7 +75,6 @@ defmodule Pinchflat.Settings do @doc """ Returns `%Ecto.Changeset{}` """ - # TODO: test def change_setting(%Setting{} = setting, attrs \\ %{}) do Setting.changeset(setting, attrs) end diff --git a/lib/pinchflat_web/controllers/settings/setting_controller.ex b/lib/pinchflat_web/controllers/settings/setting_controller.ex index 2ebd446..c87d51f 100644 --- a/lib/pinchflat_web/controllers/settings/setting_controller.ex +++ b/lib/pinchflat_web/controllers/settings/setting_controller.ex @@ -1,12 +1,8 @@ defmodule PinchflatWeb.Settings.SettingController do use PinchflatWeb, :controller - # import Ecto.Query, warn: false - - # alias Pinchflat.Repo alias Pinchflat.Settings - # TODO: test def show(conn, _params) do setting = Settings.record() changeset = Settings.change_setting(setting) diff --git a/test/pinchflat/settings_test.exs b/test/pinchflat/settings_test.exs index bcfb97f..944eaf1 100644 --- a/test/pinchflat/settings_test.exs +++ b/test/pinchflat/settings_test.exs @@ -24,6 +24,16 @@ defmodule Pinchflat.SettingsTest do end end + describe "update_setting/2" do + test "updates the setting" do + setting = Settings.record() + + assert {:ok, false} = Settings.get(:onboarding) + assert {:ok, %Setting{}} = Settings.update_setting(setting, %{onboarding: true}) + assert {:ok, true} = Settings.get(:onboarding) + end + end + describe "set/1" do test "updates the setting" do assert {:ok, true} = Settings.set(onboarding: true) @@ -60,4 +70,12 @@ defmodule Pinchflat.SettingsTest do end end end + + describe "change_setting/2" do + test "returns a changeset" do + setting = Settings.record() + + assert %Ecto.Changeset{} = Settings.change_setting(setting, %{onboarding: true}) + end + end end diff --git a/test/pinchflat_web/controllers/setting_controller_test.exs b/test/pinchflat_web/controllers/setting_controller_test.exs new file mode 100644 index 0000000..0063ebc --- /dev/null +++ b/test/pinchflat_web/controllers/setting_controller_test.exs @@ -0,0 +1,23 @@ +defmodule PinchflatWeb.SettingControllerTest do + use PinchflatWeb.ConnCase + + describe "show settings" do + test "renders the page", %{conn: conn} do + conn = get(conn, ~p"/settings") + + assert html_response(conn, 200) =~ "Settings" + end + end + + describe "update settings" do + test "saves and redirects when data is valid", %{conn: conn} do + update_attrs = %{apprise_server: "test://server"} + + conn = put(conn, ~p"/settings", setting: update_attrs) + assert redirected_to(conn) == ~p"/settings" + + conn = get(conn, ~p"/settings") + assert html_response(conn, 200) =~ update_attrs[:apprise_server] + end + end +end