Skip to content

Commit

Permalink
Ensure feed generation on create/update
Browse files Browse the repository at this point in the history
  • Loading branch information
jerodsanto committed Sep 26, 2024
1 parent da96436 commit 76ad634
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
2 changes: 2 additions & 0 deletions lib/changelog_web/controllers/admin/feed_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ defmodule ChangelogWeb.Admin.FeedController do
case Repo.insert(changeset) do
{:ok, feed} ->
Repo.update(Feed.file_changeset(feed, feed_params))
FeedUpdater.queue(feed)

conn
|> put_flash(:result, "success")
Expand All @@ -54,6 +55,7 @@ defmodule ChangelogWeb.Admin.FeedController do

case Repo.update(changeset) do
{:ok, feed} ->
FeedUpdater.queue(feed)
params = replace_next_edit_path(params, ~p"/admin/feeds/#{feed}/edit")

conn
Expand Down
1 change: 1 addition & 0 deletions lib/changelog_web/controllers/home/feed_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ defmodule ChangelogWeb.Home.FeedController do
case Repo.insert(changeset) do
{:ok, feed} ->
Repo.update(Feed.file_changeset(feed, feed_params))
FeedUpdater.queue(feed)

conn
|> put_flash(:success, "Your new feed has been created! 👏")
Expand Down
30 changes: 27 additions & 3 deletions test/changelog_web/controllers/home/feed_controller_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,22 @@ defmodule ChangelogWeb.HomeFeedControllerTest do
use ChangelogWeb.ConnCase
use Changelog.EmailCase

alias Changelog.Feed
import Mock

alias Changelog.{Feed, ObanWorkers}

@valid_attrs %{name: "My Custom Feed", starts_at: "2024-01-01"}
@invalid_attrs %{name: ""}

setup_with_mocks(
[
{ObanWorkers.FeedUpdater, [], [queue: fn _ -> :ok end]},
],
assigns
) do
assigns
end

@tag :as_inserted_member
test "renders the index page with no feeds", %{conn: conn} do
conn = get(conn, ~p"/~/feeds")
Expand All @@ -30,8 +41,9 @@ defmodule ChangelogWeb.HomeFeedControllerTest do
test "creates feed and redirects", %{conn: conn} do
conn = post(conn, ~p"/~/feeds", feed: @valid_attrs)

assert redirected_to(conn) == ~p"/~/feeds"
assert count(Feed) == 1
assert called(ObanWorkers.FeedUpdater.queue(:_))
assert redirected_to(conn) == ~p"/~/feeds"
end

@tag :as_inserted_member
Expand All @@ -57,8 +69,19 @@ defmodule ChangelogWeb.HomeFeedControllerTest do

conn = put(conn, ~p"/~/feeds/#{feed}", feed: @valid_attrs)

assert redirected_to(conn) == ~p"/~/feeds"
assert count(Feed) == 1
assert called(ObanWorkers.FeedUpdater.queue(:_))
assert redirected_to(conn) == ~p"/~/feeds"
end

@tag :as_inserted_member
test "refreshes feed and redirects", %{conn: conn} do
feed = insert(:feed, owner: conn.assigns.current_user)

conn = post(conn, ~p"/~/feeds/#{feed}/refresh")

assert called(ObanWorkers.FeedUpdater.queue(:_))
assert redirected_to(conn) == ~p"/~/feeds"
end

@tag :as_inserted_member
Expand All @@ -67,6 +90,7 @@ defmodule ChangelogWeb.HomeFeedControllerTest do

conn = put(conn, ~p"/~/feeds/#{feed}", feed: @invalid_attrs)

refute called(ObanWorkers.FeedUpdater.queue(:_))
assert html_response(conn, 200) =~ ~r/error/
end

Expand Down

0 comments on commit 76ad634

Please sign in to comment.