• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

atlp-rwanda / e-commerce-bitcrafters-bn / bac2131a-1620-4f43-a568-cc19540dc3a3

08 Jun 2024 03:26PM UTC coverage: 92.893% (-0.02%) from 92.909%
bac2131a-1620-4f43-a568-cc19540dc3a3

push

circleci

web-flow
User should be able to view specific item with review info [#187364741] (#94)

389 of 435 branches covered (89.43%)

Branch coverage included in aggregate %.

8 of 8 new or added lines in 1 file covered. (100.0%)

3 existing lines in 3 files now uncovered.

1271 of 1352 relevant lines covered (94.01%)

5.31 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.12
/src/controllers/adminController.ts
1
import { Request, Response } from 'express'
2
import User from '../database/models/userModel'
2✔
3
import sendMail from '../utils/sendEmail'
2✔
4
import disableUserTemplate from '../utils/emailTemplates/disableUserTemplate'
2✔
5
import enableUserTemplate from '../utils/emailTemplates/enableUserTemplate'
2✔
6
export default class adminContoller {
2✔
7
  /**
8
   * Update user status
9
   * @param {Request} req - Express request object
10
   * @param {Response} res - Express response object
11
   * @param {string} newStatus - New status to set for the user
12
   * @returns {Promise<Response>} Promise that resolves to an Express response
13
   */
14
  static async getAllUsers(req: Request, res: Response): Promise<Response> {
15
    try {
4✔
16
      const users = await User.findAll()
4✔
17
      return res.status(200).json(users)
2✔
18
    } catch (error) {
19
      return res.status(500).json({ error: error.message })
2✔
20
    }
21
  }
22
  /**
23
   * Update user status
24
   * @param {Request} req - Express request object
25
   * @param {Response} res - Express response object
26
   * @returns {Promise<Response>} Promise that resolves to an Express response
27
   */
28
  static async updateStatus(req: Request, res: Response): Promise<Response> {
29
    try {
12✔
30
      const { userId } = req.params
12✔
31
      const { newStatus, description } = req.body
12✔
32

33
      if (!newStatus) {
12✔
34
        return res.status(400).json({ message: 'New status is required' })
2✔
35
      }
36

37
      if (!description && newStatus === 'inactive') {
10✔
38
        return res
2✔
39
          .status(400)
40
          .json({ message: 'Description is required for deactivation' })
41
      }
42

43
      const user = await User.findByPk(userId)
8✔
44

45
      if (!user) {
6✔
46
        return res.status(404).json({ message: 'User not found' })
2✔
47
      }
48

49
      if (user.status === newStatus) {
4✔
50
        return res.status(400).json({ message: `User is already ${newStatus}` })
2✔
51
      }
52

53
      user.status = newStatus
2✔
54
      await user.save()
2✔
55

56
      const html =
57
        newStatus === 'inactive'
2!
58
          ? disableUserTemplate(user.username, description)
59
          : enableUserTemplate(user.username)
60

61
      try {
2✔
62
        await sendMail(user.email, `Confirmation of account status`, html)
2✔
63
        return res
2✔
64
          .status(200)
65
          .json({
66
            message: `User is now ${newStatus}, email sent successfully`,
67
          })
68
      } catch (emailError) {
UNCOV
69
        return res
×
70
          .status(500)
71
          .json({
72
            message: `User is now ${newStatus}, but failed to send email`,
73
            error: emailError.message,
74
          })
75
      }
76
    } catch (error) {
77
      return res
2✔
78
        .status(500)
79
        .json({ message: 'Internal server error', error: error.message })
80
    }
81
  }
82
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc