Rename media sources (#25)

* Renamed MediaSource to Sources

* Renamed MediaItem controller namespace
This commit is contained in:
Kieran 2024-02-20 09:48:20 -08:00 committed by GitHub
parent d4d653398b
commit 7d62f7c7df
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 87 additions and 87 deletions

View file

@ -4,13 +4,13 @@ alias Pinchflat.Tasks.Task
alias Pinchflat.Media.MediaItem alias Pinchflat.Media.MediaItem
alias Pinchflat.Tasks.SourceTasks alias Pinchflat.Tasks.SourceTasks
alias Pinchflat.Media.MediaMetadata alias Pinchflat.Media.MediaMetadata
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
alias Pinchflat.Profiles.MediaProfile alias Pinchflat.Profiles.MediaProfile
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.Media alias Pinchflat.Media
alias Pinchflat.Profiles alias Pinchflat.Profiles
alias Pinchflat.MediaSource alias Pinchflat.Sources
alias Pinchflat.MediaClient.{SourceDetails, VideoDownloader} alias Pinchflat.MediaClient.{SourceDetails, VideoDownloader}

View file

@ -8,7 +8,7 @@ defmodule Pinchflat.Media do
alias Pinchflat.Repo alias Pinchflat.Repo
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.Media.MediaItem alias Pinchflat.Media.MediaItem
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
@doc """ @doc """
Returns the list of media_items. Returns [%MediaItem{}, ...]. Returns the list of media_items. Returns [%MediaItem{}, ...].

View file

@ -7,7 +7,7 @@ defmodule Pinchflat.Media.MediaItem do
import Ecto.Changeset import Ecto.Changeset
alias Pinchflat.Tasks.Task alias Pinchflat.Tasks.Task
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
alias Pinchflat.Media.MediaMetadata alias Pinchflat.Media.MediaMetadata
alias Pinchflat.Media.MediaItemSearchIndex alias Pinchflat.Media.MediaItemSearchIndex

View file

@ -6,7 +6,7 @@ defmodule Pinchflat.MediaClient.SourceDetails do
it open-ish for future expansion (just in case). it open-ish for future expansion (just in case).
""" """
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
alias Pinchflat.MediaClient.Backends.YtDlp.VideoCollection, as: YtDlpSource alias Pinchflat.MediaClient.Backends.YtDlp.VideoCollection, as: YtDlpSource
@doc """ @doc """

View file

@ -1,4 +1,4 @@
defmodule Pinchflat.MediaSource.Source do defmodule Pinchflat.Sources.Source do
@moduledoc """ @moduledoc """
The Source schema. The Source schema.
""" """

View file

@ -6,7 +6,7 @@ defmodule Pinchflat.Profiles.MediaProfile do
use Ecto.Schema use Ecto.Schema
import Ecto.Changeset import Ecto.Changeset
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
@allowed_fields ~w( @allowed_fields ~w(
name name

View file

@ -1,6 +1,6 @@
defmodule Pinchflat.MediaSource do defmodule Pinchflat.Sources do
@moduledoc """ @moduledoc """
The MediaSource context. The Sources context.
""" """
import Ecto.Query, warn: false import Ecto.Query, warn: false
@ -8,7 +8,7 @@ defmodule Pinchflat.MediaSource do
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.Tasks.SourceTasks alias Pinchflat.Tasks.SourceTasks
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
alias Pinchflat.MediaClient.SourceDetails alias Pinchflat.MediaClient.SourceDetails
@doc """ @doc """

View file

@ -8,7 +8,7 @@ defmodule Pinchflat.Tasks do
alias Pinchflat.Tasks.Task alias Pinchflat.Tasks.Task
alias Pinchflat.Media.MediaItem alias Pinchflat.Media.MediaItem
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
@doc """ @doc """
Returns the list of tasks. Returns [%Task{}, ...] Returns the list of tasks. Returns [%Task{}, ...]

View file

@ -5,8 +5,8 @@ defmodule Pinchflat.Tasks.SourceTasks do
alias Pinchflat.Media alias Pinchflat.Media
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.MediaSource alias Pinchflat.Sources
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
alias Pinchflat.MediaClient.SourceDetails alias Pinchflat.MediaClient.SourceDetails
alias Pinchflat.Workers.MediaIndexingWorker alias Pinchflat.Workers.MediaIndexingWorker
alias Pinchflat.Workers.VideoDownloadWorker alias Pinchflat.Workers.VideoDownloadWorker
@ -43,7 +43,7 @@ defmodule Pinchflat.Tasks.SourceTasks do
""" """
def index_media_items(%Source{} = source) do def index_media_items(%Source{} = source) do
{:ok, media_attributes} = SourceDetails.get_media_attributes(source.original_url) {:ok, media_attributes} = SourceDetails.get_media_attributes(source.original_url)
MediaSource.update_source(source, %{last_indexed_at: DateTime.utc_now()}) Sources.update_source(source, %{last_indexed_at: DateTime.utc_now()})
media_attributes media_attributes
|> Enum.map(fn media_attrs -> |> Enum.map(fn media_attrs ->

View file

@ -7,7 +7,7 @@ defmodule Pinchflat.Tasks.Task do
import Ecto.Changeset import Ecto.Changeset
alias Pinchflat.Media.MediaItem alias Pinchflat.Media.MediaItem
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
schema "tasks" do schema "tasks" do
belongs_to :job, Oban.Job belongs_to :job, Oban.Job

View file

@ -8,7 +8,7 @@ defmodule Pinchflat.Workers.MediaIndexingWorker do
alias __MODULE__ alias __MODULE__
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.MediaSource alias Pinchflat.Sources
alias Pinchflat.Tasks.SourceTasks alias Pinchflat.Tasks.SourceTasks
@impl Oban.Worker @impl Oban.Worker
@ -37,7 +37,7 @@ defmodule Pinchflat.Workers.MediaIndexingWorker do
Returns :ok | {:ok, %Task{}} Returns :ok | {:ok, %Task{}}
""" """
def perform(%Oban.Job{args: %{"id" => source_id}}) do def perform(%Oban.Job{args: %{"id" => source_id}}) do
source = MediaSource.get_source!(source_id) source = Sources.get_source!(source_id)
if source.index_frequency_minutes <= 0 do if source.index_frequency_minutes <= 0 do
:ok :ok

View file

@ -1,4 +1,4 @@
defmodule PinchflatWeb.Media.MediaItemController do defmodule PinchflatWeb.MediaItems.MediaItemController do
use PinchflatWeb, :controller use PinchflatWeb, :controller
alias Pinchflat.Media alias Pinchflat.Media

View file

@ -1,4 +1,4 @@
defmodule PinchflatWeb.Media.MediaItemHTML do defmodule PinchflatWeb.MediaItems.MediaItemHTML do
use PinchflatWeb, :html use PinchflatWeb, :html
embed_templates "media_item_html/*" embed_templates "media_item_html/*"

View file

@ -2,7 +2,7 @@ defmodule PinchflatWeb.Pages.PageController do
use PinchflatWeb, :controller use PinchflatWeb, :controller
alias Pinchflat.Repo alias Pinchflat.Repo
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
alias Pinchflat.Profiles.MediaProfile alias Pinchflat.Profiles.MediaProfile
def home(conn, params) do def home(conn, params) do

View file

@ -1,20 +1,20 @@
defmodule PinchflatWeb.MediaSources.SourceController do defmodule PinchflatWeb.Sources.SourceController do
use PinchflatWeb, :controller use PinchflatWeb, :controller
alias Pinchflat.Repo alias Pinchflat.Repo
alias Pinchflat.Media alias Pinchflat.Media
alias Pinchflat.Profiles alias Pinchflat.Profiles
alias Pinchflat.MediaSource alias Pinchflat.Sources
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
def index(conn, _params) do def index(conn, _params) do
sources = Repo.preload(MediaSource.list_sources(), :media_profile) sources = Repo.preload(Sources.list_sources(), :media_profile)
render(conn, :index, sources: sources) render(conn, :index, sources: sources)
end end
def new(conn, _params) do def new(conn, _params) do
changeset = MediaSource.change_source(%Source{}) changeset = Sources.change_source(%Source{})
if get_session(conn, :onboarding) do if get_session(conn, :onboarding) do
render(conn, :new, render(conn, :new,
@ -28,7 +28,7 @@ defmodule PinchflatWeb.MediaSources.SourceController do
end end
def create(conn, %{"source" => source_params}) do def create(conn, %{"source" => source_params}) do
case MediaSource.create_source(source_params) do case Sources.create_source(source_params) do
{:ok, source} -> {:ok, source} ->
redirect_location = redirect_location =
if get_session(conn, :onboarding), do: ~p"/?onboarding=1", else: ~p"/sources/#{source}" if get_session(conn, :onboarding), do: ~p"/?onboarding=1", else: ~p"/sources/#{source}"
@ -53,7 +53,7 @@ defmodule PinchflatWeb.MediaSources.SourceController do
def show(conn, %{"id" => id}) do def show(conn, %{"id" => id}) do
source = source =
id id
|> MediaSource.get_source!() |> Sources.get_source!()
|> Repo.preload(:media_profile) |> Repo.preload(:media_profile)
pending_media = Media.list_pending_media_items_for(source) pending_media = Media.list_pending_media_items_for(source)
@ -63,16 +63,16 @@ defmodule PinchflatWeb.MediaSources.SourceController do
end end
def edit(conn, %{"id" => id}) do def edit(conn, %{"id" => id}) do
source = MediaSource.get_source!(id) source = Sources.get_source!(id)
changeset = MediaSource.change_source(source) changeset = Sources.change_source(source)
render(conn, :edit, source: source, changeset: changeset, media_profiles: media_profiles()) render(conn, :edit, source: source, changeset: changeset, media_profiles: media_profiles())
end end
def update(conn, %{"id" => id, "source" => source_params}) do def update(conn, %{"id" => id, "source" => source_params}) do
source = MediaSource.get_source!(id) source = Sources.get_source!(id)
case MediaSource.update_source(source, source_params) do case Sources.update_source(source, source_params) do
{:ok, source} -> {:ok, source} ->
conn conn
|> put_flash(:info, "Source updated successfully.") |> put_flash(:info, "Source updated successfully.")
@ -88,8 +88,8 @@ defmodule PinchflatWeb.MediaSources.SourceController do
end end
def delete(conn, %{"id" => id}) do def delete(conn, %{"id" => id}) do
source = MediaSource.get_source!(id) source = Sources.get_source!(id)
{:ok, _source} = MediaSource.delete_source(source) {:ok, _source} = Sources.delete_source(source)
conn conn
|> put_flash(:info, "Source deleted successfully.") |> put_flash(:info, "Source deleted successfully.")

View file

@ -1,4 +1,4 @@
defmodule PinchflatWeb.MediaSources.SourceHTML do defmodule PinchflatWeb.Sources.SourceHTML do
use PinchflatWeb, :html use PinchflatWeb, :html
embed_templates "source_html/*" embed_templates "source_html/*"

View file

@ -22,8 +22,8 @@ defmodule PinchflatWeb.Router do
resources "/media_profiles", MediaProfiles.MediaProfileController resources "/media_profiles", MediaProfiles.MediaProfileController
resources "/search", Searches.SearchController, only: [:show], singleton: true resources "/search", Searches.SearchController, only: [:show], singleton: true
resources "/sources", MediaSources.SourceController do resources "/sources", Sources.SourceController do
resources "/media", Media.MediaItemController, only: [:show, :delete] resources "/media", MediaItems.MediaItemController, only: [:show, :delete]
end end
end end

View file

@ -1,7 +1,7 @@
defmodule Pinchflat.MediaClient.Backends.YtDlp.VideoCollectionTest do defmodule Pinchflat.MediaClient.Backends.YtDlp.VideoCollectionTest do
use ExUnit.Case, async: true use ExUnit.Case, async: true
import Mox import Mox
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
alias Pinchflat.MediaClient.Backends.YtDlp.VideoCollection alias Pinchflat.MediaClient.Backends.YtDlp.VideoCollection

View file

@ -2,7 +2,7 @@ defmodule Pinchflat.MediaClient.SourceDetailsTest do
use Pinchflat.DataCase use Pinchflat.DataCase
import Mox import Mox
import Pinchflat.ProfilesFixtures import Pinchflat.ProfilesFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
alias Pinchflat.MediaClient.SourceDetails alias Pinchflat.MediaClient.SourceDetails

View file

@ -4,7 +4,7 @@ defmodule Pinchflat.MediaTest do
import Pinchflat.TasksFixtures import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures import Pinchflat.MediaFixtures
import Pinchflat.ProfilesFixtures import Pinchflat.ProfilesFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
alias Pinchflat.Media alias Pinchflat.Media
alias Pinchflat.Media.MediaItem alias Pinchflat.Media.MediaItem

View file

@ -1,14 +1,14 @@
defmodule Pinchflat.MediaSourceTest do defmodule Pinchflat.SourcesTest do
use Pinchflat.DataCase use Pinchflat.DataCase
import Mox import Mox
import Pinchflat.TasksFixtures import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures import Pinchflat.MediaFixtures
import Pinchflat.ProfilesFixtures import Pinchflat.ProfilesFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
alias Pinchflat.MediaSource alias Pinchflat.Sources
alias Pinchflat.Tasks.SourceTasks alias Pinchflat.Tasks.SourceTasks
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
alias Pinchflat.Workers.MediaIndexingWorker alias Pinchflat.Workers.MediaIndexingWorker
alias Pinchflat.Workers.VideoDownloadWorker alias Pinchflat.Workers.VideoDownloadWorker
@ -19,14 +19,14 @@ defmodule Pinchflat.MediaSourceTest do
describe "list_sources/0" do describe "list_sources/0" do
test "it returns all sources" do test "it returns all sources" do
source = source_fixture() source = source_fixture()
assert MediaSource.list_sources() == [source] assert Sources.list_sources() == [source]
end end
end end
describe "get_source!/1" do describe "get_source!/1" do
test "it returns the source with given id" do test "it returns the source with given id" do
source = source_fixture() source = source_fixture()
assert MediaSource.get_source!(source.id) == source assert Sources.get_source!(source.id) == source
end end
end end
@ -40,7 +40,7 @@ defmodule Pinchflat.MediaSourceTest do
collection_type: "channel" collection_type: "channel"
} }
assert {:ok, %Source{} = source} = MediaSource.create_source(valid_attrs) assert {:ok, %Source{} = source} = Sources.create_source(valid_attrs)
assert source.collection_name == "some channel name" assert source.collection_name == "some channel name"
assert String.starts_with?(source.collection_id, "some_channel_id_") assert String.starts_with?(source.collection_id, "some_channel_id_")
end end
@ -54,13 +54,13 @@ defmodule Pinchflat.MediaSourceTest do
collection_type: "playlist" collection_type: "playlist"
} }
assert {:ok, %Source{} = source} = MediaSource.create_source(valid_attrs) assert {:ok, %Source{} = source} = Sources.create_source(valid_attrs)
assert source.collection_name == "some playlist name" assert source.collection_name == "some playlist name"
assert String.starts_with?(source.collection_id, "some_playlist_id_") assert String.starts_with?(source.collection_id, "some_playlist_id_")
end end
test "creation with invalid data returns error changeset" do test "creation with invalid data returns error changeset" do
assert {:error, %Ecto.Changeset{}} = MediaSource.create_source(@invalid_source_attrs) assert {:error, %Ecto.Changeset{}} = Sources.create_source(@invalid_source_attrs)
end end
test "creation enforces uniqueness of collection_id scoped to the media_profile" do test "creation enforces uniqueness of collection_id scoped to the media_profile" do
@ -78,8 +78,8 @@ defmodule Pinchflat.MediaSourceTest do
collection_type: "channel" collection_type: "channel"
} }
assert {:ok, %Source{}} = MediaSource.create_source(valid_once_attrs) assert {:ok, %Source{}} = Sources.create_source(valid_once_attrs)
assert {:error, %Ecto.Changeset{}} = MediaSource.create_source(valid_once_attrs) assert {:error, %Ecto.Changeset{}} = Sources.create_source(valid_once_attrs)
end end
test "creation lets you duplicate collection_ids as long as the media profile is different" do test "creation lets you duplicate collection_ids as long as the media profile is different" do
@ -100,8 +100,8 @@ defmodule Pinchflat.MediaSourceTest do
source_1_attrs = Map.merge(valid_attrs, %{media_profile_id: media_profile_fixture().id}) source_1_attrs = Map.merge(valid_attrs, %{media_profile_id: media_profile_fixture().id})
source_2_attrs = Map.merge(valid_attrs, %{media_profile_id: media_profile_fixture().id}) source_2_attrs = Map.merge(valid_attrs, %{media_profile_id: media_profile_fixture().id})
assert {:ok, %Source{}} = MediaSource.create_source(source_1_attrs) assert {:ok, %Source{}} = Sources.create_source(source_1_attrs)
assert {:ok, %Source{}} = MediaSource.create_source(source_2_attrs) assert {:ok, %Source{}} = Sources.create_source(source_2_attrs)
end end
test "creation will schedule the indexing task" do test "creation will schedule the indexing task" do
@ -113,7 +113,7 @@ defmodule Pinchflat.MediaSourceTest do
collection_type: "channel" collection_type: "channel"
} }
assert {:ok, %Source{} = source} = MediaSource.create_source(valid_attrs) assert {:ok, %Source{} = source} = Sources.create_source(valid_attrs)
assert_enqueued(worker: MediaIndexingWorker, args: %{"id" => source.id}) assert_enqueued(worker: MediaIndexingWorker, args: %{"id" => source.id})
end end
@ -124,7 +124,7 @@ defmodule Pinchflat.MediaSourceTest do
source = source_fixture() source = source_fixture()
update_attrs = %{collection_name: "some updated name"} update_attrs = %{collection_name: "some updated name"}
assert {:ok, %Source{} = source} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{} = source} = Sources.update_source(source, update_attrs)
assert source.collection_name == "some updated name" assert source.collection_name == "some updated name"
end end
@ -134,7 +134,7 @@ defmodule Pinchflat.MediaSourceTest do
source = source_fixture() source = source_fixture()
update_attrs = %{original_url: "https://www.youtube.com/channel/abc123"} update_attrs = %{original_url: "https://www.youtube.com/channel/abc123"}
assert {:ok, %Source{} = source} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{} = source} = Sources.update_source(source, update_attrs)
assert source.collection_name == "some channel name" assert source.collection_name == "some channel name"
assert String.starts_with?(source.collection_id, "some_channel_id_") assert String.starts_with?(source.collection_id, "some_channel_id_")
end end
@ -145,7 +145,7 @@ defmodule Pinchflat.MediaSourceTest do
source = source_fixture(collection_type: "playlist") source = source_fixture(collection_type: "playlist")
update_attrs = %{original_url: "https://www.youtube.com/playlist?list=abc123"} update_attrs = %{original_url: "https://www.youtube.com/playlist?list=abc123"}
assert {:ok, %Source{} = source} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{} = source} = Sources.update_source(source, update_attrs)
assert source.collection_name == "some playlist name" assert source.collection_name == "some playlist name"
assert String.starts_with?(source.collection_id, "some_playlist_id_") assert String.starts_with?(source.collection_id, "some_playlist_id_")
end end
@ -156,14 +156,14 @@ defmodule Pinchflat.MediaSourceTest do
source = source_fixture() source = source_fixture()
update_attrs = %{name: "some updated name"} update_attrs = %{name: "some updated name"}
assert {:ok, %Source{}} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{}} = Sources.update_source(source, update_attrs)
end end
test "updating the index frequency will re-schedule the indexing task" do test "updating the index frequency will re-schedule the indexing task" do
source = source_fixture() source = source_fixture()
update_attrs = %{index_frequency_minutes: 123} update_attrs = %{index_frequency_minutes: 123}
assert {:ok, %Source{} = source} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{} = source} = Sources.update_source(source, update_attrs)
assert source.index_frequency_minutes == 123 assert source.index_frequency_minutes == 123
assert_enqueued(worker: MediaIndexingWorker, args: %{"id" => source.id}) assert_enqueued(worker: MediaIndexingWorker, args: %{"id" => source.id})
end end
@ -172,7 +172,7 @@ defmodule Pinchflat.MediaSourceTest do
source = source_fixture() source = source_fixture()
update_attrs = %{name: "some updated name"} update_attrs = %{name: "some updated name"}
assert {:ok, %Source{}} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{}} = Sources.update_source(source, update_attrs)
refute_enqueued(worker: MediaIndexingWorker, args: %{"id" => source.id}) refute_enqueued(worker: MediaIndexingWorker, args: %{"id" => source.id})
end end
@ -182,7 +182,7 @@ defmodule Pinchflat.MediaSourceTest do
update_attrs = %{download_media: true} update_attrs = %{download_media: true}
refute_enqueued(worker: VideoDownloadWorker) refute_enqueued(worker: VideoDownloadWorker)
assert {:ok, %Source{}} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{}} = Sources.update_source(source, update_attrs)
assert_enqueued(worker: VideoDownloadWorker, args: %{"id" => media_item.id}) assert_enqueued(worker: VideoDownloadWorker, args: %{"id" => media_item.id})
end end
@ -193,7 +193,7 @@ defmodule Pinchflat.MediaSourceTest do
SourceTasks.enqueue_pending_media_tasks(source) SourceTasks.enqueue_pending_media_tasks(source)
assert_enqueued(worker: VideoDownloadWorker, args: %{"id" => media_item.id}) assert_enqueued(worker: VideoDownloadWorker, args: %{"id" => media_item.id})
assert {:ok, %Source{}} = MediaSource.update_source(source, update_attrs) assert {:ok, %Source{}} = Sources.update_source(source, update_attrs)
refute_enqueued(worker: VideoDownloadWorker) refute_enqueued(worker: VideoDownloadWorker)
end end
@ -201,29 +201,29 @@ defmodule Pinchflat.MediaSourceTest do
source = source_fixture() source = source_fixture()
assert {:error, %Ecto.Changeset{}} = assert {:error, %Ecto.Changeset{}} =
MediaSource.update_source(source, @invalid_source_attrs) Sources.update_source(source, @invalid_source_attrs)
assert source == MediaSource.get_source!(source.id) assert source == Sources.get_source!(source.id)
end end
end end
describe "delete_source/1" do describe "delete_source/1" do
test "it deletes the source" do test "it deletes the source" do
source = source_fixture() source = source_fixture()
assert {:ok, %Source{}} = MediaSource.delete_source(source) assert {:ok, %Source{}} = Sources.delete_source(source)
assert_raise Ecto.NoResultsError, fn -> MediaSource.get_source!(source.id) end assert_raise Ecto.NoResultsError, fn -> Sources.get_source!(source.id) end
end end
test "it returns a source changeset" do test "it returns a source changeset" do
source = source_fixture() source = source_fixture()
assert %Ecto.Changeset{} = MediaSource.change_source(source) assert %Ecto.Changeset{} = Sources.change_source(source)
end end
test "deletion also deletes all associated tasks" do test "deletion also deletes all associated tasks" do
source = source_fixture() source = source_fixture()
task = task_fixture(source_id: source.id) task = task_fixture(source_id: source.id)
assert {:ok, %Source{}} = MediaSource.delete_source(source) assert {:ok, %Source{}} = Sources.delete_source(source)
assert_raise Ecto.NoResultsError, fn -> Repo.reload!(task) end assert_raise Ecto.NoResultsError, fn -> Repo.reload!(task) end
end end
end end
@ -232,7 +232,7 @@ defmodule Pinchflat.MediaSourceTest do
test "it returns a changeset" do test "it returns a changeset" do
source = source_fixture() source = source_fixture()
assert %Ecto.Changeset{} = MediaSource.change_source(source) assert %Ecto.Changeset{} = Sources.change_source(source)
end end
end end
@ -241,13 +241,13 @@ defmodule Pinchflat.MediaSourceTest do
stub(YtDlpRunnerMock, :run, &runner_function_mock/3) stub(YtDlpRunnerMock, :run, &runner_function_mock/3)
source = source_fixture() source = source_fixture()
assert %Ecto.Changeset{} = MediaSource.change_source_from_url(source, %{}) assert %Ecto.Changeset{} = Sources.change_source_from_url(source, %{})
end end
test "it does not fetch source details if the original_url isn't in the changeset" do test "it does not fetch source details if the original_url isn't in the changeset" do
expect(YtDlpRunnerMock, :run, 0, &runner_function_mock/3) expect(YtDlpRunnerMock, :run, 0, &runner_function_mock/3)
changeset = MediaSource.change_source_from_url(%Source{}, %{name: "some updated name"}) changeset = Sources.change_source_from_url(%Source{}, %{name: "some updated name"})
assert %Ecto.Changeset{} = changeset assert %Ecto.Changeset{} = changeset
end end
@ -256,7 +256,7 @@ defmodule Pinchflat.MediaSourceTest do
expect(YtDlpRunnerMock, :run, &runner_function_mock/3) expect(YtDlpRunnerMock, :run, &runner_function_mock/3)
changeset = changeset =
MediaSource.change_source_from_url(%Source{}, %{ Sources.change_source_from_url(%Source{}, %{
original_url: "https://www.youtube.com/channel/abc123" original_url: "https://www.youtube.com/channel/abc123"
}) })
@ -270,7 +270,7 @@ defmodule Pinchflat.MediaSourceTest do
media_profile_id = media_profile.id media_profile_id = media_profile.id
changeset = changeset =
MediaSource.change_source_from_url(%Source{collection_type: :channel}, %{ Sources.change_source_from_url(%Source{collection_type: :channel}, %{
original_url: "https://www.youtube.com/channel/abc123", original_url: "https://www.youtube.com/channel/abc123",
media_profile_id: media_profile.id media_profile_id: media_profile.id
}) })
@ -291,7 +291,7 @@ defmodule Pinchflat.MediaSourceTest do
end) end)
changeset = changeset =
MediaSource.change_source_from_url(%Source{}, %{ Sources.change_source_from_url(%Source{}, %{
original_url: "https://www.youtube.com/channel/abc123" original_url: "https://www.youtube.com/channel/abc123"
}) })

