diff --git a/lib/waffle/actions/delete.ex b/lib/waffle/actions/delete.ex index d9c487f..f920149 100644 --- a/lib/waffle/actions/delete.ex +++ b/lib/waffle/actions/delete.ex @@ -40,6 +40,11 @@ defmodule Waffle.Actions.Delete do end defp delete_version(definition, version, {file, scope}) do - definition.__storage.delete(definition, version, {file, scope}) + conversion = definition.transform(version, {file, scope}) + if conversion == :skip do + :ok + else + definition.__storage.delete(definition, version, {file, scope}) + end end end diff --git a/test/storage/local_test.exs b/test/storage/local_test.exs index 71ae314..2c30861 100644 --- a/test/storage/local_test.exs +++ b/test/storage/local_test.exs @@ -13,17 +13,18 @@ defmodule WaffleTest.Storage.Local do defmodule DummyDefinition do - use Waffle.Actions.Store - use Waffle.Definition.Storage - use Waffle.Actions.Url + use Waffle.Definition @acl :public_read + @versions [:original, :thumb, :skipped] + def transform(:thumb, _), do: {:convert, "-strip -thumbnail 10x10"} def transform(:original, _), do: :noaction def transform(:skipped, _), do: :skip - def __versions, do: [:original, :thumb, :skipped] + def storage_dir(_, _), do: "waffletest/uploads" def __storage, do: Waffle.Storage.Local + def filename(:original, {file, _}), do: "original-#{Path.basename(file.file_name, Path.extname(file.file_name))}" def filename(:thumb, {file, _}), do: "1/thumb-#{Path.basename(file.file_name, Path.extname(file.file_name))}" def filename(:skipped, {file, _}), do: "1/skipped-#{Path.basename(file.file_name, Path.extname(file.file_name))}" @@ -44,6 +45,11 @@ defmodule WaffleTest.Storage.Local do refute File.exists?("waffletest/uploads/1/thumb-image.png") end + test "deleting when there's a skipped version" do + DummyDefinition.store(@img) + assert :ok = DummyDefinition.delete(@img) + end + test "save binary" do Waffle.Storage.Local.put(DummyDefinition, :original, {Waffle.File.new(%{binary: "binary", filename: "binary.png"}), nil}) assert true == File.exists?("waffletest/uploads/binary.png")