From b4bb0c8282fc157bb1480737e55f7a122685d198 Mon Sep 17 00:00:00 2001 From: codevictory Date: Tue, 15 Jun 2021 22:03:41 +0300 Subject: [PATCH] Survival instructions editable. --- lib/runosaari/pages.ex | 109 ++++++++++++++++++ lib/runosaari/pages/survival.ex | 18 +++ .../controllers/info_controller.ex | 13 ++- .../controllers/survival_controller.ex | 67 +++++++++++ lib/runosaari_web/router.ex | 2 + .../templates/index/edit.html.eex | 8 +- .../templates/info/admin.html.eex | 32 ++--- .../templates/info/edit.html.eex | 8 +- .../templates/info/index.html.eex | 16 +-- lib/runosaari_web/templates/info/new.html.eex | 4 +- .../templates/performance/edit.html.eex | 8 +- .../templates/performer/edit.html.eex | 8 +- .../templates/survival/admin.html.eex | 30 +++++ .../templates/survival/edit.html.eex | 7 ++ .../templates/survival/form.html.eex | 19 +++ .../templates/survival/new.html.eex | 5 + .../templates/survival/show.html.eex | 20 ++++ .../templates/visitor/edit.html.eex | 8 +- lib/runosaari_web/views/survival_view.ex | 3 + .../20210611213453_create_survival_items.exs | 13 +++ test/runosaari/pages_test.exs | 61 ++++++++++ .../controllers/info_controller_test.exs | 13 ++- .../controllers/survival_controller_test.exs | 93 +++++++++++++++ 23 files changed, 511 insertions(+), 54 deletions(-) create mode 100644 lib/runosaari/pages/survival.ex create mode 100644 lib/runosaari_web/controllers/survival_controller.ex create mode 100644 lib/runosaari_web/templates/survival/admin.html.eex create mode 100644 lib/runosaari_web/templates/survival/edit.html.eex create mode 100644 lib/runosaari_web/templates/survival/form.html.eex create mode 100644 lib/runosaari_web/templates/survival/new.html.eex create mode 100644 lib/runosaari_web/templates/survival/show.html.eex create mode 100644 lib/runosaari_web/views/survival_view.ex create mode 100644 priv/repo/migrations/20210611213453_create_survival_items.exs create mode 100644 test/runosaari_web/controllers/survival_controller_test.exs diff --git a/lib/runosaari/pages.ex b/lib/runosaari/pages.ex index f990501..3265281 100644 --- a/lib/runosaari/pages.ex +++ b/lib/runosaari/pages.ex @@ -223,4 +223,113 @@ defmodule Runosaari.Pages do def change_info(%Info{} = info, attrs \\ %{}) do Info.changeset(info, attrs) end + + alias Runosaari.Pages.Survival + + @doc """ + Returns the list of survival_items. + + ## Examples + + iex> list_survival_items() + [%Survival{}, ...] + + """ + def list_survival_items do + Repo.all(Survival) + end + + @doc """ + Returns the list of survival_items. + + ## Examples + + iex> list_survival_items() + [%Survival{}, ...] + + """ + def list_sorted_survival_items do + Repo.all(Survival |> order_by(:seqnum)) + end + + @doc """ + Gets a single survival. + + Raises `Ecto.NoResultsError` if the Survival does not exist. + + ## Examples + + iex> get_survival!(123) + %Survival{} + + iex> get_survival!(456) + ** (Ecto.NoResultsError) + + """ + def get_survival!(id), do: Repo.get!(Survival, id) + + @doc """ + Creates a survival. + + ## Examples + + iex> create_survival(%{field: value}) + {:ok, %Survival{}} + + iex> create_survival(%{field: bad_value}) + {:error, %Ecto.Changeset{}} + + """ + def create_survival(attrs \\ %{}) do + %Survival{} + |> Survival.changeset(attrs) + |> Repo.insert() + end + + @doc """ + Updates a survival. + + ## Examples + + iex> update_survival(survival, %{field: new_value}) + {:ok, %Survival{}} + + iex> update_survival(survival, %{field: bad_value}) + {:error, %Ecto.Changeset{}} + + """ + def update_survival(%Survival{} = survival, attrs) do + survival + |> Survival.changeset(attrs) + |> Repo.update() + end + + @doc """ + Deletes a survival. + + ## Examples + + iex> delete_survival(survival) + {:ok, %Survival{}} + + iex> delete_survival(survival) + {:error, %Ecto.Changeset{}} + + """ + def delete_survival(%Survival{} = survival) do + Repo.delete(survival) + end + + @doc """ + Returns an `%Ecto.Changeset{}` for tracking survival changes. + + ## Examples + + iex> change_survival(survival) + %Ecto.Changeset{data: %Survival{}} + + """ + def change_survival(%Survival{} = survival, attrs \\ %{}) do + Survival.changeset(survival, attrs) + end end diff --git a/lib/runosaari/pages/survival.ex b/lib/runosaari/pages/survival.ex new file mode 100644 index 0000000..95ec66d --- /dev/null +++ b/lib/runosaari/pages/survival.ex @@ -0,0 +1,18 @@ +defmodule Runosaari.Pages.Survival do + use Ecto.Schema + import Ecto.Changeset + + schema "survival_items" do + field :content, :string + field :seqnum, :integer + + timestamps() + end + + @doc false + def changeset(survival, attrs) do + survival + |> cast(attrs, [:content, :seqnum]) + |> validate_required([:content, :seqnum]) + end +end diff --git a/lib/runosaari_web/controllers/info_controller.ex b/lib/runosaari_web/controllers/info_controller.ex index d9f1699..54a266d 100644 --- a/lib/runosaari_web/controllers/info_controller.ex +++ b/lib/runosaari_web/controllers/info_controller.ex @@ -6,7 +6,16 @@ defmodule RunosaariWeb.InfoController do def index(conn, _params) do info_paragraphs = Pages.list_sorted_info_paragraphs() - render(conn, "index.html", info_paragraphs: info_paragraphs) + survival_items = Pages.list_sorted_survival_items() + + render( + conn, + "index.html", + Map.new( + info_paragraphs: info_paragraphs, + survival_items: survival_items + ) + ) end def admin(conn, _params) do @@ -21,7 +30,7 @@ defmodule RunosaariWeb.InfoController do def create(conn, %{"info" => info_params}) do case Pages.create_info(info_params) do - {:ok, info} -> + {:ok} -> conn |> put_flash(:info, "Info created successfully.") |> redirect(to: Routes.admin_info_path(conn, :admin)) diff --git a/lib/runosaari_web/controllers/survival_controller.ex b/lib/runosaari_web/controllers/survival_controller.ex new file mode 100644 index 0000000..9f88c74 --- /dev/null +++ b/lib/runosaari_web/controllers/survival_controller.ex @@ -0,0 +1,67 @@ +defmodule RunosaariWeb.SurvivalController do + use RunosaariWeb, :controller + + alias Runosaari.Pages + alias Runosaari.Pages.Survival + + def index(conn, _params) do + survival_items = Pages.list_survival_items() + render(conn, "admin.html", survival_items: survival_items) + end + + def admin(conn, _params) do + survival_items = Pages.list_survival_items() + render(conn, "admin.html", survival_items: survival_items) + end + + def new(conn, _params) do + changeset = Pages.change_survival(%Survival{}) + render(conn, "new.html", changeset: changeset) + end + + def create(conn, %{"survival" => survival_params}) do + case Pages.create_survival(survival_params) do + {:ok, survival} -> + conn + |> put_flash(:info, "Survival created successfully.") + |> redirect(to: Routes.admin_survival_path(conn, :show, survival)) + + {:error, %Ecto.Changeset{} = changeset} -> + render(conn, "new.html", changeset: changeset) + end + end + + def show(conn, %{"id" => id}) do + survival = Pages.get_survival!(id) + render(conn, "show.html", survival: survival) + end + + def edit(conn, %{"id" => id}) do + survival = Pages.get_survival!(id) + changeset = Pages.change_survival(survival) + render(conn, "edit.html", survival: survival, changeset: changeset) + end + + def update(conn, %{"id" => id, "survival" => survival_params}) do + survival = Pages.get_survival!(id) + + case Pages.update_survival(survival, survival_params) do + {:ok, survival} -> + conn + |> put_flash(:info, "Survival updated successfully.") + |> redirect(to: Routes.admin_survival_path(conn, :show, survival)) + + {:error, %Ecto.Changeset{} = changeset} -> + render(conn, "edit.html", survival: survival, changeset: changeset) + end + end + + def delete(conn, %{"id" => id}) do + survival = Pages.get_survival!(id) + {:ok, _survival} = Pages.delete_survival(survival) + + conn + |> put_flash(:info, "Survival deleted successfully.") + |> redirect(to: Routes.admin_survival_path(conn, :admin)) + end +end diff --git a/lib/runosaari_web/router.ex b/lib/runosaari_web/router.ex index d731bcb..4d1dde9 100644 --- a/lib/runosaari_web/router.ex +++ b/lib/runosaari_web/router.ex @@ -38,6 +38,8 @@ defmodule RunosaariWeb.Router do resources "/visitors", VisitorController, except: [:new, :create] resources "/info", InfoController, except: [:index] get "/info", InfoController, :admin + resources "/survival", SurvivalController, except: [:index] + get "/survival", SurvivalController, :admin end # Other scopes may use custom stacks. diff --git a/lib/runosaari_web/templates/index/edit.html.eex b/lib/runosaari_web/templates/index/edit.html.eex index 8463c1d..d6220ee 100644 --- a/lib/runosaari_web/templates/index/edit.html.eex +++ b/lib/runosaari_web/templates/index/edit.html.eex @@ -1,5 +1,7 @@ -

