1
1
defmodule Upload.MultiTest do
2
2
use Upload.DataCase
3
+ use Upload.Testing
3
4
4
5
alias Upload.Storage
5
6
alias Upload.Test.Person
@@ -13,7 +14,7 @@ defmodule Upload.MultiTest do
13
14
@ upload % Plug.Upload { path: @ path , filename: "image.jpg" }
14
15
15
16
describe "handle_changes" do
16
- test "can validate changes" do
17
+ test "will validate changes" do
17
18
changeset = Person . changeset ( % Person { } , % { avatar: "test/fixtures/test.txt" } )
18
19
19
20
{ :error , _ , changeset , _ } =
@@ -31,6 +32,48 @@ defmodule Upload.MultiTest do
31
32
end
32
33
end
33
34
35
+ describe "create_variant" do
36
+ test "will create a variant" do
37
+ changeset = Person . changeset ( % Person { } , % { avatar: @ upload } )
38
+
39
+ { :ok , _ } =
40
+ Ecto.Multi . new ( )
41
+ |> Ecto.Multi . insert ( :person , changeset )
42
+ |> Upload.Multi . handle_changes ( :upload_avatar , :person , changeset , :avatar ,
43
+ key_function: & key_function / 1
44
+ )
45
+ |> Upload.Multi . create_variant (
46
+ fn ctx -> ctx . upload_avatar . avatar end ,
47
+ :small ,
48
+ & small_transform / 3
49
+ )
50
+ |> Repo . transaction ( )
51
+
52
+ person = Repo . one ( Person ) |> Repo . preload ( avatar: :variants )
53
+
54
+ variant = List . first ( person . avatar . variants )
55
+
56
+ assert variant . variant == "small"
57
+ end
58
+
59
+ test "handles when there are no changes" do
60
+ changeset = Person . changeset ( % Person { } , % { } )
61
+
62
+ { :ok , _ } =
63
+ Ecto.Multi . new ( )
64
+ |> Ecto.Multi . insert ( :person , changeset )
65
+ |> Upload.Multi . handle_changes ( :upload_avatar , :person , changeset , :avatar ,
66
+ key_function: & key_function / 1
67
+ )
68
+ |> Upload.Multi . create_variant (
69
+ fn ctx -> ctx . upload_avatar . avatar end ,
70
+ :small ,
71
+ & small_transform / 3
72
+ )
73
+ |> Repo . transaction ( )
74
+ end
75
+ end
76
+
34
77
test "upload/3" do
35
78
assert { :ok , person } = insert_person ( % { avatar: @ upload } )
36
79
assert person . avatar_id
0 commit comments