mirror of
https://github.com/ash-project/ash_hq.git
synced 2024-09-17 03:43:39 +12:00
chore: fix credo
This commit is contained in:
parent
b6c1db1334
commit
7d48552a59
9 changed files with 41 additions and 125 deletions
|
@ -15,6 +15,7 @@
|
||||||
# {:my_arbitrary_tool, command: "npm test", cd: "assets"},
|
# {:my_arbitrary_tool, command: "npm test", cd: "assets"},
|
||||||
# {:my_arbitrary_script, command: ["my_script", "argument with spaces"], cd: "scripts"}
|
# {:my_arbitrary_script, command: ["my_script", "argument with spaces"], cd: "scripts"}
|
||||||
{:npm_test, false},
|
{:npm_test, false},
|
||||||
|
{:gettext, false},
|
||||||
{:check_migrations, command: "mix ash_postgres.generate_migrations --check"}
|
{:check_migrations, command: "mix ash_postgres.generate_migrations --check"}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,7 +3,7 @@ defmodule AshHq.Docs.Importer do
|
||||||
Builds the documentation into term files in the `priv/docs` directory.
|
Builds the documentation into term files in the `priv/docs` directory.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def import() do
|
def import do
|
||||||
AshOban.schedule_and_run_triggers(AshHq.Docs.Library)
|
AshOban.schedule_and_run_triggers(AshHq.Docs.Library)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
defmodule AshHq.Docs.Library.Actions.Import do
|
defmodule AshHq.Docs.Library.Actions.Import do
|
||||||
|
@moduledoc false
|
||||||
use Ash.Resource.ManualUpdate
|
use Ash.Resource.ManualUpdate
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
require Logger
|
require Logger
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
defmodule AshHq.Docs.Library.Preparations.FilterPendingImport do
|
defmodule AshHq.Docs.Library.Preparations.FilterPendingImport do
|
||||||
|
@moduledoc false
|
||||||
use Ash.Resource.Preparation
|
use Ash.Resource.Preparation
|
||||||
|
|
||||||
def prepare(query, _opts, _context) do
|
def prepare(query, _opts, _context) do
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
|
|
2
mix.lock
2
mix.lock
|
@ -5,7 +5,7 @@
|
||||||
"appsignal_phoenix": {:hex, :appsignal_phoenix, "2.3.5", "f2182960b1d51ca191baf96d977bc81032d6a8c0cde9be8802d8d47bb8f6d7d3", [:mix], [{:appsignal, ">= 2.7.6 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:appsignal_plug, ">= 2.0.15 and < 3.0.0", [hex: :appsignal_plug, repo: "hexpm", optional: false]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.11 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_live_view, "~> 0.9", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0493a01077b75d14f46798f4b57007a19bfb79c51ff06a4e389ff1c1aa0bf5cf"},
|
"appsignal_phoenix": {:hex, :appsignal_phoenix, "2.3.5", "f2182960b1d51ca191baf96d977bc81032d6a8c0cde9be8802d8d47bb8f6d7d3", [:mix], [{:appsignal, ">= 2.7.6 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:appsignal_plug, ">= 2.0.15 and < 3.0.0", [hex: :appsignal_plug, repo: "hexpm", optional: false]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.11 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_live_view, "~> 0.9", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0493a01077b75d14f46798f4b57007a19bfb79c51ff06a4e389ff1c1aa0bf5cf"},
|
||||||
"appsignal_plug": {:hex, :appsignal_plug, "2.0.15", "758a8a78944878e8461bbc77ca86219121a56f4299c6d79940ab083cf9afea00", [:mix], [{:appsignal, ">= 2.7.6 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:plug, ">= 1.1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1c6059049e2081e808aaef04e2b9917e06277f61a35a0e103db860d08cbc41f1"},
|
"appsignal_plug": {:hex, :appsignal_plug, "2.0.15", "758a8a78944878e8461bbc77ca86219121a56f4299c6d79940ab083cf9afea00", [:mix], [{:appsignal, ">= 2.7.6 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:plug, ">= 1.1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1c6059049e2081e808aaef04e2b9917e06277f61a35a0e103db860d08cbc41f1"},
|
||||||
"ash": {:hex, :ash, "3.0.0-rc.7", "f72a64fba1acdce7016984fe9cdf5e3ed856939fb14611d0c168e9971fe9bbed", [:mix], [{:comparable, "~> 1.0", [hex: :comparable, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.8", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.1.7 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 0.6", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b6edc89cd39ec68bd765bfea271df011b20ab86f181cfab59ef6159e3a1577b4"},
|
"ash": {:hex, :ash, "3.0.0-rc.7", "f72a64fba1acdce7016984fe9cdf5e3ed856939fb14611d0c168e9971fe9bbed", [:mix], [{:comparable, "~> 1.0", [hex: :comparable, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.8", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.1.7 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 0.6", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b6edc89cd39ec68bd765bfea271df011b20ab86f181cfab59ef6159e3a1577b4"},
|
||||||
"ash_admin": {:hex, :ash_admin, "0.10.10-rc.0", "01a7f0e042c1529d955cd4d09a1c4e72c91bc72efdeb7fdb7a20897a9633c8aa", [:mix], [{:ash, "~> 3.0.0-rc.0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_phoenix, "~> 2.0-rc.0", [hex: :ash_phoenix, repo: "hexpm", optional: false]}, {:ash_postgres, "~> 2.0-rc.0", [hex: :ash_postgres, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.7", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:tails, "~> 0.1", [hex: :tails, repo: "hexpm", optional: false]}], "hexpm", "acd01523bf3089a26169d7699030c3810e2fd5bdd1fc6191003d264c710f4fc6"},
|
"ash_admin": {:hex, :ash_admin, "0.10.10-rc.1", "504089c1c2417034d4c5f1305da5d4270039d82ff44d762153cd217f9a714116", [:mix], [{:ash, "~> 3.0.0-rc.0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_phoenix, "~> 2.0-rc.0", [hex: :ash_phoenix, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.7", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:tails, "~> 0.1", [hex: :tails, repo: "hexpm", optional: false]}], "hexpm", "2522f151c15fa7f60aedc1b6256e4e70178ed15ce20787ae989aebbdea498dfd"},
|
||||||
"ash_appsignal": {:hex, :ash_appsignal, "0.1.2", "a6eb1927a13c11006aad0d9ffaa011143344dd04c9b07ab94f459498b8ddc6d4", [:mix], [{:appsignal, "~> 2.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:ash, ">= 2.14.14", [hex: :ash, repo: "hexpm", optional: false]}], "hexpm", "dae3158337d2a36b76f04519ebe6d08ef5296823831993cef6069eeb879c5b94"},
|
"ash_appsignal": {:hex, :ash_appsignal, "0.1.2", "a6eb1927a13c11006aad0d9ffaa011143344dd04c9b07ab94f459498b8ddc6d4", [:mix], [{:appsignal, "~> 2.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:ash, ">= 2.14.14", [hex: :ash, repo: "hexpm", optional: false]}], "hexpm", "dae3158337d2a36b76f04519ebe6d08ef5296823831993cef6069eeb879c5b94"},
|
||||||
"ash_blog": {:git, "https://github.com/ash-project/ash_blog.git", "d65161ba519f977c82f8cb45df160b079f357c7e", []},
|
"ash_blog": {:git, "https://github.com/ash-project/ash_blog.git", "d65161ba519f977c82f8cb45df160b079f357c7e", []},
|
||||||
"ash_csv": {:hex, :ash_csv, "0.9.7-rc.0", "b7b2528851b408f7fefea45165e04b1e52e754cea90d0bf27e1ad0b39bfc26cb", [:mix], [{:ash, "~> 3.0.0-rc.0", [hex: :ash, repo: "hexpm", optional: false]}, {:csv, "~> 3.0", [hex: :csv, repo: "hexpm", optional: false]}], "hexpm", "77233b3fcbdceafe1a18e8cd515f6dd91653e470f381d837196f0cf41ea8546e"},
|
"ash_csv": {:hex, :ash_csv, "0.9.7-rc.0", "b7b2528851b408f7fefea45165e04b1e52e754cea90d0bf27e1ad0b39bfc26cb", [:mix], [{:ash, "~> 3.0.0-rc.0", [hex: :ash, repo: "hexpm", optional: false]}, {:csv, "~> 3.0", [hex: :csv, repo: "hexpm", optional: false]}], "hexpm", "77233b3fcbdceafe1a18e8cd515f6dd91653e470f381d837196f0cf41ea8546e"},
|
||||||
|
|
27
priv/repo/migrations/20240403011834_install_5_extensions.exs
Normal file
27
priv/repo/migrations/20240403011834_install_5_extensions.exs
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
defmodule AshHq.Repo.Migrations.Install5Extensions20240403011833 do
|
||||||
|
@moduledoc """
|
||||||
|
Installs any extensions that are mentioned in the repo's `installed_extensions/0` callback
|
||||||
|
|
||||||
|
This file was autogenerated with `mix ash_postgres.generate_migrations`
|
||||||
|
"""
|
||||||
|
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def up do
|
||||||
|
execute("CREATE EXTENSION IF NOT EXISTS \"pg_trgm\"")
|
||||||
|
execute("CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"")
|
||||||
|
execute("CREATE EXTENSION IF NOT EXISTS \"citext\"")
|
||||||
|
execute("CREATE EXTENSION IF NOT EXISTS \"pg_stat_statements\"")
|
||||||
|
execute("CREATE EXTENSION IF NOT EXISTS \"sslinfo\"")
|
||||||
|
end
|
||||||
|
|
||||||
|
def down do
|
||||||
|
# Uncomment this if you actually want to uninstall the extensions
|
||||||
|
# when this migration is rolled back:
|
||||||
|
# execute("DROP EXTENSION IF EXISTS \"pg_trgm\"")
|
||||||
|
# execute("DROP EXTENSION IF EXISTS \"uuid-ossp\"")
|
||||||
|
# execute("DROP EXTENSION IF EXISTS \"citext\"")
|
||||||
|
# execute("DROP EXTENSION IF EXISTS \"pg_stat_statements\"")
|
||||||
|
# execute("DROP EXTENSION IF EXISTS \"sslinfo\"")
|
||||||
|
end
|
||||||
|
end
|
9
priv/resource_snapshots/repo/extensions.json
Normal file
9
priv/resource_snapshots/repo/extensions.json
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"installed": [
|
||||||
|
"pg_trgm",
|
||||||
|
"uuid-ossp",
|
||||||
|
"citext",
|
||||||
|
"pg_stat_statements",
|
||||||
|
"sslinfo"
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,122 +0,0 @@
|
||||||
defmodule AshHq.SettingsTest do
|
|
||||||
use AshHqWeb.ConnCase
|
|
||||||
|
|
||||||
import Phoenix.ConnTest
|
|
||||||
import Phoenix.LiveViewTest
|
|
||||||
|
|
||||||
@endpoint AshHqWeb.Endpoint
|
|
||||||
|
|
||||||
setup :register_and_log_in_user
|
|
||||||
|
|
||||||
describe "change email form" do
|
|
||||||
test "renders", %{conn: conn} do
|
|
||||||
{:ok, _view, html} = live(conn, "/users/settings")
|
|
||||||
|
|
||||||
assert html =~ "Update Email"
|
|
||||||
end
|
|
||||||
|
|
||||||
test "submission shows a flash message", %{conn: conn} do
|
|
||||||
{:ok, view, _html} = live(conn, "/users/settings")
|
|
||||||
|
|
||||||
assert {:ok, _view, html} =
|
|
||||||
view
|
|
||||||
|> element("form#update_email")
|
|
||||||
|> render_submit(%{
|
|
||||||
update_email: %{email: "new_email@example.com", current_password: "password123"}
|
|
||||||
})
|
|
||||||
|> follow_redirect(conn)
|
|
||||||
|
|
||||||
assert html =~ "Check your email"
|
|
||||||
end
|
|
||||||
|
|
||||||
test "submission sends an email but does not change the email", %{conn: conn, user: user} do
|
|
||||||
{:ok, view, _html} = live(conn, "/users/settings")
|
|
||||||
|
|
||||||
view
|
|
||||||
|> element("form#update_email")
|
|
||||||
|> render_submit(%{
|
|
||||||
update_email: %{email: "new_email@example.com", current_password: "password123"}
|
|
||||||
})
|
|
||||||
|
|
||||||
assert_received {:email, email}
|
|
||||||
|
|
||||||
assert email.subject == "Confirm Your Email Change"
|
|
||||||
new_user = AshHq.Accounts.reload!(user, authorize?: false)
|
|
||||||
assert new_user.email == user.email
|
|
||||||
end
|
|
||||||
|
|
||||||
test "following the link in the email changes the email", %{conn: conn, user: user} do
|
|
||||||
{:ok, view, _html} = live(conn, "/users/settings")
|
|
||||||
|
|
||||||
view
|
|
||||||
|> element("form#update_email")
|
|
||||||
|> render_submit(%{
|
|
||||||
update_email: %{email: "new_email@example.com", current_password: "password123"}
|
|
||||||
})
|
|
||||||
|
|
||||||
assert_received {:email, email}
|
|
||||||
|
|
||||||
assert %{"url" => url} = Regex.named_captures(~r/(?<url>http[^\s\"]*)/, email.html_body)
|
|
||||||
|
|
||||||
uri = URI.parse(url)
|
|
||||||
|
|
||||||
path = %{uri | authority: nil, host: nil, scheme: nil, port: nil} |> to_string()
|
|
||||||
|
|
||||||
assert {:ok, _conn} = conn |> live(path) |> follow_redirect(conn, "/")
|
|
||||||
|
|
||||||
new_user = AshHq.Accounts.reload!(user, authorize?: false)
|
|
||||||
assert to_string(new_user.email) == "new_email@example.com"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "change_password" do
|
|
||||||
test "renders", %{conn: conn} do
|
|
||||||
{:ok, _view, html} = live(conn, "/users/settings")
|
|
||||||
|
|
||||||
assert html =~ "Change Password"
|
|
||||||
end
|
|
||||||
|
|
||||||
test "submission shows a flash message", %{conn: conn} do
|
|
||||||
{:ok, view, _html} = live(conn, "/users/settings")
|
|
||||||
|
|
||||||
assert {:ok, _view, html} =
|
|
||||||
view
|
|
||||||
|> element("form#change_password")
|
|
||||||
|> render_submit(%{
|
|
||||||
change_password: %{
|
|
||||||
password: "hello world2!",
|
|
||||||
password_confirmation: "hello world2!",
|
|
||||||
current_password: "password123"
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|> follow_redirect(conn)
|
|
||||||
|
|
||||||
assert html =~ "Password has been successfully changed"
|
|
||||||
end
|
|
||||||
|
|
||||||
test "submission changes the password", %{conn: conn, user: user} do
|
|
||||||
{:ok, view, _html} = live(conn, "/users/settings")
|
|
||||||
|
|
||||||
assert {:ok, _view, html} =
|
|
||||||
view
|
|
||||||
|> element("form#change_password")
|
|
||||||
|> render_submit(%{
|
|
||||||
change_password: %{
|
|
||||||
password: "hello world2!",
|
|
||||||
password_confirmation: "hello world2!",
|
|
||||||
current_password: "password123"
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|> follow_redirect(conn)
|
|
||||||
|
|
||||||
assert html =~ "Password has been successfully changed"
|
|
||||||
|
|
||||||
assert AshHq.Accounts.User
|
|
||||||
|> Ash.Query.for_read(:sign_in_with_password, %{
|
|
||||||
email: user.email,
|
|
||||||
password: "hello world2!"
|
|
||||||
})
|
|
||||||
|> AshHq.Accounts.read_one!(authorize?: false)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in a new issue