Files
pinchflat/test/pinchflat/boot/pre_job_startup_tasks_test.exs
T
Kieran 112c6a4f14 [Enhancement] Custom media lifecycle scripts (#219)
* Namespaced notification modules under lifecycle

* Added a JSON encoder for all the main model types

* Added startup task to create user script file

* Hook up user script event to media download

* Hooked up media deletion user script

* Added jq to docker deps

* Updated README
2024-05-02 08:43:37 -07:00

102 lines
2.4 KiB
Elixir

defmodule Pinchflat.Boot.PreJobStartupTasksTest do
use Pinchflat.DataCase
import Mox
import Pinchflat.JobFixtures
alias Pinchflat.Settings
alias Pinchflat.Boot.PreJobStartupTasks
setup do
stub(YtDlpRunnerMock, :version, fn -> {:ok, "1"} end)
stub(AppriseRunnerMock, :version, fn -> {:ok, "2"} end)
:ok
end
describe "reset_executing_jobs" do
test "resets executing jobs" do
job = job_fixture()
Repo.update_all(Oban.Job, set: [state: "executing"])
assert Repo.reload!(job).state == "executing"
PreJobStartupTasks.init(%{})
assert Repo.reload!(job).state == "retryable"
end
end
describe "create_blank_yt_dlp_files" do
test "creates a blank cookie file" do
base_dir = Application.get_env(:pinchflat, :extras_directory)
filepath = Path.join(base_dir, "cookies.txt")
File.rm(filepath)
refute File.exists?(filepath)
PreJobStartupTasks.init(%{})
assert File.exists?(filepath)
end
test "creates a blank yt-dlp config file" do
base_dir = Application.get_env(:pinchflat, :extras_directory)
filepath = Path.join([base_dir, "yt-dlp-configs", "base-config.txt"])
File.rm(filepath)
refute File.exists?(filepath)
PreJobStartupTasks.init(%{})
assert File.exists?(filepath)
end
end
describe "create_blank_user_script_file" do
test "creates a blank script file" do
base_dir = Application.get_env(:pinchflat, :extras_directory)
filepath = Path.join([base_dir, "user-scripts", "lifecycle"])
File.rm(filepath)
refute File.exists?(filepath)
PreJobStartupTasks.init(%{})
assert File.exists?(filepath)
end
test "gives it 755 permissions" do
base_dir = Application.get_env(:pinchflat, :extras_directory)
filepath = Path.join([base_dir, "user-scripts", "lifecycle"])
File.rm(filepath)
PreJobStartupTasks.init(%{})
assert File.stat!(filepath).mode == 0o100755
end
end
describe "apply_default_settings" do
test "sets yt_dlp version" do
Settings.set(yt_dlp_version: nil)
refute Settings.get!(:yt_dlp_version)
PreJobStartupTasks.init(%{})
assert Settings.get!(:yt_dlp_version)
end
test "sets apprise version" do
Settings.set(apprise_version: nil)
refute Settings.get!(:apprise_version)
PreJobStartupTasks.init(%{})
assert Settings.get!(:apprise_version)
end
end
end