@next-k8s/tickets 1.0.27 → 1.0.28
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +8 -0
- package/coverage/clover.xml +67 -45
- package/coverage/coverage-final.json +9 -8
- package/coverage/lcov-report/events/listeners/_queue-group-name.ts.html +88 -0
- package/coverage/lcov-report/events/listeners/index.html +131 -0
- package/coverage/lcov-report/events/listeners/order-created.ts.html +157 -0
- package/coverage/lcov-report/events/publishers/index.html +116 -0
- package/coverage/lcov-report/events/publishers/updated.ts.html +106 -0
- package/coverage/lcov-report/index.html +18 -18
- package/coverage/lcov-report/models/index.html +116 -0
- package/coverage/lcov-report/models/ticket.ts.html +235 -0
- package/coverage/lcov-report/src/app.ts.html +1 -1
- package/coverage/lcov-report/src/events/listeners/_queue-group-name.ts.html +2 -2
- package/coverage/lcov-report/src/events/listeners/index.html +26 -11
- package/coverage/lcov-report/src/events/listeners/order-cancelled.ts.html +157 -0
- package/coverage/lcov-report/src/events/listeners/order-created.ts.html +19 -13
- package/coverage/lcov-report/src/events/publishers/created.ts.html +2 -2
- package/coverage/lcov-report/src/events/publishers/index.html +1 -1
- package/coverage/lcov-report/src/events/publishers/updated.ts.html +5 -5
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/models/index.html +1 -1
- package/coverage/lcov-report/src/models/ticket.ts.html +12 -15
- package/coverage/lcov-report/src/routes/create.ts.html +7 -7
- package/coverage/lcov-report/src/routes/get.ts.html +1 -1
- package/coverage/lcov-report/src/routes/index.html +7 -7
- package/coverage/lcov-report/src/routes/index.ts.html +1 -1
- package/coverage/lcov-report/src/routes/update.ts.html +9 -6
- package/coverage/lcov-report/src/test/index.html +1 -1
- package/coverage/lcov-report/src/test/utils.ts.html +2 -2
- package/coverage/lcov.info +96 -62
- package/package.json +3 -3
- package/src/events/listeners/__test__/order-cancelled.test.ts +50 -0
- package/src/events/listeners/__test__/order-created.test.ts +7 -1
- package/src/events/listeners/order-cancelled.ts +24 -0
- package/src/events/listeners/order-created.ts +2 -0
- package/src/index.ts +5 -0
- package/src/models/ticket.ts +0 -1
- package/src/routes/__test__/update.test.ts +15 -0
- package/src/routes/update.ts +1 -0
package/src/index.ts
CHANGED
@@ -2,6 +2,8 @@ import mongoose from 'mongoose'
|
|
2
2
|
|
3
3
|
import natsClient from './nats-client'
|
4
4
|
import app from './app'
|
5
|
+
import OrderCreatedListener from './events/listeners/order-created'
|
6
|
+
import OrderCancelledListener from './events/listeners/order-cancelled'
|
5
7
|
|
6
8
|
const start = async () => {
|
7
9
|
if (!process.env.JWT_KEY) throw new Error('JWT_KEY is undefined')
|
@@ -20,6 +22,9 @@ const start = async () => {
|
|
20
22
|
process.on('SIGINT', () => natsClient.client.close())
|
21
23
|
process.on('SIGTERM', () => natsClient.client.close())
|
22
24
|
|
25
|
+
new OrderCreatedListener(natsClient.client).listen()
|
26
|
+
new OrderCancelledListener(natsClient.client).listen()
|
27
|
+
|
23
28
|
await mongoose.connect(process.env.MONGO_URI)
|
24
29
|
console.log('Database connected!')
|
25
30
|
const port = process.env.PORT || 3000
|
package/src/models/ticket.ts
CHANGED
@@ -5,6 +5,7 @@ import { getTokenCookie } from '@next-k8s/common'
|
|
5
5
|
import app from '../../app'
|
6
6
|
import { createTicket } from '../../test/utils'
|
7
7
|
import natsClient from '../../nats-client'
|
8
|
+
import Ticket from '../../models/ticket'
|
8
9
|
|
9
10
|
describe('[Update Ticket] Route: PUT /api/tickets/:id', () => {
|
10
11
|
it('should throw a NotFoundError if the ticket does not exist', async () => {
|
@@ -100,4 +101,18 @@ describe('[Update Ticket] Route: PUT /api/tickets/:id', () => {
|
|
100
101
|
await createTicket(app, cookie)
|
101
102
|
expect(natsClient.client.publish).toHaveBeenCalled()
|
102
103
|
})
|
104
|
+
|
105
|
+
it('should reject updates to a reserved ticket', async () => {
|
106
|
+
const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
|
107
|
+
const response = await createTicket(app, cookie)
|
108
|
+
const ticket = await Ticket.findById(response.body.ticket.id)
|
109
|
+
ticket.set({ orderId: new mongoose.Types.ObjectId().toHexString() })
|
110
|
+
await ticket.save()
|
111
|
+
|
112
|
+
await request(app)
|
113
|
+
.put(`/api/tickets/${response.body.ticket.id}`)
|
114
|
+
.set('Cookie', [cookie])
|
115
|
+
.send({ title: 'Test Event 2', price: 33000 })
|
116
|
+
.expect(400)
|
117
|
+
})
|
103
118
|
})
|
package/src/routes/update.ts
CHANGED
@@ -18,6 +18,7 @@ router.put('/api/tickets/:id', requireAuth, validateInput, validateRequest, asyn
|
|
18
18
|
const ticket = await Ticket.findById(req.params.id)
|
19
19
|
if (!ticket) throw new NotFoundError()
|
20
20
|
if (ticket.owner.toHexString() !== req.currentUser!.id) throw new UnauthorizedError()
|
21
|
+
if (ticket.orderId) throw new BadRequestError('Ticket is reserved')
|
21
22
|
const { title, price } = req.body
|
22
23
|
ticket.set({ title, price })
|
23
24
|
await ticket.save()
|