fix credo

This commit is contained in:
shibao 2022-03-28 23:05:12 -04:00
parent 34288a0070
commit a2d1ff9b89
27 changed files with 67 additions and 64 deletions

View File

@ -157,17 +157,17 @@
# #
# Controversial and experimental checks (opt-in, just replace `false` with `[]`) # Controversial and experimental checks (opt-in, just replace `false` with `[]`)
# #
{Credo.Check.Consistency.MultiAliasImportRequireUse, false}, {Credo.Check.Consistency.MultiAliasImportRequireUse, []},
{Credo.Check.Consistency.UnusedVariableNames, false}, {Credo.Check.Consistency.UnusedVariableNames, [force: :meaningful]},
{Credo.Check.Design.DuplicatedCode, false}, {Credo.Check.Design.DuplicatedCode, false},
{Credo.Check.Readability.AliasAs, false}, {Credo.Check.Readability.AliasAs, false},
{Credo.Check.Readability.BlockPipe, false}, {Credo.Check.Readability.BlockPipe, false},
{Credo.Check.Readability.ImplTrue, false}, {Credo.Check.Readability.ImplTrue, false},
{Credo.Check.Readability.MultiAlias, false}, {Credo.Check.Readability.MultiAlias, false},
{Credo.Check.Readability.SeparateAliasRequire, false}, {Credo.Check.Readability.SeparateAliasRequire, []},
{Credo.Check.Readability.SinglePipe, false}, {Credo.Check.Readability.SinglePipe, false},
{Credo.Check.Readability.Specs, false}, {Credo.Check.Readability.Specs, false},
{Credo.Check.Readability.StrictModuleLayout, false}, {Credo.Check.Readability.StrictModuleLayout, []},
{Credo.Check.Readability.WithCustomTaggedTuple, false}, {Credo.Check.Readability.WithCustomTaggedTuple, false},
{Credo.Check.Refactor.ABCSize, false}, {Credo.Check.Refactor.ABCSize, false},
{Credo.Check.Refactor.AppendSingleItem, false}, {Credo.Check.Refactor.AppendSingleItem, false},
@ -176,9 +176,9 @@
{Credo.Check.Refactor.NegatedIsNil, false}, {Credo.Check.Refactor.NegatedIsNil, false},
{Credo.Check.Refactor.PipeChainStart, false}, {Credo.Check.Refactor.PipeChainStart, false},
{Credo.Check.Refactor.VariableRebinding, false}, {Credo.Check.Refactor.VariableRebinding, false},
{Credo.Check.Warning.LeakyEnvironment, false}, {Credo.Check.Warning.LeakyEnvironment, []},
{Credo.Check.Warning.MapGetUnsafePass, false}, {Credo.Check.Warning.MapGetUnsafePass, []},
{Credo.Check.Warning.UnsafeToAtom, false} {Credo.Check.Warning.UnsafeToAtom, []}
# #
# Custom checks can be created using `mix credo.gen.check`. # Custom checks can be created using `mix credo.gen.check`.

View File

@ -196,7 +196,7 @@ defmodule Cannery.Accounts do
{:ok, _} <- Repo.transaction(user_email_multi(user, email, context)) do {:ok, _} <- Repo.transaction(user_email_multi(user, email, context)) do
:ok :ok
else else
_ -> :error _error_tuple -> :error
end end
end end
@ -265,7 +265,7 @@ defmodule Cannery.Accounts do
|> Repo.transaction() |> Repo.transaction()
|> case do |> case do
{:ok, %{user: user}} -> {:ok, user} {:ok, %{user: user}} -> {:ok, user}
{:error, :user, changeset, _} -> {:error, changeset} {:error, :user, changeset, _changes_so_far} -> {:error, changeset}
end end
end end
@ -372,7 +372,7 @@ defmodule Cannery.Accounts do
{:ok, %{user: user}} <- Repo.transaction(confirm_user_multi(user)) do {:ok, %{user: user}} <- Repo.transaction(confirm_user_multi(user)) do
{:ok, user} {:ok, user}
else else
_ -> :error _error_tuple -> :error
end end
end end
@ -420,7 +420,7 @@ defmodule Cannery.Accounts do
%User{} = user <- Repo.one(query) do %User{} = user <- Repo.one(query) do
user user
else else
_ -> nil _error_tuple -> nil
end end
end end
@ -444,7 +444,7 @@ defmodule Cannery.Accounts do
|> Repo.transaction() |> Repo.transaction()
|> case do |> case do
{:ok, %{user: user}} -> {:ok, user} {:ok, %{user: user}} -> {:ok, user}
{:error, :user, changeset, _} -> {:error, changeset} {:error, :user, changeset, _changes_so_far} -> {:error, changeset}
end end
end end
end end

