@@ -21,7 +21,7 @@ defmodule CodeCorps.Policy.MessageTest do
2121 assert Message |> scope ( user ) |> Repo . all |> Enum . count == 3
2222 end
2323
24- test "returns records where user is the author or they administer the project" do
24+ test "returns records where user is the author or they administer the project, or they are the target of the conversation " do
2525 user = insert ( :user , admin: false )
2626
2727 % { project: project_user_applied_to } =
@@ -58,6 +58,9 @@ defmodule CodeCorps.Policy.MessageTest do
5858 message_from_owned_project =
5959 insert ( :message , project: project_user_owns )
6060
61+ % { message: message_where_user_is_target } =
62+ insert ( :conversation , user: user )
63+
6164 result_ids =
6265 Message
6366 |> scope ( user )
@@ -71,6 +74,7 @@ defmodule CodeCorps.Policy.MessageTest do
7174 assert message_from_other_administered_project . id in result_ids
7275 assert message_from_owned_project . id in result_ids
7376 refute some_other_message . id in result_ids
77+ assert message_where_user_is_target . id in result_ids
7478 end
7579 end
7680
@@ -86,35 +90,42 @@ defmodule CodeCorps.Policy.MessageTest do
8690 user = insert ( :user )
8791 message = insert ( :message , initiated_by: "user" )
8892
89- refute show? ( user , message )
93+ refute show? ( user , message |> Repo . preload ( :conversations ) )
9094 end
9195
9296 test "returns false when user is a pending project member" do
9397 % { project: project , user: user } = insert ( :project_user , role: "pending" )
9498 message = insert ( :message , initiated_by: "user" , project: project )
9599
96- refute show? ( user , message )
100+ refute show? ( user , message |> Repo . preload ( :conversations ) )
97101 end
98102
99103 test "returns false when user is a project contributor" do
100104 % { project: project , user: user } = insert ( :project_user , role: "contributor" )
101105 message = insert ( :message , initiated_by: "user" , project: project )
102106
103- refute show? ( user , message )
107+ refute show? ( user , message |> Repo . preload ( :conversations ) )
104108 end
105109
106110 test "returns true when user is a project admin" do
107111 % { project: project , user: user } = insert ( :project_user , role: "admin" )
108112 message = insert ( :message , initiated_by: "user" , project: project )
109113
110- assert show? ( user , message )
114+ assert show? ( user , message |> Repo . preload ( :conversations ) )
111115 end
112116
113117 test "returns true when user is project owner" do
114118 % { project: project , user: user } = insert ( :project_user , role: "owner" )
115119 message = insert ( :message , initiated_by: "user" , project: project )
116120
117- assert show? ( user , message )
121+ assert show? ( user , message |> Repo . preload ( :conversations ) )
122+ end
123+
124+ test "returns true when message conversation is targeted at user" do
125+ user = insert ( :user )
126+ % { message: message } = insert ( :conversation , user: user )
127+
128+ assert show? ( user , message |> Repo . preload ( :conversations ) )
118129 end
119130 end
120131
0 commit comments