@@ -55,7 +55,7 @@ describe('When there are multiple users in the database', () => {
55
55
} ) ;
56
56
57
57
describe ( 'When getting a single user by id' , ( ) => {
58
- test ( 'Correct user is retured ' , async ( ) => {
58
+ test ( 'Correct user is returned ' , async ( ) => {
59
59
const targetUser = ( await testHelpers . usersInDB ( ) ) [ 0 ] ;
60
60
const response = await api
61
61
. get ( `/api/users/${ targetUser . id } ` )
@@ -277,15 +277,17 @@ describe('When there are multiple users in the database', () => {
277
277
const users = ( await testHelpers . usersInDB ( ) ) ;
278
278
const differentUser = users . find ( ( user ) => user . id !== targetUser . id ) ;
279
279
280
- const response = await api
280
+ await api
281
281
. put ( `/api/users/${ differentUser . id } /follow` )
282
282
. set ( 'Authorization' , `bearer ${ token } ` )
283
283
. expect ( 200 ) ;
284
284
285
- const returnedUser = response . body ;
285
+ const followedUser = ( await testHelpers . usersInDB ( ) ) . find (
286
+ ( user ) => user . id === differentUser . id ,
287
+ ) ;
286
288
287
- expect ( returnedUser . followers ) . toHaveLength ( 1 ) ;
288
- expect ( returnedUser . followers [ 0 ] . id ) . toBe ( targetUser . id ) ;
289
+ expect ( followedUser . followers ) . toHaveLength ( 1 ) ;
290
+ expect ( followedUser . followers [ 0 ] . toString ( ) ) . toBe ( targetUser . id . toString ( ) ) ;
289
291
} ) ;
290
292
291
293
test ( 'following a user adds that user to the requesting user following list' , async ( ) => {
@@ -303,6 +305,44 @@ describe('When there are multiple users in the database', () => {
303
305
expect ( updatedTargetUser . following ) . toHaveLength ( 1 ) ;
304
306
expect ( updatedTargetUser . following [ 0 ] . toString ( ) ) . toBe ( differentUser . id . toString ( ) ) ;
305
307
} ) ;
308
+
309
+ test ( 'user can be unfollowed' , async ( ) => {
310
+ const users = ( await testHelpers . usersInDB ( ) ) ;
311
+ const differentUser = users . find ( ( user ) => user . id !== targetUser . id ) ;
312
+ const differentUserId = differentUser . id ;
313
+
314
+ await api
315
+ . put ( `/api/users/${ differentUserId } /follow` )
316
+ . set ( 'Authorization' , `bearer ${ token } ` )
317
+ . expect ( 200 ) ;
318
+
319
+ let updatedTargetUser = ( await testHelpers . usersInDB ( ) ) . find (
320
+ ( user ) => user . id === targetUser . id ,
321
+ ) ;
322
+ let updatedDifferentUser = ( await testHelpers . usersInDB ( ) ) . find (
323
+ ( user ) => user . id === differentUserId ,
324
+ ) ;
325
+
326
+ expect ( updatedTargetUser . following ) . toHaveLength ( 1 ) ;
327
+ expect ( updatedTargetUser . following [ 0 ] . toString ( ) ) . toBe ( differentUserId . toString ( ) ) ;
328
+ expect ( updatedDifferentUser . followers ) . toHaveLength ( 1 ) ;
329
+ expect ( updatedDifferentUser . followers [ 0 ] . toString ( ) ) . toBe ( targetUser . id . toString ( ) ) ;
330
+
331
+ await api
332
+ . put ( `/api/users/${ differentUserId } /unfollow` )
333
+ . set ( 'Authorization' , `bearer ${ token } ` )
334
+ . expect ( 200 ) ;
335
+
336
+ updatedTargetUser = ( await testHelpers . usersInDB ( ) ) . find (
337
+ ( user ) => user . id === targetUser . id ,
338
+ ) ;
339
+ updatedDifferentUser = ( await testHelpers . usersInDB ( ) ) . find (
340
+ ( user ) => user . id === differentUserId ,
341
+ ) ;
342
+
343
+ expect ( updatedTargetUser . following ) . toHaveLength ( 0 ) ;
344
+ expect ( updatedDifferentUser . followers ) . toHaveLength ( 0 ) ;
345
+ } ) ;
306
346
} ) ;
307
347
308
348
// TODO: Write tests to check if comment fields are populated when fetching user/users.
0 commit comments