Muokkaa kappaletta

+
+

Muokkaa kappaletta

-<%= render "form.html", Map.put(assigns, :action, Routes.admin_index_path(@conn, :update, @index)) %> + <%= render "form.html", Map.put(assigns, :action, Routes.admin_index_path(@conn, :update, @index)) %> -<%= link "Takaisin", to: Routes.admin_index_path(@conn, :admin) %> + <%= link "Takaisin", to: Routes.admin_index_path(@conn, :admin) %> +
diff --git a/lib/runosaari_web/templates/info/admin.html.eex b/lib/runosaari_web/templates/info/admin.html.eex index 57eca6e..5f33902 100644 --- a/lib/runosaari_web/templates/info/admin.html.eex +++ b/lib/runosaari_web/templates/info/admin.html.eex @@ -2,28 +2,28 @@

HALLINTA - Infon kappaleet

- - - - + + + + - - - - + + + + <%= for info <- @info_paragraphs do %> - - + + - + <% end %> - +
SisältöPrioriteetti
SisältöPrioriteetti
<%= info.content %><%= info.seqnum %><%= info.content %><%= info.seqnum %> - <%= link "Lisätietoja", to: Routes.admin_info_path(@conn, :show, info) %> - <%= link "Muokkaa", to: Routes.admin_info_path(@conn, :edit, info) %> - <%= link "Poista", to: Routes.admin_info_path(@conn, :delete, info), method: :delete, data: [confirm: "Oletko varma?"] %> - + <%= link "Lisätietoja", to: Routes.admin_info_path(@conn, :show, info) %> + <%= link "Muokkaa", to: Routes.admin_info_path(@conn, :edit, info) %> + <%= link "Poista", to: Routes.admin_info_path(@conn, :delete, info), method: :delete, data: [confirm: "Oletko varma?"] %> +
<%= link "Uusi kappale", to: Routes.admin_info_path(@conn, :new) %> diff --git a/lib/runosaari_web/templates/info/edit.html.eex b/lib/runosaari_web/templates/info/edit.html.eex index 3912848..2b4f814 100644 --- a/lib/runosaari_web/templates/info/edit.html.eex +++ b/lib/runosaari_web/templates/info/edit.html.eex @@ -1,5 +1,7 @@ -

