podbox_ash/test/podcast/feed_test.exs

48 lines
1.2 KiB
Elixir
Raw Normal View History

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