Skip to content

Commit 4fb95ca

Browse files
committed
Made the code cleaner
1 parent c04bb95 commit 4fb95ca

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

controllers/badge.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,15 @@ const getBadges = async (req, res) => {
2323
const getUserBadges = async (req, res) => {
2424
try {
2525
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+
}
2935
} catch (error) {
3036
logger.error(`Error while fetching all user badges: ${error}`)
3137
return res.boom.serverUnavailable('Something went wrong please contact admin')

models/badges.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ const fetchUserBadges = async (username) => {
4444
const userID = result.user.id
4545
const snapshot = await badgeModel.get()
4646
snapshot.forEach((item) => {
47-
if (item.data().users.includes(userID)) {
47+
if (item.data()?.users?.includes(userID)) {
4848
userBadges.push({ title: item.data().title, description: item.data().description })
4949
}
5050
})
5151
}
52-
return { userExists: userExists, userBadges: userBadges }
52+
return { userExists, userBadges }
5353
} catch (err) {
5454
logger.error('Error retrieving user badges', err)
5555
return err

test/fixtures/userBadges/userBadges.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,9 @@ const userNotFound = {
1515
userBadges: []
1616
}
1717

18-
module.exports = { userFound, userNotFound }
18+
const badgesEmpty = {
19+
userExists: true,
20+
userBadges: []
21+
}
22+
23+
module.exports = { userFound, userNotFound, badgesEmpty }

test/integration/userBadges.test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,20 @@ describe('User badges', function () {
4141
expect(res.body.error).to.equal('Not Found')
4242
expect(res.body.message).to.equal('The user does not exist')
4343

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+
4458
return done()
4559
})
4660
})

0 commit comments

Comments
 (0)