Skip to content

Commit 1363d1b

Browse files
authored
Handle nil urls for skipped versions (#6)
2 parents e7a4bb2 + 11df967 commit 1363d1b

4 files changed

Lines changed: 15 additions & 6 deletions

File tree

lib/waffle_ecto/definition.ex

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ defmodule Waffle.Ecto.Definition do
2525
if options[:signed] do
2626
url
2727
else
28-
case updated_at do
29-
%NaiveDateTime{} ->
28+
case {url, updated_at} do
29+
{nil, _} -> nil
30+
31+
{_, %NaiveDateTime{}} ->
3032
version_url(updated_at, url)
3133

32-
string when is_bitstring(updated_at) ->
34+
{_, string} when is_bitstring(updated_at) ->
3335
version_url(NaiveDateTime.from_iso8601!(string), url)
3436

3537
_ ->

test/definition_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ defmodule WaffleTest.Ecto.Definition do
2525
url = DummyDefinitionTwo.url({%{file_name: "test.png", updated_at: nil}, :scope}, :original, [])
2626
assert url == "fallback"
2727
end
28+
29+
test "url is nil if version is skipped" do
30+
updated_at = NaiveDateTime.from_erl!({{2015, 1, 1}, {1, 1, 1}})
31+
url = DummyDefinitionTwo.url({%{file_name: "test.png", updated_at: updated_at}, :scope}, :skipped, [])
32+
assert is_nil(url)
33+
end
2834
end

test/schema_test.exs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,17 @@ defmodule WaffleTest.Ecto.Schema do
100100
end
101101

102102
test_with_mock "allow_paths => true", DummyDefinition, [store: fn({"/path/to/my/file.png", %TestUser{}}) -> {:ok, "file.png"} end] do
103-
_changeset = TestUser.path_changeset(%TestUser{}, %{"avatar" => "/path/to/my/file.png"})
103+
TestUser.path_changeset(%TestUser{}, %{"avatar" => "/path/to/my/file.png"})
104104
assert called DummyDefinition.store({"/path/to/my/file.png", %TestUser{}})
105105
end
106106

107107
test_with_mock "allow_urls => true", DummyDefinition, [store: fn({"http://external.url/file.png", %TestUser{}}) -> {:ok, "file.png"} end] do
108-
changeset = TestUser.url_changeset(%TestUser{}, %{"avatar" => "http://external.url/file.png"})
108+
TestUser.url_changeset(%TestUser{}, %{"avatar" => "http://external.url/file.png"})
109109
assert called DummyDefinition.store({"http://external.url/file.png", %TestUser{}})
110110
end
111111

112112
test_with_mock "allow_urls => true with an invalid URL", DummyDefinition, [store: fn({"/path/to/my/file.png", %TestUser{}}) -> {:ok, "file.png"} end] do
113-
changeset = TestUser.url_changeset(%TestUser{}, %{"avatar" => "/path/to/my/file.png"})
113+
TestUser.url_changeset(%TestUser{}, %{"avatar" => "/path/to/my/file.png"})
114114
assert not called DummyDefinition.store({"/path/to/my/file.png", %TestUser{}})
115115
end
116116
end

test/support/dummy_definition_two.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule DummyDefinitionTwo do
2+
def url(_, :skipped, _), do: nil
23
def url(_, :original, _), do: "fallback"
34
def url(_, :signed, _), do: "fallback?a=1&b=2"
45
def store({file, _}), do: {:ok, file}

0 commit comments

Comments
 (0)