View file

@ -4,7 +4,7 @@ defmodule Pinchflat.Tasks.SourceTasksTest do
import Mox import Mox
import Pinchflat.TasksFixtures import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures import Pinchflat.MediaFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.Tasks.Task alias Pinchflat.Tasks.Task

View file

@ -3,7 +3,7 @@ defmodule Pinchflat.TasksTest do
import Pinchflat.JobFixtures import Pinchflat.JobFixtures
import Pinchflat.TasksFixtures import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures import Pinchflat.MediaFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.Tasks.Task alias Pinchflat.Tasks.Task

View file

@ -3,7 +3,7 @@ defmodule Pinchflat.Workers.MediaIndexingWorkerTest do
import Mox import Mox
import Pinchflat.MediaFixtures import Pinchflat.MediaFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
alias Pinchflat.Tasks alias Pinchflat.Tasks
alias Pinchflat.Workers.MediaIndexingWorker alias Pinchflat.Workers.MediaIndexingWorker

View file

@ -4,7 +4,7 @@ defmodule Pinchflat.Workers.VideoDownloadWorkerTest do
import Mox import Mox
import Pinchflat.MediaFixtures import Pinchflat.MediaFixtures
alias Pinchflat.MediaSource alias Pinchflat.Sources
alias Pinchflat.Workers.VideoDownloadWorker alias Pinchflat.Workers.VideoDownloadWorker
setup :verify_on_exit! setup :verify_on_exit!
@ -60,7 +60,7 @@ defmodule Pinchflat.Workers.VideoDownloadWorkerTest do
test "it does not download if the source is set to not download", %{media_item: media_item} do test "it does not download if the source is set to not download", %{media_item: media_item} do
expect(YtDlpRunnerMock, :run, 0, fn _url, _opts, _ot -> :ok end) expect(YtDlpRunnerMock, :run, 0, fn _url, _opts, _ot -> :ok end)
MediaSource.update_source(media_item.source, %{download_media: false}) Sources.update_source(media_item.source, %{download_media: false})
perform_job(VideoDownloadWorker, %{id: media_item.id}) perform_job(VideoDownloadWorker, %{id: media_item.id})
end end

