112c6a4f14
* 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
102 lines
2.4 KiB
Elixir
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
|