[Enhancement] Auto-update yt-dlp (#589)
* Added a command for updating yt-dlp * Added a yt-dlp update worker to run daily * Added a new file that runs post-boot when the app is ready to serve requests; put yt-dlp updater in there * Updated config to expose the current env globally; updated startup tasks to not run in test env * Removes unneeded test code
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
defmodule Pinchflat.Boot.PostBootStartupTasksTest do
|
||||
use Pinchflat.DataCase
|
||||
|
||||
alias Pinchflat.YtDlp.UpdateWorker
|
||||
alias Pinchflat.Boot.PostBootStartupTasks
|
||||
|
||||
describe "update_yt_dlp" do
|
||||
test "enqueues an update job" do
|
||||
assert [] = all_enqueued(worker: UpdateWorker)
|
||||
|
||||
PostBootStartupTasks.init(%{})
|
||||
|
||||
assert [%Oban.Job{}] = all_enqueued(worker: UpdateWorker)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -154,6 +154,14 @@ defmodule Pinchflat.YtDlp.CommandRunnerTest do
|
||||
end
|
||||
end
|
||||
|
||||
describe "update/0" do
|
||||
test "adds the update arg" do
|
||||
assert {:ok, output} = Runner.update()
|
||||
|
||||
assert String.contains?(output, "--update")
|
||||
end
|
||||
end
|
||||
|
||||
defp wrap_executable(new_executable, fun) do
|
||||
Application.put_env(:pinchflat, :yt_dlp_executable, new_executable)
|
||||
fun.()
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
defmodule Pinchflat.YtDlp.UpdateWorkerTest do
|
||||
use Pinchflat.DataCase
|
||||
|
||||
alias Pinchflat.Settings
|
||||
alias Pinchflat.YtDlp.UpdateWorker
|
||||
|
||||
describe "perform/1" do
|
||||
test "calls the yt-dlp runner to update yt-dlp" do
|
||||
expect(YtDlpRunnerMock, :update, fn -> {:ok, ""} end)
|
||||
expect(YtDlpRunnerMock, :version, fn -> {:ok, ""} end)
|
||||
|
||||
perform_job(UpdateWorker, %{})
|
||||
end
|
||||
|
||||
test "saves the new version to the database" do
|
||||
expect(YtDlpRunnerMock, :update, fn -> {:ok, ""} end)
|
||||
expect(YtDlpRunnerMock, :version, fn -> {:ok, "1.2.3"} end)
|
||||
|
||||
perform_job(UpdateWorker, %{})
|
||||
|
||||
assert {:ok, "1.2.3"} = Settings.get(:yt_dlp_version)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user