Rename media sources (#25)
* Renamed MediaSource to Sources * Renamed MediaItem controller namespace
This commit is contained in:
parent
d4d653398b
commit
7d62f7c7df
36 changed files with 87 additions and 87 deletions
4
.iex.exs
4
.iex.exs
|
|
@ -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}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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{}, ...].
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 """
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
defmodule Pinchflat.MediaSource.Source do
|
defmodule Pinchflat.Sources.Source do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
The Source schema.
|
The Source schema.
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 """
|
||||||
|
|
@ -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{}, ...]
|
||||||
|
|
|
||||||
|
|
@ -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 ->
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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/*"
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.")
|
||||||
|
|
@ -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/*"
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue