|
1 | 1 | defmodule CodeCorps.Policy.ConversationTest do |
2 | 2 | use CodeCorps.PolicyCase |
3 | 3 |
|
4 | | - import CodeCorps.Policy.Conversation, only: [scope: 2, show?: 2] |
| 4 | + import CodeCorps.Policy.Conversation, only: [scope: 2, show?: 2, update?: 2] |
5 | 5 |
|
6 | 6 | alias CodeCorps.{Conversation, Repo} |
7 | 7 |
|
@@ -113,4 +113,46 @@ defmodule CodeCorps.Policy.ConversationTest do |
113 | 113 | assert show?(user, conversation) |
114 | 114 | end |
115 | 115 | end |
| 116 | + |
| 117 | + describe "update?" do |
| 118 | + test "returns true when user is admin" do |
| 119 | + user = insert(:user, admin: true) |
| 120 | + message = insert(:message) |
| 121 | + conversation = insert(:conversation, message: message, user: user) |
| 122 | + |
| 123 | + assert update?(user, conversation) |
| 124 | + end |
| 125 | + |
| 126 | + test "returns false when user is a pending project member" do |
| 127 | + %{project: project, user: user} = insert(:project_user, role: "pending") |
| 128 | + message = insert(:message, project: project) |
| 129 | + conversation = insert(:conversation, message: message) |
| 130 | + |
| 131 | + refute update?(user, conversation) |
| 132 | + end |
| 133 | + |
| 134 | + test "returns false when user is a project contributor" do |
| 135 | + %{project: project, user: user} = insert(:project_user, role: "contributor") |
| 136 | + message = insert(:message, project: project) |
| 137 | + conversation = insert(:conversation, message: message) |
| 138 | + |
| 139 | + refute update?(user, conversation) |
| 140 | + end |
| 141 | + |
| 142 | + test "returns true when user is a project admin" do |
| 143 | + %{project: project, user: user} = insert(:project_user, role: "admin") |
| 144 | + message = insert(:message, project: project) |
| 145 | + conversation = insert(:conversation, message: message) |
| 146 | + |
| 147 | + assert update?(user, conversation) |
| 148 | + end |
| 149 | + |
| 150 | + test "returns true when user is project owner" do |
| 151 | + %{project: project, user: user} = insert(:project_user, role: "owner") |
| 152 | + message = insert(:message, project: project) |
| 153 | + conversation = insert(:conversation, message: message) |
| 154 | + |
| 155 | + assert update?(user, conversation) |
| 156 | + end |
| 157 | + end |
116 | 158 | end |
0 commit comments