diff --git a/config/runtime.exs b/config/runtime.exs index d30ee3c..b187ab6 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -83,8 +83,10 @@ if config_env() == :prod do username: System.get_env("SMTP_USERNAME"), password: System.get_env("SMTP_PASSWORD"), ssl: System.get_env("SMTP_SSL", "true") == "true", - tls: String.to_atom(System.get_env("SMTP_TLS", "always")), # always, never, if_available - auth: String.to_atom(System.get_env("SMTP_AUTH", "always")), # always, never, if_available + # always, never, if_available + tls: String.to_atom(System.get_env("SMTP_TLS", "always")), + # always, never, if_available + auth: String.to_atom(System.get_env("SMTP_AUTH", "always")), port: String.to_integer(System.get_env("SMTP_PORT", "25")) end diff --git a/lib/claper/accounts.ex b/lib/claper/accounts.ex index e977033..fa59fd5 100644 --- a/lib/claper/accounts.ex +++ b/lib/claper/accounts.ex @@ -410,9 +410,11 @@ defmodule Claper.Accounts do Ecto.Multi.new() |> Ecto.Multi.run(:run, fn repo, _changes -> user = repo.get_by(User, email: token.sent_to) - if (is_nil(user)) do + + if is_nil(user) do UserNotifier.deliver_welcome(token.sent_to) end + {:ok, user || %User{email: token.sent_to}} end) |> Ecto.Multi.insert_or_update(:user, fn %{run: user} -> User.confirm_changeset(user) end) diff --git a/lib/claper/accounts/user.ex b/lib/claper/accounts/user.ex index 13186bb..18c4f6f 100644 --- a/lib/claper/accounts/user.ex +++ b/lib/claper/accounts/user.ex @@ -111,5 +111,4 @@ defmodule Claper.Accounts.User do add_error(changeset, :current_password, "is not valid") end end - end diff --git a/lib/claper/accounts/user_notifier.ex b/lib/claper/accounts/user_notifier.ex index 0094b1c..d5edd97 100644 --- a/lib/claper/accounts/user_notifier.ex +++ b/lib/claper/accounts/user_notifier.ex @@ -19,6 +19,7 @@ defmodule Claper.Accounts.UserNotifier do def deliver_magic_link(email, url) do email = ClaperWeb.Notifiers.UserNotifier.magic(email, url) + with {:ok, _metadata} <- Mailer.deliver(email) do {:ok, email} end @@ -26,6 +27,7 @@ defmodule Claper.Accounts.UserNotifier do def deliver_welcome(email) do email = ClaperWeb.Notifiers.UserNotifier.welcome(email) + with {:ok, _metadata} <- Mailer.deliver(email) do {:ok, email} end @@ -76,6 +78,7 @@ defmodule Claper.Accounts.UserNotifier do """ def deliver_update_email_instructions(user, url) do email = ClaperWeb.Notifiers.UserNotifier.update_email(user, url) + with {:ok, _metadata} <- Mailer.deliver(email) do {:ok, email} end diff --git a/lib/claper/events.ex b/lib/claper/events.ex index 779a006..f235aa8 100644 --- a/lib/claper/events.ex +++ b/lib/claper/events.ex @@ -95,7 +95,10 @@ defmodule Claper.Events do """ def get_managed_event!(current_user, id, preload \\ []) do event = Repo.get_by!(Event, uuid: id) - is_leader = Claper.Events.is_leaded_by(current_user.email, event) || event.user_id == current_user.id + + is_leader = + Claper.Events.is_leaded_by(current_user.email, event) || event.user_id == current_user.id + if is_leader do event |> Repo.preload(preload) else diff --git a/lib/claper/polls.ex b/lib/claper/polls.ex index ffff02b..95fa974 100644 --- a/lib/claper/polls.ex +++ b/lib/claper/polls.ex @@ -166,8 +166,7 @@ defmodule Claper.Polls do {:error, changeset} -> {:error, %{changeset | action: :update}} - end - + end end @doc """ @@ -306,7 +305,6 @@ defmodule Claper.Polls do {:ok, poll} end - @doc """ Gets a single poll_vote. diff --git a/lib/claper/posts.ex b/lib/claper/posts.ex index 314f47a..94f4419 100644 --- a/lib/claper/posts.ex +++ b/lib/claper/posts.ex @@ -176,6 +176,7 @@ defmodule Claper.Posts do """ def create_reaction(%{post: nil} = attrs), do: create_reaction(%{attrs | post: %Post{}}) + def create_reaction(%{post: post} = attrs) do case %Reaction{} |> Map.put(:post_id, post.id) diff --git a/lib/claper/posts/post.ex b/lib/claper/posts/post.ex index 3da80e4..959c23a 100644 --- a/lib/claper/posts/post.ex +++ b/lib/claper/posts/post.ex @@ -22,9 +22,16 @@ defmodule Claper.Posts.Post do @doc false def changeset(post, attrs) do post - |> cast(attrs, [:body, :attendee_identifier, :user_id, :like_count, :love_count, :lol_count, :position]) + |> cast(attrs, [ + :body, + :attendee_identifier, + :user_id, + :like_count, + :love_count, + :lol_count, + :position + ]) |> validate_required([:body, :position]) |> validate_length(:body, min: 2, max: 250) end - end diff --git a/lib/claper/presentations/presentation_state.ex b/lib/claper/presentations/presentation_state.ex index 3e97242..4e16779 100644 --- a/lib/claper/presentations/presentation_state.ex +++ b/lib/claper/presentations/presentation_state.ex @@ -17,7 +17,14 @@ defmodule Claper.Presentations.PresentationState do @doc false def changeset(presentation_state, attrs) do presentation_state - |> cast(attrs, [:position, :chat_visible, :poll_visible, :join_screen_visible, :banned, :presentation_file_id]) + |> cast(attrs, [ + :position, + :chat_visible, + :poll_visible, + :join_screen_visible, + :banned, + :presentation_file_id + ]) |> validate_required([]) end end diff --git a/lib/claper/tasks/converter.ex b/lib/claper/tasks/converter.ex index c1ab806..016fbf3 100644 --- a/lib/claper/tasks/converter.ex +++ b/lib/claper/tasks/converter.ex @@ -47,13 +47,14 @@ defmodule Claper.Tasks.Converter do IO.puts("Clearing #{hash}...") if System.get_env("PRESENTATION_STORAGE", "local") == "local" do - File.rm_rf(Path.join([ - :code.priv_dir(:claper), - "static", - "uploads", - "#{hash}" - ])) - + File.rm_rf( + Path.join([ + :code.priv_dir(:claper), + "static", + "uploads", + "#{hash}" + ]) + ) else stream = ExAws.S3.list_objects(System.get_env("AWS_PRES_BUCKET"), prefix: "presentations/#{hash}") @@ -115,28 +116,27 @@ defmodule Claper.Tasks.Converter do end defp jpg_upload(%Result{status: 0}, hash, path, presentation, user_id) do - files = Path.wildcard("#{path}/*.jpg") # assign new hash to avoid cache issues new_hash = :erlang.phash2("#{hash}-#{System.system_time(:second)}") if System.get_env("PRESENTATION_STORAGE", "local") == "local" do - - File.rename(Path.join([ - :code.priv_dir(:claper), - "static", - "uploads", - "#{hash}" - ]), Path.join([ - :code.priv_dir(:claper), - "static", - "uploads", - "#{new_hash}" - ])) - + File.rename( + Path.join([ + :code.priv_dir(:claper), + "static", + "uploads", + "#{hash}" + ]), + Path.join([ + :code.priv_dir(:claper), + "static", + "uploads", + "#{new_hash}" + ]) + ) else - for f <- files do IO.puts("Uploads #{f} to presentations/#{new_hash}/#{Path.basename(f)}") @@ -149,7 +149,6 @@ defmodule Claper.Tasks.Converter do ) |> ExAws.request() end - end if !is_nil(presentation.hash) do diff --git a/lib/claper_web/channels/presence.ex b/lib/claper_web/channels/presence.ex index 52c9fa5..ee26b65 100644 --- a/lib/claper_web/channels/presence.ex +++ b/lib/claper_web/channels/presence.ex @@ -5,6 +5,7 @@ defmodule ClaperWeb.Presence do See the [`Phoenix.Presence`](http://hexdocs.pm/phoenix/Phoenix.Presence.html) docs for more details. """ - use Phoenix.Presence, otp_app: :claper, - pubsub_server: Claper.PubSub + use Phoenix.Presence, + otp_app: :claper, + pubsub_server: Claper.PubSub end diff --git a/lib/claper_web/controllers/post_controller.ex b/lib/claper_web/controllers/post_controller.ex index ecf721d..1130697 100644 --- a/lib/claper_web/controllers/post_controller.ex +++ b/lib/claper_web/controllers/post_controller.ex @@ -4,29 +4,31 @@ defmodule ClaperWeb.PostController do def index(conn, %{"event_id" => event_id}) do try do with event <- Claper.Events.get_event!(event_id), - posts <- Claper.Posts.list_posts(event.uuid, [:user, :attendee]) do + posts <- Claper.Posts.list_posts(event.uuid, [:user, :attendee]) do render(conn, "index.json", posts: posts) end rescue - Ecto.NoResultsError -> conn - |> put_status(:not_found) - |> put_view(ClaperWeb.ErrorView) - |> render(:"404") + Ecto.NoResultsError -> + conn + |> put_status(:not_found) + |> put_view(ClaperWeb.ErrorView) + |> render(:"404") end end + def create(conn, %{"event_id" => event_id, "body" => body}) do try do with event <- Claper.Events.get_event!(event_id) do case Claper.Posts.create_post(event, %{body: body}) do {:ok, post} -> render(conn, "post.json", post: post) end - end rescue - Ecto.NoResultsError -> conn - |> put_status(:not_found) - |> put_view(ClaperWeb.ErrorView) - |> render(:"404") + Ecto.NoResultsError -> + conn + |> put_status(:not_found) + |> put_view(ClaperWeb.ErrorView) + |> render(:"404") end end end diff --git a/lib/claper_web/controllers/user_auth.ex b/lib/claper_web/controllers/user_auth.ex index f40c51f..653462a 100644 --- a/lib/claper_web/controllers/user_auth.ex +++ b/lib/claper_web/controllers/user_auth.ex @@ -133,7 +133,7 @@ defmodule ClaperWeb.UserAuth do conn else conn - #|> redirect(to: Routes.user_registration_path(conn, :confirm)) + # |> redirect(to: Routes.user_registration_path(conn, :confirm)) end else conn diff --git a/lib/claper_web/controllers/user_session_controller.ex b/lib/claper_web/controllers/user_session_controller.ex index c13516a..c6485e0 100644 --- a/lib/claper_web/controllers/user_session_controller.ex +++ b/lib/claper_web/controllers/user_session_controller.ex @@ -9,12 +9,12 @@ defmodule ClaperWeb.UserSessionController do |> render("new.html", error_message: nil) end - #def create(conn, %{"user" => %{"email" => email}} = _user_params) do + # def create(conn, %{"user" => %{"email" => email}} = _user_params) do # Accounts.deliver_magic_link(email, &Routes.user_confirmation_url(conn, :confirm_magic, &1)) # conn # |> redirect(to: Routes.user_registration_path(conn, :confirm, %{email: email})) - #end + # end def create(conn, %{"user" => user_params}) do %{"email" => email, "password" => password} = user_params diff --git a/lib/claper_web/live/event_live/form_component.ex b/lib/claper_web/live/event_live/form_component.ex index 0562fd3..20bea65 100644 --- a/lib/claper_web/live/event_live/form_component.ex +++ b/lib/claper_web/live/event_live/form_component.ex @@ -153,7 +153,6 @@ defmodule ClaperWeb.EventLive.FormComponent do end defp create_event(socket, event_params, hash, ext) do - case Events.create_event( event_params |> Map.put("user_id", socket.assigns.current_user.id) diff --git a/lib/claper_web/live/event_live/index.ex b/lib/claper_web/live/event_live/index.ex index f31ae11..4685058 100644 --- a/lib/claper_web/live/event_live/index.ex +++ b/lib/claper_web/live/event_live/index.ex @@ -90,5 +90,4 @@ defmodule ClaperWeb.EventLive.Index do defp list_managed_events(socket) do Events.list_managed_events_by(socket.assigns.current_user.email, [:presentation_file]) end - end diff --git a/lib/claper_web/live/event_live/show.ex b/lib/claper_web/live/event_live/show.ex index 500e11d..476fcb1 100644 --- a/lib/claper_web/live/event_live/show.ex +++ b/lib/claper_web/live/event_live/show.ex @@ -88,7 +88,6 @@ defmodule ClaperWeb.EventLive.Show do {:ok, socket |> assign(:empty_room, Enum.count(socket.assigns.posts) == 0), temporary_assigns: [posts: []]} - end defp leader_list(socket, event) do diff --git a/lib/claper_web/live/live_helpers.ex b/lib/claper_web/live/live_helpers.ex index 318dc1d..7124ae5 100644 --- a/lib/claper_web/live/live_helpers.ex +++ b/lib/claper_web/live/live_helpers.ex @@ -20,5 +20,4 @@ defmodule ClaperWeb.LiveHelpers do modal_opts = [id: :modal, return_to: path, component: component, opts: opts] live_component(ClaperWeb.ModalComponent, modal_opts) end - end diff --git a/lib/claper_web/live/stat_live/index.ex b/lib/claper_web/live/stat_live/index.ex index 33dd434..040806f 100644 --- a/lib/claper_web/live/stat_live/index.ex +++ b/lib/claper_web/live/stat_live/index.ex @@ -23,15 +23,18 @@ defmodule ClaperWeb.StatLive.Index do socket |> assign(:event, event) |> assign( - :distinct_poster_count, - distinct_poster_count - ) + :distinct_poster_count, + distinct_poster_count + ) |> assign( :grouped_total_votes, grouped_total_votes ) |> assign(:average_voters, average_voters(grouped_total_votes)) - |> assign(:engagement_rate, calculate_engagement_rate(grouped_total_votes, distinct_poster_count, event)) + |> assign( + :engagement_rate, + calculate_engagement_rate(grouped_total_votes, distinct_poster_count, event) + ) |> assign(:posts, list_posts(socket, event.uuid))} end @@ -49,9 +52,16 @@ defmodule ClaperWeb.StatLive.Index do total_polls = Enum.count(grouped_total_votes) if total_polls == 0 do - (distinct_poster_count/event.audience_peak) * 100 |> Float.round |> :erlang.float_to_binary(decimals: 0) |> :erlang.binary_to_integer + (distinct_poster_count / event.audience_peak * 100) + |> Float.round() + |> :erlang.float_to_binary(decimals: 0) + |> :erlang.binary_to_integer() else - (((distinct_poster_count/event.audience_peak) + (average_voters(grouped_total_votes))/event.audience_peak) / 2) * 100 |> Float.round |> :erlang.float_to_binary(decimals: 0) |> :erlang.binary_to_integer + ((distinct_poster_count / event.audience_peak + + average_voters(grouped_total_votes) / event.audience_peak) / 2 * 100) + |> Float.round() + |> :erlang.float_to_binary(decimals: 0) + |> :erlang.binary_to_integer() end end @@ -61,9 +71,11 @@ defmodule ClaperWeb.StatLive.Index do if total_polls == 0 do 0 else - (Enum.sum(grouped_total_votes)/total_polls) |> Float.round |> :erlang.float_to_binary(decimals: 0) |> :erlang.binary_to_integer + (Enum.sum(grouped_total_votes) / total_polls) + |> Float.round() + |> :erlang.float_to_binary(decimals: 0) + |> :erlang.binary_to_integer() end - end defp list_posts(_socket, event_id) do diff --git a/lib/claper_web/notifiers/user_notifier.ex b/lib/claper_web/notifiers/user_notifier.ex index 6208ebf..1fbbe84 100644 --- a/lib/claper_web/notifiers/user_notifier.ex +++ b/lib/claper_web/notifiers/user_notifier.ex @@ -5,7 +5,10 @@ defmodule ClaperWeb.Notifiers.UserNotifier do def magic(email, url) do new() |> to(email) - |> from({System.get_env("MAIL_FROM_NAME", "Claper"), System.get_env("MAIL_FROM", "noreply@claper.co")}) + |> from( + {System.get_env("MAIL_FROM_NAME", "Claper"), + System.get_env("MAIL_FROM", "noreply@claper.co")} + ) |> subject(gettext("Connect to Claper")) |> render_body("magic.html", %{url: url}) end @@ -13,7 +16,10 @@ defmodule ClaperWeb.Notifiers.UserNotifier do def welcome(email) do new() |> to(email) - |> from({System.get_env("MAIL_FROM_NAME", "Claper"), System.get_env("MAIL_FROM", "noreply@claper.co")}) + |> from( + {System.get_env("MAIL_FROM_NAME", "Claper"), + System.get_env("MAIL_FROM", "noreply@claper.co")} + ) |> subject(gettext("Next steps to boost your presentations")) |> render_body("welcome.html", %{email: email}) end @@ -21,7 +27,10 @@ defmodule ClaperWeb.Notifiers.UserNotifier do def update_email(user, url) do new() |> to(user.email) - |> from({System.get_env("MAIL_FROM_NAME", "Claper"), System.get_env("MAIL_FROM", "noreply@claper.co")}) + |> from( + {System.get_env("MAIL_FROM_NAME", "Claper"), + System.get_env("MAIL_FROM", "noreply@claper.co")} + ) |> subject(gettext("Update email instructions")) |> render_body("change.html", %{user: user, url: url}) end diff --git a/lib/claper_web/plugs/locale.ex b/lib/claper_web/plugs/locale.ex index b9f40cb..339e48a 100644 --- a/lib/claper_web/plugs/locale.ex +++ b/lib/claper_web/plugs/locale.ex @@ -4,9 +4,11 @@ defmodule ClaperWeb.Plugs.Locale do def init(_opts), do: nil def call(conn, _opts) do - known_locales = Gettext.known_locales(ClaperWeb.Gettext) - accepted_languages = extract_accept_language(conn) |> Enum.reject(&String.length(&1) > 2 && not Enum.member?(known_locales, &1)) + + accepted_languages = + extract_accept_language(conn) + |> Enum.reject(&(String.length(&1) > 2 && not Enum.member?(known_locales, &1))) case accepted_languages do [locale | _] -> diff --git a/lib/claper_web/router.ex b/lib/claper_web/router.ex index 901911c..3d9c0ef 100644 --- a/lib/claper_web/router.ex +++ b/lib/claper_web/router.ex @@ -88,8 +88,8 @@ defmodule ClaperWeb.Router do # node running the Phoenix server. if Mix.env() == :dev || System.get_env("ENABLE_MAILBOX_ROUTE", "false") == "true" do scope "/dev" do - - if System.get_env("MAILBOX_USER") && System.get_env("MAILBOX_PASSWORD") && System.get_env("ENABLE_MAILBOX_ROUTE", "false") == "true" do + if System.get_env("MAILBOX_USER") && System.get_env("MAILBOX_PASSWORD") && + System.get_env("ENABLE_MAILBOX_ROUTE", "false") == "true" do pipe_through [:browser, :protect_with_basic_auth] else pipe_through [:browser] @@ -142,5 +142,4 @@ defmodule ClaperWeb.Router do password = System.fetch_env!("MAILBOX_PASSWORD") Plug.BasicAuth.basic_auth(conn, username: username, password: password) end - end diff --git a/lib/claper_web/views/components/alert_component.ex b/lib/claper_web/views/components/alert_component.ex index 65b14b9..b41ce18 100644 --- a/lib/claper_web/views/components/alert_component.ex +++ b/lib/claper_web/views/components/alert_component.ex @@ -5,6 +5,7 @@ defmodule ClaperWeb.Component.Alert do assigns = assigns |> assign_new(:stick, fn -> false end) + ~H"""
@@ -27,6 +28,7 @@ defmodule ClaperWeb.Component.Alert do assigns = assigns |> assign_new(:stick, fn -> false end) + ~H"""
@@ -45,5 +47,4 @@ defmodule ClaperWeb.Component.Alert do
""" end - end diff --git a/lib/claper_web/views/layout_view.ex b/lib/claper_web/views/layout_view.ex index 11f0f2d..b2f4eee 100644 --- a/lib/claper_web/views/layout_view.ex +++ b/lib/claper_web/views/layout_view.ex @@ -7,6 +7,7 @@ defmodule ClaperWeb.LayoutView do def active_class(conn, path) do current_path = Path.join(["/" | conn.path_info]) + if path == current_path do "bg-gray-900 text-white" else @@ -23,21 +24,28 @@ defmodule ClaperWeb.LayoutView do end def active_link(%Plug.Conn{} = conn, text, opts) do - class = [opts[:class], active_class(conn, opts[:to])] - |> Enum.filter(& &1) - |> Enum.join(" ") - opts = opts - |> Keyword.put(:class, class) + class = + [opts[:class], active_class(conn, opts[:to])] + |> Enum.filter(& &1) + |> Enum.join(" ") + + opts = + opts + |> Keyword.put(:class, class) + link(text, opts) end def active_link(%Phoenix.LiveView.Socket{} = conn, text, opts) do - class = [opts[:class], active_live_class(conn, opts[:to])] - |> Enum.filter(& &1) - |> Enum.join(" ") - opts = opts - |> Keyword.put(:class, class) + class = + [opts[:class], active_live_class(conn, opts[:to])] + |> Enum.filter(& &1) + |> Enum.join(" ") + + opts = + opts + |> Keyword.put(:class, class) + live_patch(text, opts) end - end diff --git a/lib/claper_web/views/user_view.ex b/lib/claper_web/views/user_view.ex index 80d7acd..5f1a526 100644 --- a/lib/claper_web/views/user_view.ex +++ b/lib/claper_web/views/user_view.ex @@ -1,7 +1,6 @@ defmodule ClaperWeb.UserView do use ClaperWeb, :view - def render("user.json", %{user: user}) do %{ uuid: user.uuid, diff --git a/lib/utils/file_upload.ex b/lib/utils/file_upload.ex index 48f8101..fd8c4eb 100644 --- a/lib/utils/file_upload.ex +++ b/lib/utils/file_upload.ex @@ -1,13 +1,21 @@ defmodule Utils.FileUpload do - import Mogrify def upload(type, path, old_path) when is_atom(type) do remove_old_file(old_path) - dest = Path.join([:code.priv_dir(:claper), "static", "uploads", Atom.to_string(type), Path.basename(path)]) + + dest = + Path.join([ + :code.priv_dir(:claper), + "static", + "uploads", + Atom.to_string(type), + Path.basename(path) + ]) + open(path) |> resize_to_fill("100x100") |> save(in_place: true) File.cp!(path, dest) - "/uploads/#{Atom.to_string(type)}/#{Path.basename(dest)}" + "/uploads/#{Atom.to_string(type)}/#{Path.basename(dest)}" end defp remove_old_file(old_path) do diff --git a/lib/utils/pagination.ex b/lib/utils/pagination.ex index e69de29..8b13789 100644 --- a/lib/utils/pagination.ex +++ b/lib/utils/pagination.ex @@ -0,0 +1 @@ + diff --git a/mix.exs b/mix.exs index 0df22d5..26935ef 100644 --- a/mix.exs +++ b/mix.exs @@ -28,7 +28,6 @@ defmodule Claper.MixProject do "guides/introduction/configuration.md", "guides/introduction/installation.md", "guides/introduction/storage.md", - "guides/usage/features.md", "guides/usage/howto.md" ], @@ -48,19 +47,19 @@ defmodule Claper.MixProject do ~r/ClaperWeb\.UserReset\.?/, ~r/ClaperWeb\.Attendee\.?/, ~r/ClaperWeb\.UserAuth\.?/, - ~r/ClaperWeb\.UserView\.?/, + ~r/ClaperWeb\.UserView\.?/ ], - "Events": [ + Events: [ ~r/Claper\.Event\.?/, - ~r/ClaperWeb\.Event\.?/, + ~r/ClaperWeb\.Event\.?/ ], - "Polls": [ + Polls: [ ~r/Claper\.Polls\.?/, - ~r/ClaperWeb\.Poll\.?/, + ~r/ClaperWeb\.Poll\.?/ ], - "Posts": [ + Posts: [ ~r/Claper\.Posts\.?/, - ~r/ClaperWeb\.Post\.?/, + ~r/ClaperWeb\.Post\.?/ ] ] ] diff --git a/test/claper/accounts_test.exs b/test/claper/accounts_test.exs index d05fa05..f54377a 100644 --- a/test/claper/accounts_test.exs +++ b/test/claper/accounts_test.exs @@ -107,8 +107,7 @@ defmodule Claper.AccountsTest do end test "validates email", %{user: user} do - {:error, changeset} = - Accounts.apply_user_email(user, %{email: "not valid"}) + {:error, changeset} = Accounts.apply_user_email(user, %{email: "not valid"}) assert %{email: ["must have the @ sign and no spaces"]} = errors_on(changeset) end @@ -116,8 +115,7 @@ defmodule Claper.AccountsTest do test "validates maximum value for email for security", %{user: user} do too_long = String.duplicate("db", 100) - {:error, changeset} = - Accounts.apply_user_email(user, %{email: too_long}) + {:error, changeset} = Accounts.apply_user_email(user, %{email: too_long}) assert "should be at most 160 character(s)" in errors_on(changeset).email end @@ -125,8 +123,7 @@ defmodule Claper.AccountsTest do test "validates email uniqueness", %{user: user} do %{email: email} = user_fixture() - {:error, changeset} = - Accounts.apply_user_email(user, %{email: email}) + {:error, changeset} = Accounts.apply_user_email(user, %{email: email}) assert "has already been taken" in errors_on(changeset).email end @@ -305,5 +302,4 @@ defmodule Claper.AccountsTest do assert Repo.get_by(UserToken, user_id: user.id) end end - end diff --git a/test/claper/events_test.exs b/test/claper/events_test.exs index 3d1898c..8114736 100644 --- a/test/claper/events_test.exs +++ b/test/claper/events_test.exs @@ -2,10 +2,9 @@ defmodule Claper.EventsTest do use Claper.DataCase alias Claper.Events - import Claper.{EventsFixtures,AccountsFixtures} + import Claper.{EventsFixtures, AccountsFixtures} describe "events" do - alias Claper.Events.Event @invalid_attrs %{name: nil, code: nil} @@ -32,12 +31,22 @@ defmodule Claper.EventsTest do test "get_user_event!/3 with invalid user raises exception" do event = event_fixture() event2 = event_fixture() - assert_raise Ecto.NoResultsError, fn -> Events.get_user_event!(event.user_id, event2.uuid) == event end + + assert_raise Ecto.NoResultsError, fn -> + Events.get_user_event!(event.user_id, event2.uuid) == event + end end test "create_event/1 with valid data creates a event" do user = user_fixture() - valid_attrs = %{name: "some name", code: "code", user_id: user.id, started_at: NaiveDateTime.utc_now, expired_at: NaiveDateTime.add(NaiveDateTime.utc_now, 7200, :second)} + + valid_attrs = %{ + name: "some name", + code: "code", + user_id: user.id, + started_at: NaiveDateTime.utc_now(), + expired_at: NaiveDateTime.add(NaiveDateTime.utc_now(), 7200, :second) + } assert {:ok, %Event{} = event} = Events.create_event(valid_attrs) assert event.name == "some name" diff --git a/test/claper/polls_test.exs b/test/claper/polls_test.exs index 27a7398..0116a97 100644 --- a/test/claper/polls_test.exs +++ b/test/claper/polls_test.exs @@ -6,37 +6,46 @@ defmodule Claper.PollsTest do describe "polls" do alias Claper.Polls.Poll - import Claper.{PollsFixtures,PresentationsFixtures} + import Claper.{PollsFixtures, PresentationsFixtures} @invalid_attrs %{title: nil} test "list_polls/1 returns all polls from a presentation" do presentation_file = presentation_file_fixture() - poll = poll_fixture(%{presentation_file_id: presentation_file.id }) + poll = poll_fixture(%{presentation_file_id: presentation_file.id}) assert Polls.list_polls(presentation_file.id) == [poll] end test "list_polls_at_position/2 returns all polls from a presentation at a given position" do presentation_file = presentation_file_fixture() - poll = poll_fixture(%{presentation_file_id: presentation_file.id, position: 5 }) + poll = poll_fixture(%{presentation_file_id: presentation_file.id, position: 5}) assert Polls.list_polls_at_position(presentation_file.id, 5) == [poll] end test "get_poll!/1 returns the poll with given id" do presentation_file = presentation_file_fixture() - poll = poll_fixture(%{presentation_file_id: presentation_file.id }) |> Claper.Polls.set_percentages() + + poll = + poll_fixture(%{presentation_file_id: presentation_file.id}) + |> Claper.Polls.set_percentages() assert Polls.get_poll!(poll.id) == poll end test "create_poll/1 with valid data creates a poll" do presentation_file = presentation_file_fixture() - valid_attrs = %{title: "some title", presentation_file_id: presentation_file.id, position: 0, poll_opts: [ - %{content: "some option 1", vote_count: 0}, - %{content: "some option 2", vote_count: 0}, - ]} + + valid_attrs = %{ + title: "some title", + presentation_file_id: presentation_file.id, + position: 0, + poll_opts: [ + %{content: "some option 1", vote_count: 0}, + %{content: "some option 2", vote_count: 0} + ] + } assert {:ok, %Poll{} = poll} = Polls.create_poll(valid_attrs) assert poll.title == "some title" @@ -51,14 +60,19 @@ defmodule Claper.PollsTest do poll = poll_fixture(%{presentation_file_id: presentation_file.id}) update_attrs = %{title: "some updated title"} - assert {:ok, %Poll{} = poll} = Polls.update_poll(presentation_file.event_id, poll, update_attrs) + assert {:ok, %Poll{} = poll} = + Polls.update_poll(presentation_file.event_id, poll, update_attrs) + assert poll.title == "some updated title" end test "update_poll/3 with invalid data returns error changeset" do presentation_file = presentation_file_fixture() poll = poll_fixture(%{presentation_file_id: presentation_file.id}) - assert {:error, %Ecto.Changeset{}} = Polls.update_poll(presentation_file.event_id, poll, @invalid_attrs) + + assert {:error, %Ecto.Changeset{}} = + Polls.update_poll(presentation_file.event_id, poll, @invalid_attrs) + assert poll |> Claper.Polls.set_percentages() == Polls.get_poll!(poll.id) end @@ -78,15 +92,15 @@ defmodule Claper.PollsTest do end describe "poll_opts" do - - import Claper.{PollsFixtures,PresentationsFixtures} + import Claper.{PollsFixtures, PresentationsFixtures} test "add_poll_opt/1 returns poll changeset plus the added poll_opt" do presentation_file = presentation_file_fixture() poll = poll_fixture(%{presentation_file_id: presentation_file.id}) poll_changeset = poll |> Polls.change_poll() - assert Ecto.Changeset.get_field(Polls.add_poll_opt(poll_changeset), :poll_opts) |> Enum.count == 3 + assert Ecto.Changeset.get_field(Polls.add_poll_opt(poll_changeset), :poll_opts) + |> Enum.count() == 3 end test "remove_poll_opt/2 returns poll changeset minus the removed poll_opt" do @@ -94,13 +108,16 @@ defmodule Claper.PollsTest do poll = poll_fixture(%{presentation_file_id: presentation_file.id}) poll_changeset = poll |> Polls.change_poll() - assert Ecto.Changeset.get_field(Polls.remove_poll_opt(poll_changeset, Enum.at(poll.poll_opts, 0)), :poll_opts) |> Enum.count == 1 + assert Ecto.Changeset.get_field( + Polls.remove_poll_opt(poll_changeset, Enum.at(poll.poll_opts, 0)), + :poll_opts + ) + |> Enum.count() == 1 end end describe "poll_votes" do - - import Claper.{PollsFixtures,PresentationsFixtures} + import Claper.{PollsFixtures, PresentationsFixtures} test "get_poll_vote/2 returns the poll_vote with given id and user id" do poll_vote = poll_vote_fixture() @@ -112,8 +129,13 @@ defmodule Claper.PollsTest do poll = poll_fixture(%{presentation_file_id: presentation_file.id}) [poll_opt | _] = poll.poll_opts - - assert {:ok, %Polls.Poll{}} = Polls.vote(presentation_file.event.user_id, presentation_file.event_id, poll_opt, poll.id) + assert {:ok, %Polls.Poll{}} = + Polls.vote( + presentation_file.event.user_id, + presentation_file.event_id, + poll_opt, + poll.id + ) end end end diff --git a/test/claper/posts_test.exs b/test/claper/posts_test.exs index 04a3602..9574d71 100644 --- a/test/claper/posts_test.exs +++ b/test/claper/posts_test.exs @@ -8,7 +8,6 @@ defmodule Claper.PostsTest do alias Claper.Posts.Post describe "posts" do - @invalid_attrs %{body: "a"} test "list_posts/0 returns all posts from an event" do @@ -55,7 +54,6 @@ defmodule Claper.PostsTest do end end - describe "reactions" do alias Claper.Posts.Reaction @@ -86,7 +84,9 @@ defmodule Claper.PostsTest do post = post_fixture() reaction = reaction_fixture(%{post: post, user_id: post.user_id}) - assert {:ok, %Post{}} = Posts.delete_reaction(%{user_id: post.user_id, post: post, icon: "some icon"}) + assert {:ok, %Post{}} = + Posts.delete_reaction(%{user_id: post.user_id, post: post, icon: "some icon"}) + assert_raise Ecto.NoResultsError, fn -> Posts.get_reaction!(reaction.id) end end end diff --git a/test/claper/presentations_test.exs b/test/claper/presentations_test.exs index 1b0658e..6c4ed1a 100644 --- a/test/claper/presentations_test.exs +++ b/test/claper/presentations_test.exs @@ -15,13 +15,17 @@ defmodule Claper.PresentationsTest do test "get_presentation_file_by_hash!/2 returns the presentation_file with given hash" do presentation_file = presentation_file_fixture(%{}, [:event]) - assert Presentations.get_presentation_file_by_hash!(presentation_file.hash) == presentation_file + + assert Presentations.get_presentation_file_by_hash!(presentation_file.hash) == + presentation_file end test "create_presentation_file/1 with valid data creates a presentation_file" do valid_attrs = %{hash: "1234", length: 42} - assert {:ok, %PresentationFile{} = presentation_file} = Presentations.create_presentation_file(valid_attrs) + assert {:ok, %PresentationFile{} = presentation_file} = + Presentations.create_presentation_file(valid_attrs) + assert presentation_file.hash == "1234" assert presentation_file.length == 42 end @@ -30,7 +34,9 @@ defmodule Claper.PresentationsTest do presentation_file = presentation_file_fixture() update_attrs = %{hash: "4567", length: 43} - assert {:ok, %PresentationFile{} = presentation_file} = Presentations.update_presentation_file(presentation_file, update_attrs) + assert {:ok, %PresentationFile{} = presentation_file} = + Presentations.update_presentation_file(presentation_file, update_attrs) + assert presentation_file.hash == "4567" assert presentation_file.length == 43 end @@ -51,7 +57,8 @@ defmodule Claper.PresentationsTest do presentation_state = presentation_state_fixture() update_attrs = %{} - assert {:ok, %PresentationState{}} = Presentations.update_presentation_state(presentation_state, update_attrs) + assert {:ok, %PresentationState{}} = + Presentations.update_presentation_state(presentation_state, update_attrs) end end end diff --git a/test/claper_web/live/event_live_test.exs b/test/claper_web/live/event_live_test.exs index c7026aa..5357f26 100644 --- a/test/claper_web/live/event_live_test.exs +++ b/test/claper_web/live/event_live_test.exs @@ -25,7 +25,9 @@ defmodule ClaperWeb.EventLiveTest do test "updates event in listing", %{conn: conn, presentation_file: presentation_file} do {:ok, index_live, _html} = live(conn, Routes.event_index_path(conn, :index)) - assert index_live |> element("#event-#{presentation_file.event.uuid} a", "Edit") |> render_click() =~ + assert index_live + |> element("#event-#{presentation_file.event.uuid} a", "Edit") + |> render_click() =~ "Edit" assert_patch(index_live, Routes.event_index_path(conn, :edit, presentation_file.event.uuid)) @@ -43,15 +45,19 @@ defmodule ClaperWeb.EventLiveTest do test "deletes event in listing", %{conn: conn, presentation_file: presentation_file} do {:ok, index_live, _html} = live(conn, Routes.event_index_path(conn, :index)) - assert index_live |> element("#event-#{presentation_file.event.uuid} a", "Edit") |> render_click() =~ + assert index_live + |> element("#event-#{presentation_file.event.uuid} a", "Edit") + |> render_click() =~ "Edit" - {:ok, conn} = index_live |> element(~s{a[phx-value-id=#{presentation_file.event.uuid}]}) |> render_click() - |> follow_redirect(conn, Routes.event_index_path(conn, :index)) + {:ok, conn} = + index_live + |> element(~s{a[phx-value-id=#{presentation_file.event.uuid}]}) + |> render_click() + |> follow_redirect(conn, Routes.event_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.event_index_path(conn, :index)) - refute has_element?(index_live, "#event-#{presentation_file.event.uuid}") end end @@ -60,12 +66,11 @@ defmodule ClaperWeb.EventLiveTest do setup [:register_and_log_in_user, :create_event] test "displays event", %{conn: conn, presentation_file: presentation_file} do - - {:ok, _show_live, html} = live(conn, Routes.event_show_path(conn, :show, presentation_file.event.code)) + {:ok, _show_live, html} = + live(conn, Routes.event_show_path(conn, :show, presentation_file.event.code)) assert html =~ "Be the first to react" assert html =~ presentation_file.event.name end - end end diff --git a/test/claper_web/live/post_live_test.exs b/test/claper_web/live/post_live_test.exs index 710f13b..47bd6fe 100644 --- a/test/claper_web/live/post_live_test.exs +++ b/test/claper_web/live/post_live_test.exs @@ -2,7 +2,7 @@ defmodule ClaperWeb.PostLiveTest do use ClaperWeb.ConnCase import Phoenix.LiveViewTest - import Claper.{PresentationsFixtures,PostsFixtures} + import Claper.{PresentationsFixtures, PostsFixtures} defp create_event(params) do presentation_file = presentation_file_fixture(%{user: params.user}, [:event]) @@ -15,10 +15,10 @@ defmodule ClaperWeb.PostLiveTest do setup [:register_and_log_in_user, :create_event] test "list posts", %{conn: conn, presentation_file: presentation_file} do - {:ok, _index_live, html} = live(conn, Routes.event_show_path(conn, :show, presentation_file.event.code)) + {:ok, _index_live, html} = + live(conn, Routes.event_show_path(conn, :show, presentation_file.event.code)) assert html =~ "some body" - end end end diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index b30548f..0cc461f 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -62,6 +62,5 @@ defmodule ClaperWeb.ConnCase do |> Phoenix.ConnTest.init_test_session(%{}) |> Plug.Conn.put_session(:current_user, user) |> Plug.Conn.put_session(:user_token, token) - end end diff --git a/test/support/fixtures/accounts_fixtures.ex b/test/support/fixtures/accounts_fixtures.ex index 8944788..dd37658 100644 --- a/test/support/fixtures/accounts_fixtures.ex +++ b/test/support/fixtures/accounts_fixtures.ex @@ -11,7 +11,7 @@ defmodule Claper.AccountsFixtures do Enum.into(attrs, %{ email: unique_user_email(), password: valid_user_password(), - confirmed_at: NaiveDateTime.utc_now(), + confirmed_at: NaiveDateTime.utc_now() }) end diff --git a/test/support/fixtures/events_fixtures.ex b/test/support/fixtures/events_fixtures.ex index 86bd568..600c7a2 100644 --- a/test/support/fixtures/events_fixtures.ex +++ b/test/support/fixtures/events_fixtures.ex @@ -13,6 +13,7 @@ defmodule Claper.EventsFixtures do """ def event_fixture(attrs \\ %{}, preload \\ []) do assoc = %{user: attrs[:user] || user_fixture()} + {:ok, event} = attrs |> Enum.into(%{ @@ -20,12 +21,12 @@ defmodule Claper.EventsFixtures do code: "#{Enum.random(1000..2000)}", uuid: Ecto.UUID.generate(), user_id: assoc.user.id, - started_at: NaiveDateTime.utc_now, - expired_at: NaiveDateTime.add(NaiveDateTime.utc_now, 7200, :second) # add 2 hours + started_at: NaiveDateTime.utc_now(), + # add 2 hours + expired_at: NaiveDateTime.add(NaiveDateTime.utc_now(), 7200, :second) }) |> Claper.Events.create_event() - Claper.UtilFixture.merge_preload(event, preload, assoc) + Claper.UtilFixture.merge_preload(event, preload, assoc) end - end diff --git a/test/support/fixtures/polls_fixtures.ex b/test/support/fixtures/polls_fixtures.ex index 3313a78..e347557 100644 --- a/test/support/fixtures/polls_fixtures.ex +++ b/test/support/fixtures/polls_fixtures.ex @@ -4,7 +4,7 @@ defmodule Claper.PollsFixtures do entities via the `Claper.Polls` context. """ - import Claper.{AccountsFixtures,PresentationsFixtures} + import Claper.{AccountsFixtures, PresentationsFixtures} require Claper.UtilFixture @@ -20,13 +20,12 @@ defmodule Claper.PollsFixtures do enabled: true, poll_opts: [ %{content: "some option 1", vote_count: 0}, - %{content: "some option 2", vote_count: 0}, + %{content: "some option 2", vote_count: 0} ] }) |> Claper.Polls.create_poll() - Claper.UtilFixture.merge_preload(poll, preload, %{}) - + Claper.UtilFixture.merge_preload(poll, preload, %{}) end @doc """ @@ -37,6 +36,7 @@ defmodule Claper.PollsFixtures do poll = poll_fixture(%{presentation_file_id: presentation_file.id}) [poll_opt | _] = poll.poll_opts assoc = %{poll: poll} + {:ok, poll_vote} = attrs |> Enum.into(%{ diff --git a/test/support/fixtures/posts_fixtures.ex b/test/support/fixtures/posts_fixtures.ex index 82fbbce..e94e332 100644 --- a/test/support/fixtures/posts_fixtures.ex +++ b/test/support/fixtures/posts_fixtures.ex @@ -15,20 +15,23 @@ defmodule Claper.PostsFixtures do user = attrs[:user] || user_fixture() event = attrs[:event] || event_fixture() assoc = %{user: user, event: event} + {:ok, post} = - Claper.Posts.create_post(assoc.event, attrs - |> Enum.into(%{ - body: "some body", - like_count: 42, - position: 0, - uuid: Ecto.UUID.generate(), - user_id: assoc.user.id - })) + Claper.Posts.create_post( + assoc.event, + attrs + |> Enum.into(%{ + body: "some body", + like_count: 42, + position: 0, + uuid: Ecto.UUID.generate(), + user_id: assoc.user.id + }) + ) - Claper.UtilFixture.merge_preload(post, preload, assoc) + Claper.UtilFixture.merge_preload(post, preload, assoc) end - @doc """ Generate a reaction. """ diff --git a/test/support/fixtures/presentations_fixtures.ex b/test/support/fixtures/presentations_fixtures.ex index cfbb3da..9d23440 100644 --- a/test/support/fixtures/presentations_fixtures.ex +++ b/test/support/fixtures/presentations_fixtures.ex @@ -13,6 +13,7 @@ defmodule Claper.PresentationsFixtures do """ def presentation_file_fixture(attrs \\ %{}, preload \\ []) do assoc = %{event: attrs[:event] || event_fixture(attrs)} + {:ok, presentation_file} = attrs |> Enum.into(%{ @@ -23,14 +24,15 @@ defmodule Claper.PresentationsFixtures do }) |> Claper.Presentations.create_presentation_file() - Claper.UtilFixture.merge_preload(presentation_file, preload, assoc) + Claper.UtilFixture.merge_preload(presentation_file, preload, assoc) end @doc """ Generate a presentation_state. """ - def presentation_state_fixture(attrs \\ %{}, preload \\ []) do + def presentation_state_fixture(attrs \\ %{}, preload \\ []) do assoc = %{presentation_file: attrs[:presentation_file] || presentation_file_fixture()} + {:ok, presentation_state} = attrs |> Enum.into(%{ @@ -43,6 +45,6 @@ defmodule Claper.PresentationsFixtures do }) |> Claper.Presentations.create_presentation_state() - Claper.UtilFixture.merge_preload(presentation_state, preload, assoc) + Claper.UtilFixture.merge_preload(presentation_state, preload, assoc) end end diff --git a/test/support/util_fixture.ex b/test/support/util_fixture.ex index 2de9a89..60bef15 100644 --- a/test/support/util_fixture.ex +++ b/test/support/util_fixture.ex @@ -1,8 +1,10 @@ defmodule Claper.UtilFixture do defmacro merge_preload(origin, preload, assoc) do quote do - unquote(origin) |> - Map.merge(for p <- unquote(preload), unquote(assoc)[p], into: %{}, do: {p, unquote(assoc)[p]}) + unquote(origin) + |> Map.merge( + for p <- unquote(preload), unquote(assoc)[p], into: %{}, do: {p, unquote(assoc)[p]} + ) end end end