@@ -4,16 +4,23 @@ defmodule CodeCorps.AccountsTest do
44 use CodeCorps.DbAccessCase
55
66 alias CodeCorps . {
7- Accounts , Comment , ProjectUser , Task , GitHub.TestHelpers , User , UserInvite
7+ Accounts ,
8+ Comment ,
9+ ProjectUser ,
10+ Task ,
11+ GitHub.TestHelpers ,
12+ User ,
13+ UserInvite
814 }
15+
916 alias Ecto.Changeset
1017
1118 describe "create_from_github/1" do
1219 test "creates proper user from provided payload" do
1320 { :ok , % User { } = user } =
1421 "user"
15- |> TestHelpers . load_endpoint_fixture
16- |> Accounts . create_from_github
22+ |> TestHelpers . load_endpoint_fixture ( )
23+ |> Accounts . create_from_github ( )
1724
1825 assert user . id
1926 assert user . default_color
@@ -29,7 +36,7 @@ defmodule CodeCorps.AccountsTest do
2936
3037 { :error , % Changeset { } = changeset } =
3138 payload
32- |> Accounts . create_from_github
39+ |> Accounts . create_from_github ( )
3340
3441 assert changeset . errors [ :email ] == { "has already been taken" , [ ] }
3542 end
@@ -42,16 +49,16 @@ defmodule CodeCorps.AccountsTest do
4249
4350 { :error , % Changeset { } = changeset } =
4451 payload
45- |> Accounts . create_from_github
52+ |> Accounts . create_from_github ( )
4653
4754 assert changeset . errors [ :github_id ] == { "account is already connected to someone else" , [ ] }
4855 end
4956
5057 test "uploads photo from GitHub avatar" do
5158 { :ok , % User { } = user } =
5259 "user"
53- |> TestHelpers . load_endpoint_fixture
54- |> Accounts . create_from_github
60+ |> TestHelpers . load_endpoint_fixture ( )
61+ |> Accounts . create_from_github ( )
5562
5663 user = Repo . get ( User , user . id )
5764 assert user . cloudinary_public_id
@@ -132,7 +139,7 @@ defmodule CodeCorps.AccountsTest do
132139 { :ok , % UserInvite { } = user_invite } =
133140 @ base_attrs
134141 |> Map . put ( :inviter_id , inviter_id )
135- |> Accounts . create_invite
142+ |> Accounts . create_invite ( )
136143
137144 assert Repo . one ( UserInvite ) . id == user_invite . id
138145 end
@@ -141,7 +148,7 @@ defmodule CodeCorps.AccountsTest do
141148 { :error , changeset } =
142149 @ base_attrs
143150 |> Map . delete ( :email )
144- |> Accounts . create_invite
151+ |> Accounts . create_invite ( )
145152
146153 refute changeset . valid?
147154 assert changeset . errors [ :email ]
@@ -150,15 +157,15 @@ defmodule CodeCorps.AccountsTest do
150157 test "requires valid inviter id" do
151158 { :error , changeset } =
152159 @ base_attrs
153- |> Accounts . create_invite
160+ |> Accounts . create_invite ( )
154161
155162 refute changeset . valid?
156163 assert changeset . errors [ :inviter_id ]
157164
158165 { :error , changeset } =
159166 @ base_attrs
160167 |> Map . put ( :inviter_id , - 1 )
161- |> Accounts . create_invite
168+ |> Accounts . create_invite ( )
162169
163170 refute changeset . valid?
164171 refute changeset . errors [ :inviter_id ]
@@ -172,63 +179,83 @@ defmodule CodeCorps.AccountsTest do
172179 @ base_attrs
173180 |> Map . put ( :inviter_id , inviter_id )
174181 |> Map . put ( :name , "John" )
175- |> Accounts . create_invite
182+ |> Accounts . create_invite ( )
176183
177184 assert user_invite . name == "John"
178185 end
179186
180- test "allows specifying role" do
187+ test "creates a user invite for a project" do
181188 % { id: inviter_id } = insert ( :user )
189+ % { id: project_id } = insert ( :project )
182190
183191 { :ok , % UserInvite { } = user_invite } =
184192 @ base_attrs
185193 |> Map . put ( :inviter_id , inviter_id )
186194 |> Map . put ( :role , "admin" )
187- |> Accounts . create_invite
195+ |> Map . put ( :project_id , project_id )
196+ |> Accounts . create_invite ( )
188197
189198 assert user_invite . role == "admin"
199+ assert user_invite . project_id == project_id
190200 end
191201
192202 test "does not allow invalid roles" do
193203 % { id: inviter_id } = insert ( :user )
204+ % { id: project_id } = insert ( :project )
194205
195206 { :error , changeset } =
196207 @ base_attrs
197208 |> Map . put ( :inviter_id , inviter_id )
198209 |> Map . put ( :role , "foo" )
199- |> Accounts . create_invite
210+ |> Map . put ( :project_id , project_id )
211+ |> Accounts . create_invite ( )
200212
201213 refute changeset . valid?
202214 assert changeset . errors [ :role ]
203215 end
204216
205- test "associates with project if id provided" do
217+ test "requires valid project id" do
218+ % { id: inviter_id } = insert ( :user )
219+
220+ { :error , changeset } =
221+ @ base_attrs
222+ |> Map . put ( :inviter_id , inviter_id )
223+ |> Map . put ( :project_id , - 1 )
224+ |> Map . put ( :role , "contributor" )
225+ |> Accounts . create_invite ( )
226+
227+ refute changeset . valid?
228+ assert changeset . errors [ :project ]
229+ end
230+
231+ test "requires role if project is specified" do
206232 % { id: inviter_id } = insert ( :user )
207233 % { id: project_id } = insert ( :project )
208234
209- { :ok , % UserInvite { } = user_invite } =
235+ { :error , changeset } =
210236 @ base_attrs
211237 |> Map . put ( :inviter_id , inviter_id )
212238 |> Map . put ( :project_id , project_id )
213- |> Accounts . create_invite
239+ |> Accounts . create_invite ( )
214240
215- assert user_invite . project_id == project_id
241+ refute changeset . valid?
242+ assert changeset . errors [ :role ]
216243 end
217244
218- test "requires valid project id " do
245+ test "requires project_id if role is specified " do
219246 % { id: inviter_id } = insert ( :user )
220247
221248 { :error , changeset } =
222249 @ base_attrs
223250 |> Map . put ( :inviter_id , inviter_id )
224- |> Map . put ( :project_id , - 1 )
225- |> Accounts . create_invite
251+ |> Map . put ( :role , "contributor" )
252+ |> Accounts . create_invite ( )
226253
227254 refute changeset . valid?
228- assert changeset . errors [ :project ]
255+ assert changeset . errors [ :project_id ]
229256 end
230257
231- test "throws error if user is already member of project" do
258+ test "requires user not to be member of project" do
232259 % { id: inviter_id } = insert ( :user )
233260 % { id: project_id } = project = insert ( :project )
234261 % { email: email } = user = insert ( :user )
@@ -239,7 +266,7 @@ defmodule CodeCorps.AccountsTest do
239266 % { email: email }
240267 |> Map . put ( :inviter_id , inviter_id )
241268 |> Map . put ( :project_id , project_id )
242- |> Accounts . create_invite
269+ |> Accounts . create_invite ( )
243270
244271 refute changeset . valid?
245272 assert changeset . errors [ :email ]
@@ -258,7 +285,8 @@ defmodule CodeCorps.AccountsTest do
258285 { :ok , % User { } = user } =
259286 @ valid_user_params
260287 |> Map . put ( "invite_id" , invite . id )
261- |> Accounts . claim_invite
288+ |> Accounts . claim_invite ( )
289+
262290 assert Repo . get ( User , user . id )
263291 end
264292
@@ -268,7 +296,8 @@ defmodule CodeCorps.AccountsTest do
268296 { :ok , % User { } = user } =
269297 @ valid_user_params
270298 |> Map . put ( "invite_id" , invite . id )
271- |> Accounts . claim_invite
299+ |> Accounts . claim_invite ( )
300+
272301 assert Repo . one ( UserInvite ) . invitee_id == user . id
273302 end
274303
@@ -279,15 +308,16 @@ defmodule CodeCorps.AccountsTest do
279308 { :ok , % User { } = user } =
280309 @ valid_user_params
281310 |> Map . put ( "invite_id" , invite . id )
282- |> Accounts . claim_invite
311+ |> Accounts . claim_invite ( )
312+
283313 assert Repo . get_by ( ProjectUser , user_id: user . id , project_id: project . id , role: "admin" )
284314 end
285315
286316 test "returns :invite_not_found if bad id provided" do
287317 assert { :error , :invite_not_found } =
288318 @ valid_user_params
289319 |> Map . put ( "invite_id" , - 1 )
290- |> Accounts . claim_invite
320+ |> Accounts . claim_invite ( )
291321 end
292322 end
293323end
0 commit comments