fix: issue #7 with broken macro renderings for photo archive and tag cloud
This commit is contained in:
57
test/bds/desktop/shell_live/gallery_import_test.exs
Normal file
57
test/bds/desktop/shell_live/gallery_import_test.exs
Normal file
@@ -0,0 +1,57 @@
|
||||
defmodule BDS.Desktop.ShellLive.GalleryImportTest do
|
||||
@moduledoc """
|
||||
Guards the regression where gallery images were imported but never linked to
|
||||
the post when AI analysis was unavailable (offline / no local model), leaving
|
||||
galleries empty. Linking must happen regardless of AI, matching the old app.
|
||||
"""
|
||||
use ExUnit.Case, async: false
|
||||
|
||||
import Ecto.Query
|
||||
|
||||
alias BDS.Desktop.ShellLive.GalleryImport
|
||||
alias BDS.Posts.PostMedia
|
||||
alias BDS.Repo
|
||||
|
||||
setup do
|
||||
:ok = Ecto.Adapters.SQL.Sandbox.checkout(Repo)
|
||||
Ecto.Adapters.SQL.Sandbox.mode(Repo, {:shared, self()})
|
||||
temp_dir = Path.join(System.tmp_dir!(), "bds-galimport-#{System.unique_integer([:positive])}")
|
||||
File.mkdir_p!(temp_dir)
|
||||
on_exit(fn -> File.rm_rf(temp_dir) end)
|
||||
|
||||
{:ok, project} = BDS.Projects.create_project(%{name: "GalImport", data_path: temp_dir})
|
||||
{:ok, _} = BDS.Metadata.update_project_metadata(project.id, %{main_language: "en"})
|
||||
|
||||
{:ok, post} =
|
||||
BDS.Posts.create_post(%{
|
||||
project_id: project.id,
|
||||
title: "Gallery Post",
|
||||
content: "[[gallery]]",
|
||||
language: "en"
|
||||
})
|
||||
|
||||
%{project: project, post: post, temp_dir: temp_dir}
|
||||
end
|
||||
|
||||
test "imports link every image to the post even without AI analysis", %{
|
||||
project: project,
|
||||
post: post,
|
||||
temp_dir: temp_dir
|
||||
} do
|
||||
paths =
|
||||
for i <- 1..3 do
|
||||
path = Path.join(temp_dir, "img_#{i}.jpg")
|
||||
File.write!(path, "fake jpeg #{i}")
|
||||
path
|
||||
end
|
||||
|
||||
GalleryImport.start(paths, project.id, post.id, "en", 2, self())
|
||||
|
||||
assert_received {:add_images_complete, 3}
|
||||
|
||||
link_count =
|
||||
Repo.aggregate(from(pm in PostMedia, where: pm.post_id == ^post.id), :count)
|
||||
|
||||
assert link_count == 3
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user