View file

@ -2,7 +2,7 @@ defmodule PinchflatWeb.PageControllerTest do
use PinchflatWeb.ConnCase use PinchflatWeb.ConnCase
import Pinchflat.ProfilesFixtures import Pinchflat.ProfilesFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
describe "GET / when testing onboarding" do describe "GET / when testing onboarding" do
test "sets the onboarding session to true when onboarding", %{conn: conn} do test "sets the onboarding session to true when onboarding", %{conn: conn} do

View file

@ -3,7 +3,7 @@ defmodule PinchflatWeb.SourceControllerTest do
import Mox import Mox
import Pinchflat.ProfilesFixtures import Pinchflat.ProfilesFixtures
import Pinchflat.MediaSourceFixtures import Pinchflat.SourcesFixtures
setup do setup do
media_profile = media_profile_fixture() media_profile = media_profile_fixture()

View file

@ -4,7 +4,7 @@ defmodule Pinchflat.MediaFixtures do
entities via the `Pinchflat.Media` context. entities via the `Pinchflat.Media` context.
""" """
alias Pinchflat.MediaSourceFixtures alias Pinchflat.SourcesFixtures
@doc """ @doc """
Generate a media_item. Generate a media_item.
@ -18,7 +18,7 @@ defmodule Pinchflat.MediaFixtures do
original_url: "https://www.youtube.com/channel/#{Faker.String.base64(12)}", original_url: "https://www.youtube.com/channel/#{Faker.String.base64(12)}",
livestream: false, livestream: false,
media_filepath: "/video/#{Faker.File.file_name(:video)}", media_filepath: "/video/#{Faker.File.file_name(:video)}",
source_id: MediaSourceFixtures.source_fixture().id source_id: SourcesFixtures.source_fixture().id
}) })
|> Pinchflat.Media.create_media_item() |> Pinchflat.Media.create_media_item()

