Add settings model (#54)
* Adds a basic settings model * Added more settings methods; Hooked up initial settings runner to app boot * Update onboarding flow to use settings model instead of session data
This commit is contained in:
@@ -6,6 +6,7 @@ defmodule PinchflatWeb.MediaProfileControllerTest do
|
||||
import Pinchflat.ProfilesFixtures
|
||||
|
||||
alias Pinchflat.Repo
|
||||
alias Pinchflat.Settings
|
||||
|
||||
@create_attrs %{name: "some name", output_path_template: "some output_path_template"}
|
||||
@update_attrs %{
|
||||
@@ -14,6 +15,12 @@ defmodule PinchflatWeb.MediaProfileControllerTest do
|
||||
}
|
||||
@invalid_attrs %{name: nil, output_path_template: nil}
|
||||
|
||||
setup do
|
||||
Settings.set!(:onboarding, false)
|
||||
|
||||
:ok
|
||||
end
|
||||
|
||||
describe "index" do
|
||||
test "lists all media_profiles", %{conn: conn} do
|
||||
conn = get(conn, ~p"/media_profiles")
|
||||
@@ -27,13 +34,11 @@ defmodule PinchflatWeb.MediaProfileControllerTest do
|
||||
assert html_response(conn, 200) =~ "New Media Profile"
|
||||
end
|
||||
|
||||
test "renders correct layout when onboarding", %{session_conn: session_conn} do
|
||||
session_conn =
|
||||
session_conn
|
||||
|> put_session(:onboarding, true)
|
||||
|> get(~p"/media_profiles/new")
|
||||
test "renders correct layout when onboarding", %{conn: conn} do
|
||||
Settings.set!(:onboarding, true)
|
||||
conn = get(conn, ~p"/media_profiles/new")
|
||||
|
||||
refute html_response(session_conn, 200) =~ "MENU"
|
||||
refute html_response(conn, 200) =~ "MENU"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -53,22 +58,18 @@ defmodule PinchflatWeb.MediaProfileControllerTest do
|
||||
assert html_response(conn, 200) =~ "New Media Profile"
|
||||
end
|
||||
|
||||
test "redirects to onboarding when onboarding", %{session_conn: session_conn} do
|
||||
session_conn =
|
||||
session_conn
|
||||
|> put_session(:onboarding, true)
|
||||
|> post(~p"/media_profiles", media_profile: @create_attrs)
|
||||
test "redirects to onboarding when onboarding", %{conn: conn} do
|
||||
Settings.set!(:onboarding, true)
|
||||
conn = post(conn, ~p"/media_profiles", media_profile: @create_attrs)
|
||||
|
||||
assert redirected_to(session_conn) == ~p"/?onboarding=1"
|
||||
assert redirected_to(conn) == ~p"/?onboarding=1"
|
||||
end
|
||||
|
||||
test "renders correct layout on error when onboarding", %{session_conn: session_conn} do
|
||||
session_conn =
|
||||
session_conn
|
||||
|> put_session(:onboarding, true)
|
||||
|> post(~p"/media_profiles", media_profile: @invalid_attrs)
|
||||
test "renders correct layout on error when onboarding", %{conn: conn} do
|
||||
Settings.set!(:onboarding, true)
|
||||
conn = post(conn, ~p"/media_profiles", media_profile: @invalid_attrs)
|
||||
|
||||
refute html_response(session_conn, 200) =~ "MENU"
|
||||
refute html_response(conn, 200) =~ "MENU"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -4,10 +4,12 @@ defmodule PinchflatWeb.PageControllerTest do
|
||||
import Pinchflat.ProfilesFixtures
|
||||
import Pinchflat.SourcesFixtures
|
||||
|
||||
alias Pinchflat.Settings
|
||||
|
||||
describe "GET / when testing onboarding" do
|
||||
test "sets the onboarding session to true when onboarding", %{conn: conn} do
|
||||
conn = get(conn, ~p"/")
|
||||
assert get_session(conn, :onboarding)
|
||||
_conn = get(conn, ~p"/")
|
||||
assert Settings.get!(:onboarding)
|
||||
end
|
||||
|
||||
test "displays the onboarding page when no media profiles exist", %{conn: conn} do
|
||||
@@ -32,13 +34,13 @@ defmodule PinchflatWeb.PageControllerTest do
|
||||
|
||||
test "sets the onboarding session to false when not onboarding", %{conn: conn} do
|
||||
conn = get(conn, ~p"/")
|
||||
assert get_session(conn, :onboarding)
|
||||
assert Settings.get!(:onboarding)
|
||||
|
||||
_ = media_profile_fixture()
|
||||
_ = source_fixture()
|
||||
|
||||
conn = get(conn, ~p"/")
|
||||
refute get_session(conn, :onboarding)
|
||||
_conn = get(conn, ~p"/")
|
||||
refute Settings.get!(:onboarding)
|
||||
end
|
||||
|
||||
test "displays the home page when not onboarding", %{conn: conn} do
|
||||
|
||||
@@ -7,9 +7,11 @@ defmodule PinchflatWeb.SourceControllerTest do
|
||||
import Pinchflat.ProfilesFixtures
|
||||
|
||||
alias Pinchflat.Repo
|
||||
alias Pinchflat.Settings
|
||||
|
||||
setup do
|
||||
media_profile = media_profile_fixture()
|
||||
Settings.set!(:onboarding, false)
|
||||
|
||||
{
|
||||
:ok,
|
||||
@@ -42,13 +44,11 @@ defmodule PinchflatWeb.SourceControllerTest do
|
||||
assert html_response(conn, 200) =~ "New Source"
|
||||
end
|
||||
|
||||
test "renders correct layout when onboarding", %{session_conn: session_conn} do
|
||||
session_conn =
|
||||
session_conn
|
||||
|> put_session(:onboarding, true)
|
||||
|> get(~p"/sources/new")
|
||||
test "renders correct layout when onboarding", %{conn: conn} do
|
||||
Settings.set!(:onboarding, true)
|
||||
conn = get(conn, ~p"/sources/new")
|
||||
|
||||
refute html_response(session_conn, 200) =~ "MENU"
|
||||
refute html_response(conn, 200) =~ "MENU"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -69,24 +69,20 @@ defmodule PinchflatWeb.SourceControllerTest do
|
||||
assert html_response(conn, 200) =~ "New Source"
|
||||
end
|
||||
|
||||
test "redirects to onboarding when onboarding", %{session_conn: session_conn, create_attrs: create_attrs} do
|
||||
test "redirects to onboarding when onboarding", %{conn: conn, create_attrs: create_attrs} do
|
||||
expect(YtDlpRunnerMock, :run, 1, &runner_function_mock/3)
|
||||
|
||||
session_conn =
|
||||
session_conn
|
||||
|> put_session(:onboarding, true)
|
||||
|> post(~p"/sources", source: create_attrs)
|
||||
Settings.set!(:onboarding, true)
|
||||
conn = post(conn, ~p"/sources", source: create_attrs)
|
||||
|
||||
assert redirected_to(session_conn) == ~p"/?onboarding=1"
|
||||
assert redirected_to(conn) == ~p"/?onboarding=1"
|
||||
end
|
||||
|
||||
test "renders correct layout on error when onboarding", %{session_conn: session_conn, invalid_attrs: invalid_attrs} do
|
||||
session_conn =
|
||||
session_conn
|
||||
|> put_session(:onboarding, true)
|
||||
|> post(~p"/sources", source: invalid_attrs)
|
||||
test "renders correct layout on error when onboarding", %{conn: conn, invalid_attrs: invalid_attrs} do
|
||||
Settings.set!(:onboarding, true)
|
||||
conn = post(conn, ~p"/sources", source: invalid_attrs)
|
||||
|
||||
refute html_response(session_conn, 200) =~ "MENU"
|
||||
refute html_response(conn, 200) =~ "MENU"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user