[Housekeeping] Improve test stability (#232)

* Ensured all tests use at least the DataCase module

* addressed one flakey test

* More flakey tests

* Consolidated Mox usage
This commit is contained in:
Kieran
2024-05-08 09:57:36 -07:00
committed by GitHub
parent b5d2ba4191
commit 933daf8c78
39 changed files with 51 additions and 83 deletions
@@ -1,7 +1,6 @@
defmodule Pinchflat.Boot.PreJobStartupTasksTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.JobFixtures
alias Pinchflat.Settings
@@ -1,7 +1,6 @@
defmodule Pinchflat.Downloading.DownloadingHelpersTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
import Pinchflat.ProfilesFixtures
@@ -10,8 +9,6 @@ defmodule Pinchflat.Downloading.DownloadingHelpersTest do
alias Pinchflat.Downloading.DownloadingHelpers
alias Pinchflat.Downloading.MediaDownloadWorker
setup :verify_on_exit!
describe "enqueue_pending_download_tasks/1" do
test "it enqueues a job for each pending media item" do
source = source_fixture()
@@ -1,7 +1,6 @@
defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
alias Pinchflat.Media
@@ -9,8 +8,6 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.Downloading.MediaDownloadWorker
setup :verify_on_exit!
setup do
stub(UserScriptRunnerMock, :run, fn _event_type, _data -> :ok end)
stub(HTTPClientMock, :get, fn _url, _headers, _opts -> {:ok, ""} end)
@@ -1,14 +1,12 @@
defmodule Pinchflat.Downloading.MediaDownloaderTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
import Pinchflat.ProfilesFixtures
alias Pinchflat.Downloading.MediaDownloader
setup :verify_on_exit!
setup do
media_item =
Repo.preload(
@@ -1,15 +1,12 @@
defmodule Pinchflat.Downloading.MediaRetentionWorkerTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
alias Pinchflat.Media
alias Pinchflat.Downloading.MediaRetentionWorker
setup :verify_on_exit!
describe "perform/1" do
setup do
stub(UserScriptRunnerMock, :run, fn _event_type, _data -> :ok end)
@@ -1,5 +1,5 @@
defmodule Pinchflat.Downloading.OutputPath.ParserTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Downloading.OutputPath.Parser
@@ -1,7 +1,6 @@
defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
import Pinchflat.ProfilesFixtures
@@ -11,8 +10,6 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
alias Pinchflat.Downloading.MediaDownloadWorker
alias Pinchflat.FastIndexing.FastIndexingHelpers
setup :verify_on_exit!
describe "kickoff_download_tasks_from_youtube_rss_feed/1" do
setup do
stub(YtDlpRunnerMock, :run, fn _url, _opts, _ot ->
@@ -1,15 +1,12 @@
defmodule Pinchflat.FastIndexing.FastIndexingWorkerTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.SourcesFixtures
alias Pinchflat.Settings
alias Pinchflat.Sources.Source
alias Pinchflat.FastIndexing.FastIndexingWorker
setup :verify_on_exit!
describe "kickoff_with_task/2" do
test "starts the worker" do
source = source_fixture(fast_index: true)
@@ -1,12 +1,10 @@
defmodule Pinchflat.FastIndexing.YoutubeRssTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.SourcesFixtures
alias Pinchflat.FastIndexing.YoutubeRss
setup :verify_on_exit!
setup do
source = source_fixture()
@@ -1,5 +1,5 @@
defmodule Pinchflat.Lifecycle.Notifications.CommandRunnerTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Lifecycle.Notifications.CommandRunner, as: Runner
@@ -1,7 +1,6 @@
defmodule Pinchflat.Lifecycle.Notifications.SourceNotificationsTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
@@ -9,8 +8,6 @@ defmodule Pinchflat.Lifecycle.Notifications.SourceNotificationsTest do
@apprise_servers ["server_1", "server_2"]
setup :verify_on_exit!
describe "wrap_new_media_notification/3" do
test "sends a notification when the pending count changes" do
source = source_fixture()
@@ -1,5 +1,5 @@
defmodule Pinchflat.Lifecycle.UserScripts.CommandRunnerTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.Lifecycle.UserScripts.CommandRunner, as: Runner
@@ -15,11 +15,12 @@ defmodule Pinchflat.Lifecycle.UserScripts.CommandRunnerTest do
test "runs the provided lifecycle file if present" do
# We *love* indirectly testing side effects
tmp_dir = Application.get_env(:pinchflat, :tmpfile_directory)
File.write(filepath(), "#!/bin/bash\ntouch #{tmp_dir}/test_file\n")
filename = "#{tmp_dir}/test_file-#{Enum.random(1..1000)}"
File.write(filepath(), "#!/bin/bash\ntouch #{filename}\n")
refute File.exists?("#{tmp_dir}/test_file")
refute File.exists?(filename)
assert :ok = Runner.run(:media_downloaded, %{})
assert File.exists?("#{tmp_dir}/test_file")
assert File.exists?(filename)
end
test "passes the event name to the script" do
-3
View File
@@ -1,7 +1,6 @@
defmodule Pinchflat.MediaTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures
import Pinchflat.ProfilesFixtures
@@ -13,8 +12,6 @@ defmodule Pinchflat.MediaTest do
alias Pinchflat.YtDlp.Media, as: YtDlpMedia
setup :verify_on_exit!
@invalid_attrs %{title: nil, media_id: nil, media_filepath: nil}
describe "schema" do
@@ -1,6 +1,6 @@
defmodule Pinchflat.Metadata.MetadataFileHelpersTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
alias Pinchflat.Metadata.MetadataFileHelpers, as: Helpers
@@ -11,8 +11,6 @@ defmodule Pinchflat.Metadata.MetadataFileHelpersTest do
{:ok, %{media_item: media_item}}
end
setup :verify_on_exit!
describe "compress_and_store_metadata_for/2" do
test "returns the filepath", %{media_item: media_item} do
metadata_map = %{"foo" => "bar"}
@@ -1,6 +1,6 @@
defmodule Pinchflat.Metadata.SourceMetadataStorageWorkerTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.SourcesFixtures
import Pinchflat.ProfilesFixtures
@@ -11,8 +11,6 @@ defmodule Pinchflat.Metadata.SourceMetadataStorageWorkerTest do
@source_details_ot "%(.{channel,channel_id,playlist_id,playlist_title,filename})j"
@metadata_ot "playlist:%()j"
setup :verify_on_exit!
describe "kickoff_with_task/1" do
test "enqueues a new worker for the source" do
source = source_fixture()
-3
View File
@@ -1,7 +1,6 @@
defmodule Pinchflat.ProfilesTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
import Pinchflat.ProfilesFixtures
@@ -11,8 +10,6 @@ defmodule Pinchflat.ProfilesTest do
@invalid_attrs %{name: nil, output_path_template: nil}
setup :verify_on_exit!
describe "schema" do
test "can be JSON encoded without error" do
profile = media_profile_fixture()
@@ -1,5 +1,5 @@
defmodule Pinchflat.SlowIndexing.FileFollowerServerTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.SlowIndexing.FileFollowerServer
@@ -1,7 +1,6 @@
defmodule Pinchflat.SlowIndexing.MediaCollectionIndexingWorkerTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
@@ -13,8 +12,6 @@ defmodule Pinchflat.SlowIndexing.MediaCollectionIndexingWorkerTest do
alias Pinchflat.Downloading.MediaDownloadWorker
alias Pinchflat.SlowIndexing.MediaCollectionIndexingWorker
setup :verify_on_exit!
describe "kickoff_with_task/3" do
setup do
source = source_fixture(index_frequency_minutes: 10)
@@ -1,7 +1,6 @@
defmodule Pinchflat.SlowIndexing.SlowIndexingHelpersTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
@@ -15,8 +14,6 @@ defmodule Pinchflat.SlowIndexing.SlowIndexingHelpersTest do
alias Pinchflat.SlowIndexing.SlowIndexingHelpers
alias Pinchflat.SlowIndexing.MediaCollectionIndexingWorker
setup :verify_on_exit!
describe "kickoff_indexing_task/3" do
test "it schedules a job" do
source = source_fixture(index_frequency_minutes: 1)
+1 -3
View File
@@ -1,6 +1,6 @@
defmodule Pinchflat.SourcesTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.TasksFixtures
import Pinchflat.MediaFixtures
import Pinchflat.ProfilesFixtures
@@ -18,8 +18,6 @@ defmodule Pinchflat.SourcesTest do
@invalid_source_attrs %{name: nil, collection_id: nil}
setup :verify_on_exit!
describe "schema" do
test "source_metadata is deleted when the source is deleted" do
source =
@@ -1,5 +1,5 @@
defmodule Pinchflat.Utils.ChangesetUtilsTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
defmodule MockSchema do
use Ecto.Schema
+1 -1
View File
@@ -1,5 +1,5 @@
defmodule Pinchflat.Utils.CliUtilsTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.CliUtils
+1 -1
View File
@@ -1,5 +1,5 @@
defmodule Pinchflat.Utils.DatetimeUtilsTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.DatetimeUtils
+1 -1
View File
@@ -1,5 +1,5 @@
defmodule Pinchflat.Utils.FunctionUtilsTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.FunctionUtils
+1 -1
View File
@@ -1,5 +1,5 @@
defmodule Pinchflat.Utils.NumberUtilsTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.NumberUtils
+1 -1
View File
@@ -1,5 +1,5 @@
defmodule Pinchflat.Utils.StringUtilsTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.StringUtils
+1 -1
View File
@@ -1,5 +1,5 @@
defmodule Pinchflat.Utils.XmlUtilsTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.XmlUtils
@@ -1,5 +1,5 @@
defmodule Pinchflat.YtDlp.CommandRunnerTest do
use ExUnit.Case, async: false
use Pinchflat.DataCase
alias Pinchflat.Utils.FilesystemUtils
@@ -1,6 +1,6 @@
defmodule Pinchflat.YtDlp.MediaCollectionTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.SourcesFixtures
alias Pinchflat.YtDlp.Media
@@ -8,8 +8,6 @@ defmodule Pinchflat.YtDlp.MediaCollectionTest do
@channel_url "https://www.youtube.com/c/PinchflatTestChannel"
setup :verify_on_exit!
describe "get_media_attributes_for_collection/2" do
test "returns a list of video attributes with no blank elements" do
expect(YtDlpRunnerMock, :run, fn _url, _opts, _ot, _addl_opts ->
+1 -3
View File
@@ -1,14 +1,12 @@
defmodule Pinchflat.YtDlp.MediaTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.MediaFixtures
alias Pinchflat.YtDlp.Media
@media_url "https://www.youtube.com/watch?v=TiZPUDkDYbk"
setup :verify_on_exit!
describe "download/2" do
test "it calls the backend runner with the expected arguments" do
expect(YtDlpRunnerMock, :run, fn @media_url, opts, ot, addl ->