@@ -16,19 +16,37 @@ defmodule CodeCorps.TaskTest do
1616 end
1717
1818 test "renders body html from markdown" do
19- user = insert ( :user )
20- project = insert ( :project )
21- task_list = insert ( :task_list )
2219 changes = Map . merge ( @ valid_attrs , % {
2320 markdown: "A **strong** body" ,
24- project_id: project . id ,
25- task_list_id: task_list . id ,
26- user_id: user . id
21+ project_id: 1 ,
22+ task_list_id: 1 ,
23+ user_id: 1
2724 } )
2825 changeset = Task . changeset ( % Task { } , changes )
2926 assert changeset . valid?
3027 assert changeset |> get_change ( :body ) == "<p>A <strong>strong</strong> body</p>\n "
3128 end
29+
30+ test "removes the order and task list when the task is archived" do
31+ changes = Map . put ( @ valid_attrs , :archived , true )
32+ changeset = Task . update_changeset ( % Task { order: 1 , task_list_id: 1 } , changes )
33+ % { archived: archived , order: order , task_list_id: task_list_id } = changeset . changes
34+ assert changeset . valid?
35+ assert archived
36+ refute order
37+ refute task_list_id
38+ end
39+
40+ test "validates task list when the task is not archived and position is set" do
41+ changes = Map . merge ( @ valid_attrs , % {
42+ position: 1 ,
43+ project_id: 1 ,
44+ user_id: 1
45+ } )
46+ changeset = Task . changeset ( % Task { } , changes )
47+ refute changeset . valid?
48+ assert changeset . errors [ :task_list_id ]
49+ end
3250 end
3351
3452 describe "create_changeset/2" do
@@ -46,6 +64,26 @@ defmodule CodeCorps.TaskTest do
4664 { :ok , % Task { created_at: created_at , modified_at: modified_at } } = Repo . insert ( changeset )
4765 assert created_at == modified_at
4866 end
67+
68+ test "sets the order when the task is not archived and position is set" do
69+ project = insert ( :project )
70+ task_list = insert ( :task_list )
71+ insert ( :task , task_list: task_list , order: 1 )
72+ user = insert ( :user )
73+ changes = Map . merge ( @ valid_attrs , % {
74+ position: 1 ,
75+ project_id: project . id ,
76+ task_list_id: task_list . id ,
77+ user_id: user . id
78+ } )
79+ changeset = Task . create_changeset ( % Task { } , changes )
80+ assert changeset . valid?
81+ { :ok , % Task { order: order } } = Repo . insert ( changeset )
82+
83+ # We really want to test the order is set, but we have no good way to
84+ # test this since the column default is `0`
85+ assert order !== 0
86+ end
4987 end
5088
5189 describe "update_changeset/2" do
@@ -78,5 +116,23 @@ defmodule CodeCorps.TaskTest do
78116 assert changeset . valid?
79117 assert archived
80118 end
119+
120+ test "does not reset order when task was already archived" do
121+ project = insert ( :project )
122+ user = insert ( :user )
123+ changes = Map . merge ( @ valid_attrs , % {
124+ archived: true ,
125+ position: 1 ,
126+ project_id: project . id ,
127+ user_id: user . id
128+ } )
129+ changeset = Task . create_changeset ( % Task { } , changes )
130+ { :ok , % Task { order: order } = task } = Repo . insert ( changeset )
131+ refute order
132+
133+ changeset = Task . update_changeset ( task , % { title: "New title" } )
134+ { :ok , % Task { order: order } } = Repo . update ( changeset )
135+ refute order
136+ end
81137 end
82138end
0 commit comments