View File

@ -171,7 +171,7 @@ defmodule Cannery.Accounts.User do
Bcrypt.verify_pass(password, hashed_password) Bcrypt.verify_pass(password, hashed_password)
end end
def valid_password?(_, _) do def valid_password?(_invalid_user, _invalid_password) do
Bcrypt.no_user_verify() Bcrypt.no_user_verify()
false false
end end

View File

@ -308,7 +308,7 @@ defmodule Cannery.Ammo do
def get_used_count(%AmmoGroup{} = ammo_group) do def get_used_count(%AmmoGroup{} = ammo_group) do
ammo_group ammo_group
|> Repo.preload(:shot_groups) |> Repo.preload(:shot_groups)
|> Map.get(:shot_groups) |> Map.fetch!(:shot_groups)
|> Enum.map(fn %{count: count} -> count end) |> Enum.map(fn %{count: count} -> count end)
|> Enum.sum() |> Enum.sum()
end end

View File

@ -215,7 +215,7 @@ defmodule Cannery.Containers do
def get_container_rounds!(%Container{} = container) do def get_container_rounds!(%Container{} = container) do
container container
|> Repo.preload(:ammo_groups) |> Repo.preload(:ammo_groups)
|> Map.get(:ammo_groups) |> Map.fetch!(:ammo_groups)
|> Enum.map(fn %{count: count} -> count end) |> Enum.map(fn %{count: count} -> count end)
|> Enum.sum() |> Enum.sum()
end end

View File

@ -9,7 +9,7 @@ defmodule Cannery.Release do
def rollback(repo, version) do def rollback(repo, version) do
load_app() load_app()
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version)) {:ok, _fun, _opts} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
end end
defp load_app do defp load_app do
@ -20,7 +20,7 @@ defmodule Cannery.Release do
load_app() load_app()
for repo <- Application.fetch_env!(@app, :ecto_repos) do for repo <- Application.fetch_env!(@app, :ecto_repos) do
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true)) {:ok, _fun, _opts} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
end end
end end
end end

View File

@ -6,11 +6,11 @@ defmodule Cannery.Repo.Migrator do
use GenServer use GenServer
require Logger require Logger
def start_link(_) do def start_link(_opts) do
GenServer.start_link(__MODULE__, [], []) GenServer.start_link(__MODULE__, [], [])
end end
def init(_) do def init(_opts) do
migrate!() migrate!()
{:ok, nil} {:ok, nil}
end end

View File

@ -71,6 +71,7 @@ defmodule CanneryWeb do
quote do quote do
use Phoenix.Router use Phoenix.Router
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import Plug.Conn import Plug.Conn
import Phoenix.Controller import Phoenix.Controller
import Phoenix.LiveView.Router import Phoenix.LiveView.Router
@ -79,7 +80,9 @@ defmodule CanneryWeb do
def channel do def channel do
quote do quote do
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
use Phoenix.Channel use Phoenix.Channel
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import CanneryWeb.Gettext import CanneryWeb.Gettext
end end
end end
@ -87,14 +90,18 @@ defmodule CanneryWeb do
defp view_helpers do defp view_helpers do
quote do quote do
# Use all HTML functionality (forms, tags, etc) # Use all HTML functionality (forms, tags, etc)
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
use Phoenix.HTML use Phoenix.HTML
# Import LiveView and .heex helpers (live_render, live_patch, <.form>, etc) # Import LiveView and .heex helpers (live_render, live_patch, <.form>, etc)
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import Phoenix.LiveView.Helpers import Phoenix.LiveView.Helpers
# Import basic rendering functionality (render, render_layout, etc) # Import basic rendering functionality (render, render_layout, etc)
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import Phoenix.View import Phoenix.View
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import CanneryWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers} import CanneryWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers}
alias CanneryWeb.Router.Helpers, as: Routes alias CanneryWeb.Router.Helpers, as: Routes
end end