View file

@ -1,12 +1,12 @@
defmodule Pinchflat.MediaSourceFixtures do defmodule Pinchflat.SourcesFixtures do
@moduledoc """ @moduledoc """
This module defines test helpers for creating This module defines test helpers for creating
entities via the `Pinchflat.MediaSource` context. entities via the `Pinchflat.Sources` context.
""" """
alias Pinchflat.Repo alias Pinchflat.Repo
alias Pinchflat.ProfilesFixtures alias Pinchflat.ProfilesFixtures
alias Pinchflat.MediaSource.Source alias Pinchflat.Sources.Source
@doc """ @doc """
Generate a source. Generate a source.

View file

@ -5,7 +5,7 @@ defmodule Pinchflat.TasksFixtures do
""" """
alias Pinchflat.JobFixtures alias Pinchflat.JobFixtures
alias Pinchflat.MediaSourceFixtures alias Pinchflat.SourcesFixtures
@doc """ @doc """
Generate a task. Generate a task.
@ -14,7 +14,7 @@ defmodule Pinchflat.TasksFixtures do
{:ok, task} = {:ok, task} =
attrs attrs
|> Enum.into(%{ |> Enum.into(%{
source_id: MediaSourceFixtures.source_fixture().id, source_id: SourcesFixtures.source_fixture().id,
job_id: JobFixtures.job_fixture().id job_id: JobFixtures.job_fixture().id
}) })
|> Pinchflat.Tasks.create_task() |> Pinchflat.Tasks.create_task()