Muokkaa kappaletta

+
+

Muokkaa kappaletta

-<%= render "form.html", Map.put(assigns, :action, Routes.admin_info_path(@conn, :update, @info)) %> + <%= render "form.html", Map.put(assigns, :action, Routes.admin_info_path(@conn, :update, @info)) %> -<%= link "Takaisin", to: Routes.admin_info_path(@conn, :admin) %> + <%= link "Takaisin", to: Routes.admin_info_path(@conn, :admin) %> +
diff --git a/lib/runosaari_web/templates/info/index.html.eex b/lib/runosaari_web/templates/info/index.html.eex index 7d4fed0..0899231 100644 --- a/lib/runosaari_web/templates/info/index.html.eex +++ b/lib/runosaari_web/templates/info/index.html.eex @@ -18,18 +18,8 @@

[TULOSSA]
SURVIVAL-ohjeet saariston syrjäseudulle

diff --git a/lib/runosaari_web/templates/info/new.html.eex b/lib/runosaari_web/templates/info/new.html.eex index 981e05d..7a4fc83 100644 --- a/lib/runosaari_web/templates/info/new.html.eex +++ b/lib/runosaari_web/templates/info/new.html.eex @@ -1,5 +1,5 @@ -

New Info

+

Uusi info kappale

<%= render "form.html", Map.put(assigns, :action, Routes.admin_info_path(@conn, :create)) %> -<%= link "Back", to: Routes.admin_info_path(@conn, :admin) %> +<%= link "Takasin", to: Routes.admin_info_path(@conn, :admin) %> diff --git a/lib/runosaari_web/templates/performance/edit.html.eex b/lib/runosaari_web/templates/performance/edit.html.eex index de5d1ce..1e387ef 100644 --- a/lib/runosaari_web/templates/performance/edit.html.eex +++ b/lib/runosaari_web/templates/performance/edit.html.eex @@ -1,5 +1,7 @@ -