View File

@ -44,7 +44,7 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
@impl true @impl true
def handle_event( def handle_event(
"delete", "delete",
_, _params,
%{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket %{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket
) do ) do
ammo_group |> Ammo.delete_ammo_group!(current_user) ammo_group |> Ammo.delete_ammo_group!(current_user)
@ -58,7 +58,7 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
@impl true @impl true
def handle_event( def handle_event(
"toggle_staged", "toggle_staged",
_, _params,
%{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket %{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket
) do ) do
{:ok, ammo_group} = {:ok, ammo_group} =

View File

@ -14,7 +14,7 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
end end
@impl true @impl true
def handle_params(%{"id" => id}, _, %{assigns: %{current_user: current_user}} = socket) do def handle_params(%{"id" => id}, _params, %{assigns: %{current_user: current_user}} = socket) do
ammo_type = Ammo.get_ammo_type!(id, current_user) ammo_type = Ammo.get_ammo_type!(id, current_user)
socket = socket =
@ -32,7 +32,7 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
@impl true @impl true
def handle_event( def handle_event(
"delete", "delete",
_, _params,
%{assigns: %{ammo_type: ammo_type, current_user: current_user}} = socket %{assigns: %{ammo_type: ammo_type, current_user: current_user}} = socket
) do ) do
%{name: ammo_type_name} = ammo_type |> Ammo.delete_ammo_type!(current_user) %{name: ammo_type_name} = ammo_type |> Ammo.delete_ammo_type!(current_user)

View File

@ -18,7 +18,7 @@ defmodule CanneryWeb.ContainerLive.Show do
@impl true @impl true
def handle_params( def handle_params(
%{"id" => id}, %{"id" => id},
_, _session,
%{assigns: %{current_user: current_user}} = socket %{assigns: %{current_user: current_user}} = socket
) do ) do
{:noreply, socket |> render_container(id, current_user)} {:noreply, socket |> render_container(id, current_user)}
@ -53,7 +53,7 @@ defmodule CanneryWeb.ContainerLive.Show do
@impl true @impl true
def handle_event( def handle_event(
"delete_container", "delete_container",
_, _params,
%{assigns: %{container: container, current_user: current_user}} = socket %{assigns: %{container: container, current_user: current_user}} = socket
) do ) do
socket = socket =

View File

@ -29,7 +29,7 @@ defmodule CanneryWeb.HomeLive do
%{^query => vsn} -> %{^query => vsn} ->
{:noreply, redirect(socket, external: "https://hexdocs.pm/#{query}/#{vsn}")} {:noreply, redirect(socket, external: "https://hexdocs.pm/#{query}/#{vsn}")}
_ -> _no_query ->
{:noreply, {:noreply,
socket socket
|> put_flash(:error, "No dependencies found matching \"#{query}\"") |> put_flash(:error, "No dependencies found matching \"#{query}\"")

View File

@ -119,7 +119,7 @@ defmodule CanneryWeb.InviteLive.Index do
end end
@impl true @impl true
def handle_event("copy_to_clipboard", _, socket) do def handle_event("copy_to_clipboard", _params, socket) do
prompt = dgettext("prompts", "Copied to clipboard") prompt = dgettext("prompts", "Copied to clipboard")
{:noreply, socket |> put_flash(:info, prompt)} {:noreply, socket |> put_flash(:info, prompt)}
end end

View File

@ -2,7 +2,6 @@ defmodule CanneryWeb.EmailView do
@moduledoc """ @moduledoc """
A view for email-related helper functions A view for email-related helper functions
""" """
alias CanneryWeb.{Endpoint, HomeLive}
use CanneryWeb, :view use CanneryWeb, :view
alias CanneryWeb.{Endpoint, HomeLive}
end end

View File

@ -8,7 +8,7 @@ defmodule CanneryWeb.ErrorView do
case error_path do case error_path do
"404.html" -> dgettext("errors", "Not found") "404.html" -> dgettext("errors", "Not found")
"401.html" -> dgettext("errors", "Unauthorized") "401.html" -> dgettext("errors", "Unauthorized")
_ -> dgettext("errors", "Internal Server Error") _other_template -> dgettext("errors", "Internal Server Error")
end end
render("error.html", %{error_string: error_string}) render("error.html", %{error_string: error_string})

View File

@ -304,9 +304,9 @@ defmodule Cannery.AccountsTest do
end end
test "deletes all tokens for the given user", %{user: user} do test "deletes all tokens for the given user", %{user: user} do
_ = Accounts.generate_user_session_token(user) _token = Accounts.generate_user_session_token(user)
{:ok, _} = {:ok, _user} =
Accounts.update_user_password(user, valid_user_password(), %{ Accounts.update_user_password(user, valid_user_password(), %{
"password" => "new valid password" "password" => "new valid password"
}) })
@ -501,8 +501,8 @@ defmodule Cannery.AccountsTest do
end end
test "deletes all tokens for the given user", %{user: user} do test "deletes all tokens for the given user", %{user: user} do
_ = Accounts.generate_user_session_token(user) _token = Accounts.generate_user_session_token(user)
{:ok, _} = Accounts.reset_user_password(user, %{"password" => "new valid password"}) {:ok, _user} = Accounts.reset_user_password(user, %{"password" => "new valid password"})
refute Repo.get_by(UserToken, user_id: user.id) refute Repo.get_by(UserToken, user_id: user.id)
end end
end end

View File

@ -116,7 +116,7 @@ defmodule CanneryWeb.UserAuthTest do
end end
test "does not authenticate if data is missing", %{conn: conn, current_user: current_user} do test "does not authenticate if data is missing", %{conn: conn, current_user: current_user} do
_ = Accounts.generate_user_session_token(current_user) _token = Accounts.generate_user_session_token(current_user)
conn = UserAuth.fetch_current_user(conn, []) conn = UserAuth.fetch_current_user(conn, [])
refute get_session(conn, :user_token) refute get_session(conn, :user_token)
refute conn.assigns.current_user refute conn.assigns.current_user

View File

@ -5,8 +5,7 @@ defmodule CanneryWeb.UserConfirmationControllerTest do
use CanneryWeb.ConnCase, async: true use CanneryWeb.ConnCase, async: true
import CanneryWeb.Gettext import CanneryWeb.Gettext
alias Cannery.Accounts alias Cannery.{Accounts, Repo}
alias Cannery.Repo
@moduletag :user_confirmation_controller_test @moduletag :user_confirmation_controller_test

View File

@ -51,7 +51,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
# |> form("#ammo_group-form", ammo_group: @invalid_attrs) # |> form("#ammo_group-form", ammo_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_group-form", ammo_group: @create_attrs) |> form("#ammo_group-form", ammo_group: @create_attrs)
|> render_submit() |> render_submit()
@ -75,7 +75,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
# |> form("#ammo_group-form", ammo_group: @invalid_attrs) # |> form("#ammo_group-form", ammo_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_group-form", |> form("#ammo_group-form",
ammo_group: @create_attrs |> Map.put("multiplier", to_string(multiplier)) ammo_group: @create_attrs |> Map.put("multiplier", to_string(multiplier))
@ -135,7 +135,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
# |> form("#shot_group-form", shot_group: @invalid_attrs) # |> form("#shot_group-form", shot_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "is invalid") # |> render_change() =~ dgettext("errors", "is invalid")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#shot-group-form", shot_group: @shot_group_create_attrs) |> form("#shot-group-form", shot_group: @shot_group_create_attrs)
|> render_submit() |> render_submit()
@ -158,7 +158,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
# |> form("#ammo_group-form", ammo_group: @invalid_attrs) # |> form("#ammo_group-form", ammo_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_group-form", ammo_group: @update_attrs) |> form("#ammo_group-form", ammo_group: @update_attrs)
|> render_submit() |> render_submit()
@ -204,7 +204,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
# |> form("#ammo_group-form", ammo_group: @invalid_attrs) # |> form("#ammo_group-form", ammo_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
show_live show_live
|> form("#ammo_group-form", ammo_group: @update_attrs) |> form("#ammo_group-form", ammo_group: @update_attrs)
|> render_submit() |> render_submit()
@ -226,7 +226,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
# |> form("#shot_group-form", shot_group: @invalid_attrs) # |> form("#shot_group-form", shot_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "is invalid") # |> render_change() =~ dgettext("errors", "is invalid")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#shot-group-form", shot_group: @shot_group_create_attrs) |> form("#shot-group-form", shot_group: @shot_group_create_attrs)
|> render_submit() |> render_submit()
@ -251,7 +251,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
# |> form("#shot_group-form", shot_group: @invalid_attrs) # |> form("#shot_group-form", shot_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "is invalid") # |> render_change() =~ dgettext("errors", "is invalid")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#shot-group-form", shot_group: @shot_group_update_attrs) |> form("#shot-group-form", shot_group: @shot_group_update_attrs)
|> render_submit() |> render_submit()

View File

@ -62,7 +62,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
# |> form("#ammo_type-form", ammo_type: @invalid_attrs) # |> form("#ammo_type-form", ammo_type: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_type-form", ammo_type: @create_attrs) |> form("#ammo_type-form", ammo_type: @create_attrs)
|> render_submit() |> render_submit()
@ -86,7 +86,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
# |> form("#ammo_type-form", ammo_type: @invalid_attrs) # |> form("#ammo_type-form", ammo_type: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_type-form", ammo_type: @update_attrs) |> form("#ammo_type-form", ammo_type: @update_attrs)
|> render_submit() |> render_submit()
@ -128,7 +128,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
# |> form("#ammo_type-form", ammo_type: @invalid_attrs) # |> form("#ammo_type-form", ammo_type: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
show_live show_live
|> form("#ammo_type-form", ammo_type: @update_attrs) |> form("#ammo_type-form", ammo_type: @update_attrs)
|> render_submit() |> render_submit()

View File

@ -52,7 +52,7 @@ defmodule CanneryWeb.ContainerLiveTest do
# |> form("#container-form", container: @invalid_attrs) # |> form("#container-form", container: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#container-form", container: @create_attrs) |> form("#container-form", container: @create_attrs)
|> render_submit() |> render_submit()
@ -78,7 +78,7 @@ defmodule CanneryWeb.ContainerLiveTest do
# |> form("#container-form", container: @invalid_attrs) # |> form("#container-form", container: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#container-form", container: @update_attrs) |> form("#container-form", container: @update_attrs)
|> render_submit() |> render_submit()
@ -123,7 +123,7 @@ defmodule CanneryWeb.ContainerLiveTest do
# |> form("#container-form", container: @invalid_attrs) # |> form("#container-form", container: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
show_live show_live
|> form("#container-form", container: @update_attrs) |> form("#container-form", container: @update_attrs)
|> render_submit() |> render_submit()

View File

@ -40,7 +40,7 @@ defmodule CanneryWeb.InviteLiveTest do
# |> form("#invite-form", invite: @invalid_attrs) # |> form("#invite-form", invite: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#invite-form", invite: @create_attrs) |> form("#invite-form", invite: @create_attrs)
|> render_submit() |> render_submit()
@ -63,7 +63,7 @@ defmodule CanneryWeb.InviteLiveTest do
# |> form("#invite-form", invite: @invalid_attrs) # |> form("#invite-form", invite: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#invite-form", invite: @update_attrs) |> form("#invite-form", invite: @update_attrs)
|> render_submit() |> render_submit()

View File

@ -49,7 +49,7 @@ defmodule CanneryWeb.RangeLiveTest do
# |> form("#shot_group-form", shot_group: @invalid_attrs) # |> form("#shot_group-form", shot_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "is invalid") # |> render_change() =~ dgettext("errors", "is invalid")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#shot-group-form", shot_group: @create_attrs) |> form("#shot-group-form", shot_group: @create_attrs)
|> render_submit() |> render_submit()
@ -71,7 +71,7 @@ defmodule CanneryWeb.RangeLiveTest do
# |> form("#shot_group-form", shot_group: @invalid_attrs) # |> form("#shot_group-form", shot_group: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "is invalid") # |> render_change() =~ dgettext("errors", "is invalid")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#shot-group-form", shot_group: @update_attrs) |> form("#shot-group-form", shot_group: @update_attrs)
|> render_submit() |> render_submit()

View File

@ -53,7 +53,7 @@ defmodule CanneryWeb.TagLiveTest do
# |> form("#tag-form", tag: @invalid_attrs) # |> form("#tag-form", tag: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#tag-form", tag: @create_attrs) |> form("#tag-form", tag: @create_attrs)
|> render_submit() |> render_submit()
@ -75,7 +75,7 @@ defmodule CanneryWeb.TagLiveTest do
# |> form("#tag-form", tag: @invalid_attrs) # |> form("#tag-form", tag: @invalid_attrs)
# |> render_change() =~ dgettext("errors", "can't be blank") # |> render_change() =~ dgettext("errors", "can't be blank")
{:ok, _, html} = {:ok, _view, html} =
index_live index_live
|> form("#tag-form", tag: @update_attrs) |> form("#tag-form", tag: @update_attrs)
|> render_submit() |> render_submit()

View File

@ -5,12 +5,11 @@ defmodule CanneryWeb.ErrorViewTest do
use CanneryWeb.ConnCase, async: true use CanneryWeb.ConnCase, async: true
import CanneryWeb.Gettext import CanneryWeb.Gettext
@moduletag :error_view_test
# Bring render/3 and render_to_string/3 for testing custom views # Bring render/3 and render_to_string/3 for testing custom views
import Phoenix.View import Phoenix.View
@moduletag :error_view_test
test "renders 404.html" do test "renders 404.html" do
assert render_to_string(CanneryWeb.ErrorView, "404.html", []) =~ assert render_to_string(CanneryWeb.ErrorView, "404.html", []) =~
dgettext("errors", "Not found") dgettext("errors", "Not found")

View File

@ -25,6 +25,7 @@ defmodule CanneryWeb.ConnCase do
# Import conveniences for testing with connections # Import conveniences for testing with connections
import Plug.Conn import Plug.Conn
import Phoenix.ConnTest import Phoenix.ConnTest
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import Cannery.Fixtures import Cannery.Fixtures
import CanneryWeb.ConnCase import CanneryWeb.ConnCase

View File

@ -22,10 +22,8 @@ defmodule Cannery.DataCase do
alias Cannery.Repo alias Cannery.Repo
import Ecto import Ecto
import Ecto.Changeset import Ecto.{Changeset, Query}
import Ecto.Query import Cannery.{DataCase, Fixtures}
import Cannery.DataCase
import Cannery.Fixtures
end end
end end
@ -45,7 +43,7 @@ defmodule Cannery.DataCase do
""" """
def errors_on(changeset) do def errors_on(changeset) do
Ecto.Changeset.traverse_errors(changeset, fn {message, opts} -> Ecto.Changeset.traverse_errors(changeset, fn {message, opts} ->
Regex.replace(~r"%{(\w+)}", message, fn _, key -> Regex.replace(~r"%{(\w+)}", message, fn _content, key ->
opts |> Keyword.get(String.to_existing_atom(key), key) |> to_string() opts |> Keyword.get(String.to_existing_atom(key), key) |> to_string()
end) end)
end) end)