48 lines
1.2 KiB
Elixir
48 lines
1.2 KiB
Elixir
|
defmodule Podbox.Podcast.FeedTest do
|
||
|
@moduledoc false
|
||
|
use DataCase
|
||
|
use Factory
|
||
|
|
||
|
alias Podbox.{Download.Asset, Podcast, Podcast.Feed, Podcast.Show}
|
||
|
|
||
|
describe "get_by_asset_id" do
|
||
|
test "when the asset exists, it returns the feed" do
|
||
|
feed = insert!(Feed, build: [:assets], load: [:assets])
|
||
|
[asset] = feed.assets
|
||
|
|
||
|
actual = Podcast.get_by_asset_id!(asset.id)
|
||
|
assert actual.id == feed.id
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "subscribe" do
|
||
|
test "it creates a feed" do
|
||
|
assert %Feed{} =
|
||
|
Faker.Internet.url()
|
||
|
|> Podcast.subscribe!()
|
||
|
end
|
||
|
|
||
|
test "it creates an asset" do
|
||
|
assert feed =
|
||
|
Faker.Internet.url()
|
||
|
|> Podcast.subscribe!()
|
||
|
|> Ash.load!([:assets])
|
||
|
|
||
|
assert [%Asset{}] = feed.assets
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "download_complete" do
|
||
|
test "creates a show" do
|
||
|
asset = insert!(Asset, variant: :feed_download_complete)
|
||
|
expected = insert!(Feed, relate: [assets: [asset]])
|
||
|
|
||
|
assert actual = Podcast.feed_download_complete!(asset.id)
|
||
|
assert actual.id == expected.id
|
||
|
|
||
|
feed = Ash.load!(actual, show: :episodes)
|
||
|
assert feed.show.episodes != []
|
||
|
end
|
||
|
end
|
||
|
end
|