@next-k8s/tickets 1.0.26 → 1.0.27
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 +158 -17
- package/coverage/coverage-final.json +11 -1
- package/coverage/lcov-report/index.html +94 -19
- package/coverage/lcov-report/src/app.ts.html +17 -17
- package/coverage/lcov-report/src/events/listeners/_queue-group-name.ts.html +88 -0
- package/coverage/lcov-report/src/events/listeners/index.html +131 -0
- package/coverage/lcov-report/src/events/listeners/order-created.ts.html +151 -0
- package/coverage/lcov-report/src/events/publishers/created.ts.html +4 -4
- package/coverage/lcov-report/src/events/publishers/index.html +1 -1
- package/coverage/lcov-report/src/events/publishers/updated.ts.html +4 -4
- 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 +20 -5
- package/coverage/lcov-report/src/routes/create.ts.html +11 -11
- package/coverage/lcov-report/src/routes/find.ts.html +1 -1
- package/coverage/lcov-report/src/routes/get.ts.html +25 -10
- package/coverage/lcov-report/src/routes/index.html +8 -23
- package/coverage/lcov-report/src/routes/index.ts.html +8 -11
- package/coverage/lcov-report/src/routes/update.ts.html +12 -12
- package/coverage/lcov-report/src/test/index.html +1 -1
- package/coverage/lcov-report/src/test/utils.ts.html +3 -3
- package/coverage/lcov-report/ticket.ts.html +1 -1
- package/coverage/lcov.info +241 -17
- package/package.json +3 -3
- package/pnpm-lock.yaml +311 -18
- package/src/events/listeners/__test__/order-created.test.ts +44 -0
- package/src/events/listeners/_queue-group-name.ts +1 -0
- package/src/events/listeners/order-created.ts +22 -0
- package/src/models/ticket.ts +7 -2
- package/src/routes/__test__/get.test.ts +15 -0
- package/src/routes/create.ts +1 -1
- package/src/routes/get.ts +5 -0
- package/src/routes/index.ts +1 -2
- package/src/routes/update.ts +1 -1
- package/src/routes/__test__/find.test.ts +0 -22
- package/src/routes/find.ts +0 -11
package/src/models/ticket.ts
CHANGED
@@ -2,9 +2,10 @@ import mongoose, { ObjectId } from 'mongoose'
|
|
2
2
|
import { updateIfCurrentPlugin } from 'mongoose-update-if-current'
|
3
3
|
|
4
4
|
interface TicketAttributes {
|
5
|
-
title:
|
6
|
-
price:
|
5
|
+
title: string;
|
6
|
+
price: number;
|
7
7
|
owner: string;
|
8
|
+
orderId?: string;
|
8
9
|
createdAt?: Date;
|
9
10
|
updatedAt?: Date;
|
10
11
|
}
|
@@ -23,6 +24,10 @@ const ticketSchema = new mongoose.Schema({
|
|
23
24
|
owner: {
|
24
25
|
type: mongoose.Schema.Types.ObjectId,
|
25
26
|
required: true
|
27
|
+
},
|
28
|
+
|
29
|
+
orderId: {
|
30
|
+
type: String
|
26
31
|
}
|
27
32
|
}, {
|
28
33
|
toJSON: {
|
@@ -5,6 +5,21 @@ import { getTokenCookie } from '@next-k8s/common'
|
|
5
5
|
import app from '../../app'
|
6
6
|
import { createTicket } from '../../test/utils'
|
7
7
|
|
8
|
+
describe('[List Tickets] Route: GET /api/tickets', () => {
|
9
|
+
it('should return a list of tickets', async () => {
|
10
|
+
const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
|
11
|
+
await createTicket(app, cookie)
|
12
|
+
await createTicket(app, cookie, 'Test Event 2', 40000)
|
13
|
+
const list = await request(app)
|
14
|
+
.get('/api/tickets')
|
15
|
+
.send()
|
16
|
+
.expect(200)
|
17
|
+
|
18
|
+
expect(list.body.tickets).toBeDefined()
|
19
|
+
expect(list.body.tickets.length).toEqual(2)
|
20
|
+
})
|
21
|
+
})
|
22
|
+
|
8
23
|
describe('[Get Ticket] Route: GET /api/tickets/:id', () => {
|
9
24
|
it('should throw a BadRequestError if ticket ID is invalid', async () => {
|
10
25
|
await request(app)
|
package/src/routes/create.ts
CHANGED
@@ -17,7 +17,7 @@ router.post('/api/tickets', requireAuth, validateInput, validateRequest, async (
|
|
17
17
|
const { title, price } = req.body
|
18
18
|
const ticket = new Ticket({ title, price, owner: req.currentUser!.id })
|
19
19
|
await ticket.save()
|
20
|
-
new TicketCreatedPublisher(natsClient.client).publish({ id: ticket.id, title: ticket.title, price: ticket.price, owner: ticket.owner })
|
20
|
+
new TicketCreatedPublisher(natsClient.client).publish({ id: ticket.id, version: ticket.version, title: ticket.title, price: ticket.price, owner: ticket.owner })
|
21
21
|
res.status(201).send({ ticket })
|
22
22
|
})
|
23
23
|
|
package/src/routes/get.ts
CHANGED
@@ -6,6 +6,11 @@ import Ticket from '../models/ticket'
|
|
6
6
|
|
7
7
|
const router = express.Router()
|
8
8
|
|
9
|
+
router.get('/api/tickets', async (req: Request, res: Response) => {
|
10
|
+
const tickets = await Ticket.find({})
|
11
|
+
res.send({ tickets })
|
12
|
+
})
|
13
|
+
|
9
14
|
router.get('/api/tickets/:id', async (req: Request, res: Response) => {
|
10
15
|
if (!isValidObjectId(req.params.id)) throw new BadRequestError('Invalid Ticket ID')
|
11
16
|
const ticket = await Ticket.findById(req.params.id)
|
package/src/routes/index.ts
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import getTicket from './get'
|
2
|
-
import findTickets from './find'
|
3
2
|
import createTicket from './create'
|
4
3
|
import updateTicket from './update'
|
5
4
|
|
6
|
-
export default [
|
5
|
+
export default [getTicket, createTicket, updateTicket]
|
package/src/routes/update.ts
CHANGED
@@ -21,7 +21,7 @@ router.put('/api/tickets/:id', requireAuth, validateInput, validateRequest, asyn
|
|
21
21
|
const { title, price } = req.body
|
22
22
|
ticket.set({ title, price })
|
23
23
|
await ticket.save()
|
24
|
-
await new TicketUpdatedPublisher(natsClient.client).publish({ id: ticket.id, title: ticket.title, price: ticket.price, owner: ticket.owner })
|
24
|
+
await new TicketUpdatedPublisher(natsClient.client).publish({ id: ticket.id, version: ticket.version, title: ticket.title, price: ticket.price, owner: ticket.owner })
|
25
25
|
res.json(ticket)
|
26
26
|
})
|
27
27
|
|
@@ -1,22 +0,0 @@
|
|
1
|
-
|
2
|
-
import mongoose from 'mongoose'
|
3
|
-
import request from 'supertest'
|
4
|
-
import { getTokenCookie } from '@next-k8s/common'
|
5
|
-
|
6
|
-
import app from '../../app'
|
7
|
-
import { createTicket } from '../../test/utils'
|
8
|
-
|
9
|
-
describe('[List Tickets] Route: GET /api/tickets', () => {
|
10
|
-
it('should return a list of tickets', async () => {
|
11
|
-
const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
|
12
|
-
await createTicket(app, cookie)
|
13
|
-
await createTicket(app, cookie, 'Test Event 2', 40000)
|
14
|
-
const list = await request(app)
|
15
|
-
.get('/api/tickets')
|
16
|
-
.send()
|
17
|
-
.expect(200)
|
18
|
-
|
19
|
-
expect(list.body.tickets).toBeDefined()
|
20
|
-
expect(list.body.tickets.length).toEqual(2)
|
21
|
-
})
|
22
|
-
})
|
package/src/routes/find.ts
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
import express, { Request, Response } from 'express'
|
2
|
-
import Ticket from '../models/ticket'
|
3
|
-
|
4
|
-
const router = express.Router()
|
5
|
-
|
6
|
-
router.get('/api/tickets', async (req: Request, res: Response) => {
|
7
|
-
const tickets = await Ticket.find({})
|
8
|
-
res.send({ tickets })
|
9
|
-
})
|
10
|
-
|
11
|
-
export default router
|