Muokkaa näytöksen tietoja

+
+

Muokkaa näytöksen tietoja

-<%= render "form.html", Map.put(assigns, :action, Routes.admin_performance_path(@conn, :update, @performance)) %> + <%= render "form.html", Map.put(assigns, :action, Routes.admin_performance_path(@conn, :update, @performance)) %> -<%= link "Takaisin", to: Routes.admin_performance_path(@conn, :admin) %> + <%= link "Takaisin", to: Routes.admin_performance_path(@conn, :admin) %> +
diff --git a/lib/runosaari_web/templates/performer/edit.html.eex b/lib/runosaari_web/templates/performer/edit.html.eex index dc534ce..38b2b39 100644 --- a/lib/runosaari_web/templates/performer/edit.html.eex +++ b/lib/runosaari_web/templates/performer/edit.html.eex @@ -1,5 +1,7 @@ -

Muokkaa esiintyjän tietoja

+
+

Muokkaa esiintyjän tietoja

-<%= render "form.html", Map.put(assigns, :action, Routes.admin_performer_path(@conn, :update, @performer)) %> + <%= render "form.html", Map.put(assigns, :action, Routes.admin_performer_path(@conn, :update, @performer)) %> -<%= link "Takaisin", to: Routes.admin_performer_path(@conn, :admin) %> + <%= link "Takaisin", to: Routes.admin_performer_path(@conn, :admin) %> +
diff --git a/lib/runosaari_web/templates/survival/admin.html.eex b/lib/runosaari_web/templates/survival/admin.html.eex new file mode 100644 index 0000000..c8b2da7 --- /dev/null +++ b/lib/runosaari_web/templates/survival/admin.html.eex @@ -0,0 +1,30 @@ +
+

HALLINTA - Survival listan kohdat

+ + + + + + + + + + + + <%= for survival <- @survival_items do %> + + + + + + + <% end %> + +
SisältöPriotiteetti
<%= survival.content %><%= survival.seqnum %> + <%= link "Lisätietoja", to: Routes.admin_survival_path(@conn, :show, survival) %> + <%= link "Muokkaa", to: Routes.admin_survival_path(@conn, :edit, survival) %> + <%= link "Poista", to: Routes.admin_survival_path(@conn, :delete, survival), method: :delete, data: [confirm: "Oletko varma?"] %> +
+ + <%= link "Luo uusi survival kohta", to: Routes.admin_survival_path(@conn, :new) %> +
diff --git a/lib/runosaari_web/templates/survival/edit.html.eex b/lib/runosaari_web/templates/survival/edit.html.eex new file mode 100644 index 0000000..443f00a --- /dev/null +++ b/lib/runosaari_web/templates/survival/edit.html.eex @@ -0,0 +1,7 @@ +
+

