File tree Expand file tree Collapse file tree 4 files changed +31
-6
lines changed Expand file tree Collapse file tree 4 files changed +31
-6
lines changed Original file line number Diff line number Diff line change @@ -23,9 +23,15 @@ const getBadges = async (req, res) => {
23
23
const getUserBadges = async ( req , res ) => {
24
24
try {
25
25
const result = await badgeQuery . fetchUserBadges ( req . params . username )
26
- return result . userExists
27
- ? res . json ( { message : 'User badges returned successfully!' , userBadges : result . userBadges } )
28
- : res . boom . notFound ( 'The user does not exist' )
26
+ let responseMsg = ''
27
+ if ( result . userExists ) {
28
+ responseMsg = result . userBadges . length !== 0
29
+ ? 'User badges returned successfully!'
30
+ : 'This user does not have any badges'
31
+ return res . json ( { message : responseMsg , userBadges : result . userBadges } )
32
+ } else {
33
+ return res . boom . notFound ( 'The user does not exist' )
34
+ }
29
35
} catch ( error ) {
30
36
logger . error ( `Error while fetching all user badges: ${ error } ` )
31
37
return res . boom . serverUnavailable ( 'Something went wrong please contact admin' )
Original file line number Diff line number Diff line change @@ -44,12 +44,12 @@ const fetchUserBadges = async (username) => {
44
44
const userID = result . user . id
45
45
const snapshot = await badgeModel . get ( )
46
46
snapshot . forEach ( ( item ) => {
47
- if ( item . data ( ) . users . includes ( userID ) ) {
47
+ if ( item . data ( ) ? .users ? .includes ( userID ) ) {
48
48
userBadges . push ( { title : item . data ( ) . title , description : item . data ( ) . description } )
49
49
}
50
50
} )
51
51
}
52
- return { userExists : userExists , userBadges : userBadges }
52
+ return { userExists, userBadges }
53
53
} catch ( err ) {
54
54
logger . error ( 'Error retrieving user badges' , err )
55
55
return err
Original file line number Diff line number Diff line change @@ -15,4 +15,9 @@ const userNotFound = {
15
15
userBadges : [ ]
16
16
}
17
17
18
- module . exports = { userFound, userNotFound }
18
+ const badgesEmpty = {
19
+ userExists : true ,
20
+ userBadges : [ ]
21
+ }
22
+
23
+ module . exports = { userFound, userNotFound, badgesEmpty }
Original file line number Diff line number Diff line change @@ -41,6 +41,20 @@ describe('User badges', function () {
41
41
expect ( res . body . error ) . to . equal ( 'Not Found' )
42
42
expect ( res . body . message ) . to . equal ( 'The user does not exist' )
43
43
44
+ return done ( )
45
+ } )
46
+ } )
47
+ it ( 'Should return no badges message if the user does not have any badges' , function ( done ) {
48
+ sinon . stub ( badges , 'fetchUserBadges' ) . returns ( userBadges . badgesEmpty )
49
+ chai
50
+ . request ( app )
51
+ . get ( '/badges/some-user' )
52
+ . end ( ( err , res ) => {
53
+ if ( err ) { return done ( ) }
54
+ expect ( res ) . to . have . status ( 200 )
55
+ expect ( res . body ) . to . be . a ( 'object' )
56
+ expect ( res . body . message ) . to . equal ( 'This user does not have any badges' )
57
+
44
58
return done ( )
45
59
} )
46
60
} )
You can’t perform that action at this time.
0 commit comments