[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
This commit is contained in:
Kieran
2024-05-02 08:43:37 -07:00
committed by GitHub
parent 8051107d32
commit 112c6a4f14
47 changed files with 498 additions and 70 deletions
@@ -1,5 +1,5 @@
defmodule PinchflatWeb.ErrorHTMLTest do
use PinchflatWeb.ConnCase, async: true
use PinchflatWeb.ConnCase, async: false
# Bring render_to_string/4 for testing custom views
import Phoenix.Template
@@ -1,5 +1,5 @@
defmodule PinchflatWeb.ErrorJSONTest do
use PinchflatWeb.ConnCase, async: true
use PinchflatWeb.ConnCase, async: false
test "renders 404" do
assert PinchflatWeb.ErrorJSON.render("404.json", %{}) == %{errors: %{detail: "Not Found"}}
@@ -1,11 +1,14 @@
defmodule PinchflatWeb.MediaItemControllerTest do
use PinchflatWeb.ConnCase
import Mox
import Pinchflat.MediaFixtures
alias Pinchflat.Repo
alias Pinchflat.Downloading.MediaDownloadWorker
setup :verify_on_exit!
describe "show media" do
setup [:create_media_item]
@@ -49,6 +52,7 @@ defmodule PinchflatWeb.MediaItemControllerTest do
describe "delete media" do
setup do
media_item = media_item_with_attachments()
stub(UserScriptRunnerMock, :run, fn _event_type, _data -> :ok end)
%{media_item: media_item}
end
@@ -1,6 +1,7 @@
defmodule PinchflatWeb.MediaProfileControllerTest do
use PinchflatWeb.ConnCase
import Mox
import Pinchflat.MediaFixtures
import Pinchflat.SourcesFixtures
import Pinchflat.ProfilesFixtures
@@ -15,6 +16,8 @@ defmodule PinchflatWeb.MediaProfileControllerTest do
}
@invalid_attrs %{name: nil, output_path_template: nil}
setup :verify_on_exit!
setup do
Settings.set(onboarding: false)
@@ -136,6 +139,12 @@ defmodule PinchflatWeb.MediaProfileControllerTest do
describe "delete media_profile when deleting the records and files" do
setup [:create_media_profile]
setup do
stub(UserScriptRunnerMock, :run, fn _event_type, _data -> :ok end)
:ok
end
test "deletes chosen media_profile and its associations", %{conn: conn, media_profile: media_profile} do
source = source_fixture(media_profile_id: media_profile.id)
media_item = media_item_with_attachments(%{source_id: source.id})
@@ -145,6 +145,12 @@ defmodule PinchflatWeb.SourceControllerTest do
describe "delete source when deleting the records and files" do
setup [:create_source]
setup do
stub(UserScriptRunnerMock, :run, fn _event_type, _data -> :ok end)
:ok
end
test "deletes chosen source and media_items", %{conn: conn, source: source, media_item: media_item} do
delete(conn, ~p"/sources/#{source}?delete_files=true")