Muokkaa survival listan kohtaa

+ + <%= render "form.html", Map.put(assigns, :action, Routes.admin_survival_path(@conn, :update, @survival)) %> + + <%= link "Takaisin", to: Routes.admin_survival_path(@conn, :admin) %> +
diff --git a/lib/runosaari_web/templates/survival/form.html.eex b/lib/runosaari_web/templates/survival/form.html.eex new file mode 100644 index 0000000..a3f5ccc --- /dev/null +++ b/lib/runosaari_web/templates/survival/form.html.eex @@ -0,0 +1,19 @@ +<%= form_for @changeset, @action, fn f -> %> + <%= if @changeset.action do %> +
+

Joku kentistä on tyhjä.

+
+ <% end %> + + <%= label f, :content, "Sisältö" %> + <%= textarea f, :content %> + <%= error_tag f, :content %> + + <%= label f, :seqnum, "Prioritetti (1 on korkein)" %> + <%= number_input f, :seqnum %> + <%= error_tag f, :seqnum %> + +
+ <%= submit "Tallenna" %> +
+<% end %> diff --git a/lib/runosaari_web/templates/survival/new.html.eex b/lib/runosaari_web/templates/survival/new.html.eex new file mode 100644 index 0000000..e37c259 --- /dev/null +++ b/lib/runosaari_web/templates/survival/new.html.eex @@ -0,0 +1,5 @@ +

Uusi survival listan kohta

+ +<%= render "form.html", Map.put(assigns, :action, Routes.admin_survival_path(@conn, :create)) %> + +<%= link "Takaisin", to: Routes.admin_survival_path(@conn, :admin) %> diff --git a/lib/runosaari_web/templates/survival/show.html.eex b/lib/runosaari_web/templates/survival/show.html.eex new file mode 100644 index 0000000..d9fd20a --- /dev/null +++ b/lib/runosaari_web/templates/survival/show.html.eex @@ -0,0 +1,20 @@ +
+

Survival listan kohdan tiedot

+ + + + <%= link "Muokkaa", to: Routes.admin_survival_path(@conn, :edit, @survival) %> + <%= link "Takaisin", to: Routes.admin_survival_path(@conn, :admin) %> +
diff --git a/lib/runosaari_web/templates/visitor/edit.html.eex b/lib/runosaari_web/templates/visitor/edit.html.eex index e2f229e..55dea06 100644 --- a/lib/runosaari_web/templates/visitor/edit.html.eex +++ b/lib/runosaari_web/templates/visitor/edit.html.eex @@ -1,5 +1,7 @@ -

Muokkaa osallistujan tietoja

+
+

Muokkaa osallistujan tietoja

