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