From 905a45b60fceddaf5e0b37acd8ab38996aae6c72 Mon Sep 17 00:00:00 2001 From: "Michael B. Klein" Date: Tue, 5 Mar 2024 21:42:33 +0000 Subject: [PATCH] Don't mint a new ark for a work that already has one --- app/lib/meadow/utils/arks.ex | 2 +- app/test/meadow/arks_test.exs | 7 +++++++ app/test/meadow/data/csv/export_test.exs | 6 ++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/lib/meadow/utils/arks.ex b/app/lib/meadow/utils/arks.ex index 13f1ebf4d..808c32baa 100644 --- a/app/lib/meadow/utils/arks.ex +++ b/app/lib/meadow/utils/arks.ex @@ -50,7 +50,7 @@ defmodule Meadow.Arks do {:noop, %Work{...}} """ - def mint_ark(%Work{descriptive_metadata: %{ark: ark}} = work, _) + def mint_ark(%Work{descriptive_metadata: %{ark: ark}} = work) when not is_nil(ark) do {:noop, work} end diff --git a/app/test/meadow/arks_test.exs b/app/test/meadow/arks_test.exs index 2e0a9e84a..133c931c0 100644 --- a/app/test/meadow/arks_test.exs +++ b/app/test/meadow/arks_test.exs @@ -2,6 +2,7 @@ defmodule Meadow.ArksTest do use Meadow.DataCase alias Meadow.{Ark, Arks} + alias Meadow.Data.Schemas.Work alias Meadow.Data.Works alias Meadow.Utils.ArkClient.MockServer @@ -23,6 +24,12 @@ defmodule Meadow.ArksTest do assert Arks.mint_ark!(work) end end) + + @tag work_type: "IMAGE" + test "mint_ark/1 does not mint a new ark for a work that already has an ark", %{work: work} do + assert {:ok, %Work{descriptive_metadata: %{ark: ark}} = work} = Arks.mint_ark(work) + assert {:noop, %Work{descriptive_metadata: %{ark: ^ark}}} = Arks.mint_ark(work) + end end describe "update_ark_metadata/1" do diff --git a/app/test/meadow/data/csv/export_test.exs b/app/test/meadow/data/csv/export_test.exs index d56271edf..c371734cd 100644 --- a/app/test/meadow/data/csv/export_test.exs +++ b/app/test/meadow/data/csv/export_test.exs @@ -50,10 +50,8 @@ defmodule Meadow.Data.CSV.ExportTest do assert Enum.member?(header, "collection_id") assert Map.get(sample_record, "collection_id") == collection.id - with shoulder <- Meadow.Config.ark_config() |> Map.get(:default_shoulder) do - assert Enum.member?(header, "ark") - assert Map.get(sample_record, "ark") |> String.starts_with?(shoulder) - end + assert Enum.member?(header, "ark") + assert Map.get(sample_record, "ark") |> String.starts_with?("ark:/") @sample_record |> Enum.each(fn {field, expected_value} ->