RSS feed for sources (#110)
* Add media streaming (#108) * [WIP] set up streaming route * Added UUID to sources and media items * Added media preview to MI show page * Added plug to strip file extensions * [VERY WIP] basic podcast RSS setup * [WIP] got basic podcast RSS working * [WIP] more expanding on RSS * Comment * [WIP] Working on refactoring feed * Added UUID backfill to a migration * [WIP] Moar refactoring * [WIP] Adding UI for getting RSS feed * Many tests * Added conditional routing for feed URLs * Removed the need for url_base to be set * Updated preset name * Rendered certain fields HTML-safe; Added logging to confirm range request support * Fixed incorrect scheme issue * Updated env var * Updated other UI to use dropdown * removed commented code * Generate rss feeds (#123) * Added plug to strip file extensions * [VERY WIP] basic podcast RSS setup * [WIP] got basic podcast RSS working * [WIP] more expanding on RSS * [WIP] Working on refactoring feed * Added UUID backfill to a migration * [WIP] Moar refactoring * [WIP] Adding UI for getting RSS feed * Many tests * Added conditional routing for feed URLs * Removed the need for url_base to be set * Updated preset name * Rendered certain fields HTML-safe; Added logging to confirm range request support * Fixed incorrect scheme issue * Updated env var * Updated other UI to use dropdown * removed commented code * docs * Added unique index to UUID fields
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
defmodule Pinchflat.Podcasts.PodcastHelpersTest do
|
||||
use Pinchflat.DataCase
|
||||
|
||||
import Pinchflat.SourcesFixtures
|
||||
import Pinchflat.MediaFixtures
|
||||
|
||||
alias Pinchflat.Podcasts.PodcastHelpers
|
||||
|
||||
describe "persisted_media_items_for/2" do
|
||||
test "returns media items with files that exist on-disk" do
|
||||
source = source_fixture()
|
||||
good_media = media_item_with_attachments(%{source_id: source.id})
|
||||
_bad_media = media_item_fixture(%{source_id: source.id, media_filepath: "/tmp/existing_file.mp3"})
|
||||
|
||||
assert [persisted_media] = PodcastHelpers.persisted_media_items_for(source)
|
||||
assert persisted_media.id == good_media.id
|
||||
end
|
||||
|
||||
test "lets you specify a limit" do
|
||||
source = source_fixture()
|
||||
_good_media = media_item_with_attachments(%{source_id: source.id})
|
||||
|
||||
assert [] = PodcastHelpers.persisted_media_items_for(source, limit: 0)
|
||||
end
|
||||
end
|
||||
|
||||
describe "select_cover_image/2" do
|
||||
test "returns a source's poster, if present" do
|
||||
source = source_with_metadata_attachments()
|
||||
|
||||
{:ok, res} = PodcastHelpers.select_cover_image(source, [])
|
||||
|
||||
assert res == source.metadata.poster_filepath
|
||||
end
|
||||
|
||||
test "falls back to a source's fanart, if present" do
|
||||
source = source_with_metadata_attachments()
|
||||
|
||||
File.rm(source.metadata.poster_filepath)
|
||||
|
||||
{:ok, res} = PodcastHelpers.select_cover_image(source, [])
|
||||
|
||||
assert res == source.metadata.fanart_filepath
|
||||
end
|
||||
|
||||
test "falls back to a media item's thumbnail, if present" do
|
||||
source = source_with_metadata_attachments()
|
||||
media_item = media_item_with_metadata_attachments(%{source_id: source.id})
|
||||
|
||||
File.rm(source.metadata.poster_filepath)
|
||||
File.rm(source.metadata.fanart_filepath)
|
||||
|
||||
{:ok, res} = PodcastHelpers.select_cover_image(source, [media_item])
|
||||
|
||||
assert res == media_item.metadata.thumbnail_filepath
|
||||
end
|
||||
|
||||
test "returns error if no artwork can be found" do
|
||||
source = source_fixture()
|
||||
|
||||
assert PodcastHelpers.select_cover_image(source, []) == {:error, :no_suitable_image}
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user