-<%= render "form.html", Map.put(assigns, :action, Routes.admin_visitor_path(@conn, :update, @visitor)) %> + <%= render "form.html", Map.put(assigns, :action, Routes.admin_visitor_path(@conn, :update, @visitor)) %> -<%= link "Takaisin", to: Routes.admin_visitor_path(@conn, :index) %> + <%= link "Takaisin", to: Routes.admin_visitor_path(@conn, :index) %> +
diff --git a/lib/runosaari_web/views/survival_view.ex b/lib/runosaari_web/views/survival_view.ex new file mode 100644 index 0000000..7ba0272 --- /dev/null +++ b/lib/runosaari_web/views/survival_view.ex @@ -0,0 +1,3 @@ +defmodule RunosaariWeb.SurvivalView do + use RunosaariWeb, :view +end diff --git a/priv/repo/migrations/20210611213453_create_survival_items.exs b/priv/repo/migrations/20210611213453_create_survival_items.exs new file mode 100644 index 0000000..fe7bf1e --- /dev/null +++ b/priv/repo/migrations/20210611213453_create_survival_items.exs @@ -0,0 +1,13 @@ +defmodule Runosaari.Repo.Migrations.CreateSurvivalItems do + use Ecto.Migration + + def change do + create table(:survival_items) do + add :content, :string, size: 3000 + add :seqnum, :integer + + timestamps() + end + + end +end diff --git a/test/runosaari/pages_test.exs b/test/runosaari/pages_test.exs index 3103098..c650413 100644 --- a/test/runosaari/pages_test.exs +++ b/test/runosaari/pages_test.exs @@ -124,4 +124,65 @@ defmodule Runosaari.PagesTest do assert %Ecto.Changeset{} = Pages.change_info(info) end end + + describe "survival_items" do + alias Runosaari.Pages.Survival + + @valid_attrs %{content: "some content", seqnum: 42} + @update_attrs %{content: "some updated content", seqnum: 43} + @invalid_attrs %{content: nil, seqnum: nil} + + def survival_fixture(attrs \\ %{}) do + {:ok, survival} = + attrs + |> Enum.into(@valid_attrs) + |> Pages.create_survival() + + survival + end + + test "list_survival_items/0 returns all survival_items" do + survival = survival_fixture() + assert Pages.list_survival_items() == [survival] + end + + test "get_survival!/1 returns the survival with given id" do + survival = survival_fixture() + assert Pages.get_survival!(survival.id) == survival + end + + test "create_survival/1 with valid data creates a survival" do + assert {:ok, %Survival{} = survival} = Pages.create_survival(@valid_attrs) + assert survival.content == "some content" + assert survival.seqnum == 42 + end + + test "create_survival/1 with invalid data returns error changeset" do + assert {:error, %Ecto.Changeset{}} = Pages.create_survival(@invalid_attrs) + end + + test "update_survival/2 with valid data updates the survival" do + survival = survival_fixture() + assert {:ok, %Survival{} = survival} = Pages.update_survival(survival, @update_attrs) + assert survival.content == "some updated content" + assert survival.seqnum == 43 + end + + test "update_survival/2 with invalid data returns error changeset" do + survival = survival_fixture() + assert {:error, %Ecto.Changeset{}} = Pages.update_survival(survival, @invalid_attrs) + assert survival == Pages.get_survival!(survival.id) + end + + test "delete_survival/1 deletes the survival" do + survival = survival_fixture() + assert {:ok, %Survival{}} = Pages.delete_survival(survival) + assert_raise Ecto.NoResultsError, fn -> Pages.get_survival!(survival.id) end + end + + test "change_survival/1 returns a survival changeset" do + survival = survival_fixture() + assert %Ecto.Changeset{} = Pages.change_survival(survival) + end + end end diff --git a/test/runosaari_web/controllers/info_controller_test.exs b/test/runosaari_web/controllers/info_controller_test.exs index 71dd058..e77b07d 100644 --- a/test/runosaari_web/controllers/info_controller_test.exs +++ b/test/runosaari_web/controllers/info_controller_test.exs @@ -15,14 +15,14 @@ defmodule RunosaariWeb.InfoControllerTest do describe "index" do test "lists all info_paragraphs", %{conn: conn} do conn = get(conn, Routes.info_path(conn, :index)) - assert html_response(conn, 200) =~ "Listing Info paragraphs" + assert html_response(conn, 200) =~ "Info" end end describe "new info" do test "renders form", %{conn: conn} do conn = get(conn, Routes.info_path(conn, :new)) - assert html_response(conn, 200) =~ "New Info" + assert html_response(conn, 200) =~ "Uusi info kappale" end end @@ -34,12 +34,12 @@ defmodule RunosaariWeb.InfoControllerTest do assert redirected_to(conn) == Routes.info_path(conn, :show, id) conn = get(conn, Routes.info_path(conn, :show, id)) - assert html_response(conn, 200) =~ "Show Info" + assert html_response(conn, 200) =~ "Kappaleen tiedot" end test "renders errors when data is invalid", %{conn: conn} do conn = post(conn, Routes.info_path(conn, :create), info: @invalid_attrs) - assert html_response(conn, 200) =~ "New Info" + assert html_response(conn, 200) =~ "Uusi info kappale" end end @@ -48,7 +48,7 @@ defmodule RunosaariWeb.InfoControllerTest do test "renders form for editing chosen info", %{conn: conn, info: info} do conn = get(conn, Routes.info_path(conn, :edit, info)) - assert html_response(conn, 200) =~ "Edit Info" + assert html_response(conn, 200) =~ "Muokkaa kappaletta" end end @@ -65,7 +65,7 @@ defmodule RunosaariWeb.InfoControllerTest do test "renders errors when data is invalid", %{conn: conn, info: info} do conn = put(conn, Routes.info_path(conn, :update, info), info: @invalid_attrs) - assert html_response(conn, 200) =~ "Edit Info" + assert html_response(conn, 200) =~ "Muokkaa kappaletta" end end @@ -75,6 +75,7 @@ defmodule RunosaariWeb.InfoControllerTest do test "deletes chosen info", %{conn: conn, info: info} do conn = delete(conn, Routes.info_path(conn, :delete, info)) assert redirected_to(conn) == Routes.info_path(conn, :index) + assert_error_sent 404, fn -> get(conn, Routes.info_path(conn, :show, info)) end diff --git a/test/runosaari_web/controllers/survival_controller_test.exs b/test/runosaari_web/controllers/survival_controller_test.exs new file mode 100644 index 0000000..89674f0 --- /dev/null +++ b/test/runosaari_web/controllers/survival_controller_test.exs @@ -0,0 +1,93 @@ +defmodule RunosaariWeb.SurvivalControllerTest do + use RunosaariWeb.ConnCase + + alias Runosaari.Pages + + @create_attrs %{content: "some content", seqnum: 42} + @update_attrs %{content: "some updated content", seqnum: 43} + @invalid_attrs %{content: nil, seqnum: nil} + + def fixture(:survival) do + {:ok, survival} = Pages.create_survival(@create_attrs) + survival + end + + describe "admin" do + test "lists all survival_items", %{conn: conn} do + conn = get(conn, Routes.admin_survival_path(conn, :admin)) + assert html_response(conn, 200) =~ "HALLINTA - Survival listan kohdat" + end + end + + describe "new survival" do + test "renders form", %{conn: conn} do + conn = get(conn, Routes.admin_survival_path(conn, :new)) + assert html_response(conn, 200) =~ "Uusi survival listan kohta" + end + end + + describe "create survival" do + test "redirects to show when data is valid", %{conn: conn} do + conn = post(conn, Routes.admin_survival_path(conn, :create), survival: @create_attrs) + + assert %{id: id} = redirected_params(conn) + assert redirected_to(conn) == Routes.admin_survival_path(conn, :show, id) + + conn = get(conn, Routes.admin_survival_path(conn, :show, id)) + assert html_response(conn, 200) =~ "Survival listan kohdan tiedot" + end + + test "renders errors when data is invalid", %{conn: conn} do + conn = post(conn, Routes.admin_survival_path(conn, :create), survival: @invalid_attrs) + assert html_response(conn, 200) =~ "Uusi survival listan kohta" + end + end + + describe "edit survival" do + setup [:create_survival] + + test "renders form for editing chosen survival", %{conn: conn, survival: survival} do + conn = get(conn, Routes.admin_survival_path(conn, :edit, survival)) + assert html_response(conn, 200) =~ "Muokkaa survival listan kohtaa" + end + end + + describe "update survival" do + setup [:create_survival] + + test "redirects when data is valid", %{conn: conn, survival: survival} do + conn = + put(conn, Routes.admin_survival_path(conn, :update, survival), survival: @update_attrs) + + assert redirected_to(conn) == Routes.admin_survival_path(conn, :show, survival) + + conn = get(conn, Routes.admin_survival_path(conn, :show, survival)) + assert html_response(conn, 200) =~ "some updated content" + end + + test "renders errors when data is invalid", %{conn: conn, survival: survival} do + conn = + put(conn, Routes.admin_survival_path(conn, :update, survival), survival: @invalid_attrs) + + assert html_response(conn, 200) =~ "Muokkaa survival listan kohtaa" + end + end + + describe "delete survival" do + setup [:create_survival] + + test "deletes chosen survival", %{conn: conn, survival: survival} do + conn = delete(conn, Routes.admin_survival_path(conn, :delete, survival)) + assert redirected_to(conn) == Routes.admin_survival_path(conn, :admin) + + assert_error_sent 404, fn -> + get(conn, Routes.admin_survival_path(conn, :show, survival)) + end + end + end + + defp create_survival(_) do + survival = fixture(:survival) + %{survival: survival} + end +end