@next-k8s/tickets 1.0.27 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/coverage/clover.xml +67 -45
  3. package/coverage/coverage-final.json +9 -8
  4. package/coverage/lcov-report/events/listeners/_queue-group-name.ts.html +88 -0
  5. package/coverage/lcov-report/events/listeners/index.html +131 -0
  6. package/coverage/lcov-report/events/listeners/order-created.ts.html +157 -0
  7. package/coverage/lcov-report/events/publishers/index.html +116 -0
  8. package/coverage/lcov-report/events/publishers/updated.ts.html +106 -0
  9. package/coverage/lcov-report/index.html +18 -18
  10. package/coverage/lcov-report/models/index.html +116 -0
  11. package/coverage/lcov-report/models/ticket.ts.html +235 -0
  12. package/coverage/lcov-report/src/app.ts.html +1 -1
  13. package/coverage/lcov-report/src/events/listeners/_queue-group-name.ts.html +2 -2
  14. package/coverage/lcov-report/src/events/listeners/index.html +26 -11
  15. package/coverage/lcov-report/src/events/listeners/order-cancelled.ts.html +157 -0
  16. package/coverage/lcov-report/src/events/listeners/order-created.ts.html +19 -13
  17. package/coverage/lcov-report/src/events/publishers/created.ts.html +2 -2
  18. package/coverage/lcov-report/src/events/publishers/index.html +1 -1
  19. package/coverage/lcov-report/src/events/publishers/updated.ts.html +5 -5
  20. package/coverage/lcov-report/src/index.html +1 -1
  21. package/coverage/lcov-report/src/models/index.html +1 -1
  22. package/coverage/lcov-report/src/models/ticket.ts.html +12 -15
  23. package/coverage/lcov-report/src/routes/create.ts.html +7 -7
  24. package/coverage/lcov-report/src/routes/get.ts.html +1 -1
  25. package/coverage/lcov-report/src/routes/index.html +7 -7
  26. package/coverage/lcov-report/src/routes/index.ts.html +1 -1
  27. package/coverage/lcov-report/src/routes/update.ts.html +9 -6
  28. package/coverage/lcov-report/src/test/index.html +1 -1
  29. package/coverage/lcov-report/src/test/utils.ts.html +2 -2
  30. package/coverage/lcov.info +96 -62
  31. package/package.json +3 -3
  32. package/src/events/listeners/__test__/order-cancelled.test.ts +50 -0
  33. package/src/events/listeners/__test__/order-created.test.ts +7 -1
  34. package/src/events/listeners/order-cancelled.ts +24 -0
  35. package/src/events/listeners/order-created.ts +2 -0
  36. package/src/index.ts +5 -0
  37. package/src/models/ticket.ts +0 -1
  38. package/src/routes/__test__/update.test.ts +15 -0
  39. package/src/routes/update.ts +1 -0
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
104
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
104
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -112,9 +112,8 @@
112
112
  <a name='L47'></a><a href='#L47'>47</a>
113
113
  <a name='L48'></a><a href='#L48'>48</a>
114
114
  <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">5x</span>
117
- <span class="cline-any cline-yes">5x</span>
115
+ <a name='L50'></a><a href='#L50'>50</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
116
+ <span class="cline-any cline-yes">6x</span>
118
117
  <span class="cline-any cline-neutral">&nbsp;</span>
119
118
  <span class="cline-any cline-neutral">&nbsp;</span>
120
119
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -124,8 +123,8 @@
124
123
  <span class="cline-any cline-neutral">&nbsp;</span>
125
124
  <span class="cline-any cline-neutral">&nbsp;</span>
126
125
  <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-yes">6x</span>
127
127
  <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-yes">5x</span>
129
128
  <span class="cline-any cline-neutral">&nbsp;</span>
130
129
  <span class="cline-any cline-neutral">&nbsp;</span>
131
130
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -146,21 +145,20 @@
146
145
  <span class="cline-any cline-neutral">&nbsp;</span>
147
146
  <span class="cline-any cline-neutral">&nbsp;</span>
148
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-yes">16x</span>
149
+ <span class="cline-any cline-yes">16x</span>
150
+ <span class="cline-any cline-yes">16x</span>
149
151
  <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-yes">15x</span>
151
- <span class="cline-any cline-yes">15x</span>
152
- <span class="cline-any cline-yes">15x</span>
153
152
  <span class="cline-any cline-neutral">&nbsp;</span>
154
153
  <span class="cline-any cline-neutral">&nbsp;</span>
155
154
  <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-yes">6x</span>
156
+ <span class="cline-any cline-yes">6x</span>
156
157
  <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-yes">5x</span>
158
- <span class="cline-any cline-yes">5x</span>
158
+ <span class="cline-any cline-yes">6x</span>
159
+ <span class="cline-any cline-yes">6x</span>
159
160
  <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-yes">5x</span>
161
- <span class="cline-any cline-yes">5x</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-yes">26x</span>
161
+ <span class="cline-any cline-yes">38x</span>
164
162
  <span class="cline-any cline-neutral">&nbsp;</span>
165
163
  <span class="cline-any cline-neutral">&nbsp;</span>
166
164
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import mongoose, { ObjectId } from 'mongoose'
@@ -170,7 +168,6 @@ interface TicketAttributes {
170
168
  title: string;
171
169
  price: number;
172
170
  owner: string;
173
- orderId?: string;
174
171
  createdAt?: Date;
175
172
  updatedAt?: Date;
176
173
  }
@@ -220,7 +217,7 @@ export default class Ticket extends TicketModel {
220
217
  <div class='footer quiet pad2 space-top1 center small'>
221
218
  Code coverage generated by
222
219
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
223
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
220
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
224
221
  </div>
225
222
  <script src="../../prettify.js"></script>
226
223
  <script>
@@ -102,12 +102,12 @@
102
102
  <span class="cline-any cline-neutral">&nbsp;</span>
103
103
  <span class="cline-any cline-neutral">&nbsp;</span>
104
104
  <span class="cline-any cline-neutral">&nbsp;</span>
105
- <span class="cline-any cline-yes">10x</span>
106
- <span class="cline-any cline-yes">10x</span>
107
- <span class="cline-any cline-yes">10x</span>
108
- <span class="cline-any cline-yes">10x</span>
109
- <span class="cline-any cline-yes">10x</span>
110
- <span class="cline-any cline-yes">10x</span>
105
+ <span class="cline-any cline-yes">11x</span>
106
+ <span class="cline-any cline-yes">11x</span>
107
+ <span class="cline-any cline-yes">11x</span>
108
+ <span class="cline-any cline-yes">11x</span>
109
+ <span class="cline-any cline-yes">11x</span>
110
+ <span class="cline-any cline-yes">11x</span>
111
111
  <span class="cline-any cline-neutral">&nbsp;</span>
112
112
  <span class="cline-any cline-neutral">&nbsp;</span>
113
113
  <span class="cline-any cline-yes">3x</span>
@@ -142,7 +142,7 @@ export default router
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
145
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
146
146
  </div>
147
147
  <script src="../../prettify.js"></script>
148
148
  <script>
@@ -133,7 +133,7 @@ export default router
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
136
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
136
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
137
137
  </div>
138
138
  <script src="../../prettify.js"></script>
139
139
  <script>
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>62/62</span>
28
+ <span class='fraction'>64/64</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>5/5</span>
35
+ <span class='fraction'>6/6</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>53/53</span>
49
+ <span class='fraction'>54/54</span>
50
50
  </div>
51
51
 
52
52
 
@@ -129,13 +129,13 @@
129
129
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
130
130
  </td>
131
131
  <td data-value="100" class="pct high">100%</td>
132
- <td data-value="24" class="abs high">24/24</td>
132
+ <td data-value="26" class="abs high">26/26</td>
133
133
  <td data-value="100" class="pct high">100%</td>
134
- <td data-value="3" class="abs high">3/3</td>
134
+ <td data-value="4" class="abs high">4/4</td>
135
135
  <td data-value="100" class="pct high">100%</td>
136
136
  <td data-value="2" class="abs high">2/2</td>
137
137
  <td data-value="100" class="pct high">100%</td>
138
- <td data-value="20" class="abs high">20/20</td>
138
+ <td data-value="21" class="abs high">21/21</td>
139
139
  </tr>
140
140
 
141
141
  </tbody>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
149
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
150
150
  </div>
151
151
  <script src="../../prettify.js"></script>
152
152
  <script>
@@ -85,7 +85,7 @@ export default [getTicket, createTicket, updateTicket]
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
88
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
88
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
89
89
  </div>
90
90
  <script src="../../prettify.js"></script>
91
91
  <script>
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>24/24</span>
28
+ <span class='fraction'>26/26</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/3</span>
35
+ <span class='fraction'>4/4</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>20/20</span>
49
+ <span class='fraction'>21/21</span>
50
50
  </div>
51
51
 
52
52
 
@@ -91,7 +91,8 @@
91
91
  <a name='L26'></a><a href='#L26'>26</a>
92
92
  <a name='L27'></a><a href='#L27'>27</a>
93
93
  <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
95
96
  <span class="cline-any cline-yes">3x</span>
96
97
  <span class="cline-any cline-yes">3x</span>
97
98
  <span class="cline-any cline-yes">3x</span>
@@ -106,10 +107,11 @@
106
107
  <span class="cline-any cline-neutral">&nbsp;</span>
107
108
  <span class="cline-any cline-neutral">&nbsp;</span>
108
109
  <span class="cline-any cline-neutral">&nbsp;</span>
110
+ <span class="cline-any cline-yes">5x</span>
111
+ <span class="cline-any cline-yes">5x</span>
109
112
  <span class="cline-any cline-yes">4x</span>
110
113
  <span class="cline-any cline-yes">4x</span>
111
114
  <span class="cline-any cline-yes">3x</span>
112
- <span class="cline-any cline-yes">3x</span>
113
115
  <span class="cline-any cline-yes">2x</span>
114
116
  <span class="cline-any cline-yes">1x</span>
115
117
  <span class="cline-any cline-yes">1x</span>
@@ -139,6 +141,7 @@ router.put('/api/tickets/:id', requireAuth, validateInput, validateRequest, asyn
139
141
  const ticket = await Ticket.findById(req.params.id)
140
142
  if (!ticket) throw new NotFoundError()
141
143
  if (ticket.owner.toHexString() !== req.currentUser!.id) throw new UnauthorizedError()
144
+ if (ticket.orderId) throw new BadRequestError('Ticket is reserved')
142
145
  const { title, price } = req.body
143
146
  ticket.set({ title, price })
144
147
  await ticket.save()
@@ -154,7 +157,7 @@ export default router
154
157
  <div class='footer quiet pad2 space-top1 center small'>
155
158
  Code coverage generated by
156
159
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
157
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
160
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
158
161
  </div>
159
162
  <script src="../../prettify.js"></script>
160
163
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
104
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -75,7 +75,7 @@
75
75
  <a name='L10'></a><a href='#L10'>10</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
76
76
  <span class="cline-any cline-neutral">&nbsp;</span>
77
77
  <span class="cline-any cline-yes">3x</span>
78
- <span class="cline-any cline-yes">7x</span>
78
+ <span class="cline-any cline-yes">8x</span>
79
79
  <span class="cline-any cline-neutral">&nbsp;</span>
80
80
  <span class="cline-any cline-neutral">&nbsp;</span>
81
81
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -97,7 +97,7 @@ export const createTicket = (app: Express.Application, cookie?: string, title =
97
97
  <div class='footer quiet pad2 space-top1 center small'>
98
98
  Code coverage generated by
99
99
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
100
- at Fri Jul 15 2022 16:01:42 GMT-0500 (Central Daylight Time)
100
+ at Fri Jul 15 2022 21:51:54 GMT-0500 (Central Daylight Time)
101
101
  </div>
102
102
  <script src="../../prettify.js"></script>
103
103
  <script>
@@ -31,34 +31,66 @@ TN:
31
31
  SF:src/events/listeners/_queue-group-name.ts
32
32
  FNF:0
33
33
  FNH:0
34
- DA:1,1
34
+ DA:1,2
35
35
  LF:1
36
36
  LH:1
37
37
  BRF:0
38
38
  BRH:0
39
39
  end_of_record
40
40
  TN:
41
+ SF:src/events/listeners/order-cancelled.ts
42
+ FN:8,(anonymous_8)
43
+ FN:12,(anonymous_9)
44
+ FNF:2
45
+ FNH:2
46
+ FNDA:3,(anonymous_8)
47
+ FNDA:3,(anonymous_9)
48
+ DA:1,1
49
+ DA:3,1
50
+ DA:4,1
51
+ DA:6,1
52
+ DA:8,1
53
+ DA:9,3
54
+ DA:10,3
55
+ DA:13,3
56
+ DA:14,3
57
+ DA:15,3
58
+ DA:16,3
59
+ DA:18,3
60
+ DA:19,3
61
+ DA:20,3
62
+ DA:24,1
63
+ LF:15
64
+ LH:15
65
+ BRDA:14,0,0,0
66
+ BRF:1
67
+ BRH:0
68
+ end_of_record
69
+ TN:
41
70
  SF:src/events/listeners/order-created.ts
42
71
  FN:8,(anonymous_8)
43
72
  FN:12,(anonymous_9)
44
73
  FNF:2
45
74
  FNH:2
46
- FNDA:2,(anonymous_8)
47
- FNDA:2,(anonymous_9)
75
+ FNDA:3,(anonymous_8)
76
+ FNDA:3,(anonymous_9)
48
77
  DA:1,1
49
78
  DA:3,1
79
+ DA:4,1
50
80
  DA:6,1
51
81
  DA:8,1
52
- DA:9,2
53
- DA:10,2
54
- DA:13,2
55
- DA:14,2
56
- DA:15,2
57
- DA:16,2
58
- DA:18,2
59
- DA:22,1
60
- LF:12
61
- LH:12
82
+ DA:9,3
83
+ DA:10,3
84
+ DA:13,3
85
+ DA:14,3
86
+ DA:15,3
87
+ DA:16,3
88
+ DA:18,3
89
+ DA:19,3
90
+ DA:20,3
91
+ DA:24,1
92
+ LF:15
93
+ LH:15
62
94
  BRDA:14,0,0,0
63
95
  BRF:1
64
96
  BRH:0
@@ -68,10 +100,10 @@ SF:src/events/publishers/created.ts
68
100
  FN:3,(anonymous_0)
69
101
  FNF:1
70
102
  FNH:1
71
- FNDA:10,(anonymous_0)
103
+ FNDA:11,(anonymous_0)
72
104
  DA:1,3
73
105
  DA:3,3
74
- DA:4,10
106
+ DA:4,11
75
107
  DA:7,3
76
108
  LF:4
77
109
  LH:4
@@ -83,11 +115,11 @@ SF:src/events/publishers/updated.ts
83
115
  FN:3,(anonymous_0)
84
116
  FNF:1
85
117
  FNH:1
86
- FNDA:1,(anonymous_0)
87
- DA:1,3
88
- DA:3,3
89
- DA:4,1
90
- DA:7,3
118
+ FNDA:7,(anonymous_0)
119
+ DA:1,5
120
+ DA:3,5
121
+ DA:4,7
122
+ DA:7,5
91
123
  LF:4
92
124
  LH:4
93
125
  BRF:0
@@ -95,23 +127,23 @@ BRH:0
95
127
  end_of_record
96
128
  TN:
97
129
  SF:src/models/ticket.ts
98
- FN:34,(anonymous_1)
99
- FN:47,(anonymous_2)
130
+ FN:33,(anonymous_1)
131
+ FN:46,(anonymous_2)
100
132
  FNF:2
101
133
  FNH:2
102
- FNDA:15,(anonymous_1)
103
- FNDA:26,(anonymous_2)
104
- DA:1,5
105
- DA:2,5
106
- DA:13,5
107
- DA:35,15
108
- DA:36,15
109
- DA:37,15
110
- DA:42,5
111
- DA:43,5
112
- DA:45,5
113
- DA:46,5
114
- DA:48,26
134
+ FNDA:16,(anonymous_1)
135
+ FNDA:38,(anonymous_2)
136
+ DA:1,6
137
+ DA:2,6
138
+ DA:12,6
139
+ DA:34,16
140
+ DA:35,16
141
+ DA:36,16
142
+ DA:41,6
143
+ DA:42,6
144
+ DA:44,6
145
+ DA:45,6
146
+ DA:47,38
115
147
  LF:11
116
148
  LH:11
117
149
  BRF:0
@@ -123,8 +155,8 @@ FN:16,(anonymous_8)
123
155
  FN:16,(anonymous_9)
124
156
  FNF:2
125
157
  FNH:2
126
- FNDA:10,(anonymous_8)
127
- FNDA:10,(anonymous_9)
158
+ FNDA:11,(anonymous_8)
159
+ FNDA:11,(anonymous_9)
128
160
  DA:1,3
129
161
  DA:2,3
130
162
  DA:3,3
@@ -133,12 +165,12 @@ DA:6,3
133
165
  DA:7,3
134
166
  DA:9,3
135
167
  DA:11,3
136
- DA:16,10
137
- DA:17,10
138
- DA:18,10
139
- DA:19,10
140
- DA:20,10
141
- DA:21,10
168
+ DA:16,11
169
+ DA:17,11
170
+ DA:18,11
171
+ DA:19,11
172
+ DA:20,11
173
+ DA:21,11
142
174
  DA:24,3
143
175
  LF:15
144
176
  LH:15
@@ -197,8 +229,8 @@ FN:16,(anonymous_8)
197
229
  FN:16,(anonymous_9)
198
230
  FNF:2
199
231
  FNH:2
200
- FNDA:4,(anonymous_8)
201
- FNDA:4,(anonymous_9)
232
+ FNDA:5,(anonymous_8)
233
+ FNDA:5,(anonymous_9)
202
234
  DA:1,3
203
235
  DA:2,3
204
236
  DA:3,3
@@ -208,40 +240,42 @@ DA:6,3
208
240
  DA:7,3
209
241
  DA:9,3
210
242
  DA:11,3
211
- DA:16,4
212
- DA:17,4
213
- DA:18,3
214
- DA:19,3
215
- DA:20,2
216
- DA:21,1
243
+ DA:16,5
244
+ DA:17,5
245
+ DA:18,4
246
+ DA:19,4
247
+ DA:20,3
248
+ DA:21,2
217
249
  DA:22,1
218
250
  DA:23,1
219
251
  DA:24,1
220
252
  DA:25,1
221
- DA:28,3
222
- LF:20
223
- LH:20
253
+ DA:26,1
254
+ DA:29,3
255
+ LF:21
256
+ LH:21
224
257
  BRDA:17,0,0,1
225
258
  BRDA:19,1,0,1
226
259
  BRDA:20,2,0,1
227
- BRF:3
228
- BRH:3
260
+ BRDA:21,3,0,1
261
+ BRF:4
262
+ BRH:4
229
263
  end_of_record
230
264
  TN:
231
265
  SF:src/test/utils.ts
232
266
  FN:3,(anonymous_1)
233
267
  FNF:1
234
268
  FNH:1
235
- FNDA:7,(anonymous_1)
269
+ FNDA:8,(anonymous_1)
236
270
  DA:1,3
237
271
  DA:3,3
238
- DA:4,7
272
+ DA:4,8
239
273
  LF:3
240
274
  LH:3
241
- BRDA:3,0,0,6
242
- BRDA:3,1,0,6
243
- BRDA:3,2,0,7
244
- BRDA:6,3,0,7
275
+ BRDA:3,0,0,7
276
+ BRDA:3,1,0,7
277
+ BRDA:3,2,0,8
278
+ BRDA:6,3,0,8
245
279
  BRDA:6,3,1,0
246
280
  BRF:5
247
281
  BRH:4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-k8s/tickets",
3
- "version": "1.0.27",
3
+ "version": "1.0.28",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -34,7 +34,7 @@
34
34
  ]
35
35
  },
36
36
  "dependencies": {
37
- "@next-k8s/common": "^0.1.35",
37
+ "@next-k8s/common": "^0.1.36",
38
38
  "@types/cookie-session": "^2.0.44",
39
39
  "@types/express": "^4.17.13",
40
40
  "@types/jsonwebtoken": "^8.5.8",
@@ -62,5 +62,5 @@
62
62
  "supertest": "^6.2.3",
63
63
  "ts-jest": "^28.0.4"
64
64
  },
65
- "gitHead": "c217f4148ce6aa2b6b1ee1712b13c6030a8510ca"
65
+ "gitHead": "b2b69ab41a506a1496d8fa6aa5c2e150504bdde2"
66
66
  }
@@ -0,0 +1,50 @@
1
+ import mongoose from 'mongoose'
2
+ import { Message } from 'node-nats-streaming'
3
+ import { OrderCancelledEvent, OrderStatus } from '@next-k8s/common'
4
+
5
+ import Ticket from '../../../models/ticket'
6
+ import natsClient from '../../../nats-client'
7
+ import OrderCancelledListener from '../order-cancelled'
8
+
9
+ const setup = async () => {
10
+ const owner = new mongoose.Types.ObjectId().toHexString()
11
+ const orderId = new mongoose.Types.ObjectId().toHexString()
12
+ const listener = new OrderCancelledListener(natsClient.client)
13
+ const ticket = new Ticket({ title: 'Test Ticket', price: 21000, owner })
14
+
15
+ ticket.set({ orderId })
16
+ await ticket.save()
17
+
18
+ const data: OrderCancelledEvent['data'] = {
19
+ id: new mongoose.Types.ObjectId().toHexString(),
20
+ version: 0,
21
+ ticket: {
22
+ id: ticket.id
23
+ }
24
+ }
25
+
26
+ // @ts-ignore
27
+ const message: Message = { ack: jest.fn() }
28
+ return { data, listener, message, orderId, ticket }
29
+ }
30
+
31
+ describe('[Order Cancelled] Listener', () => {
32
+ it('should clear the orderId of the ticket', async () => {
33
+ const { data, listener, message, ticket } = await setup()
34
+ await listener.onMessage(data, message)
35
+ const updatedTicket = await Ticket.findById(ticket.id)
36
+ expect(updatedTicket.orderId).not.toBeDefined()
37
+ })
38
+
39
+ it('should ack the message', async () =>{
40
+ const { data, listener, message } = await setup()
41
+ await listener.onMessage(data, message)
42
+ expect(message.ack).toHaveBeenCalled()
43
+ })
44
+
45
+ it('should publish an order:updated event', async () => {
46
+ const { data, listener, message } = await setup()
47
+ await listener.onMessage(data, message)
48
+ expect(natsClient.client.publish).toHaveBeenCalled()
49
+ })
50
+ })
@@ -29,7 +29,7 @@ const setup = async () => {
29
29
  }
30
30
 
31
31
  describe('[Order Created] Listener', () => {
32
- it('should set the ticket owner', async () => {
32
+ it('should set the ticket orderId', async () => {
33
33
  const { data, listener, message, ticket } = await setup()
34
34
  await listener.onMessage(data, message)
35
35
  const updatedTicket = await Ticket.findById(ticket.id)
@@ -41,4 +41,10 @@ describe('[Order Created] Listener', () => {
41
41
  await listener.onMessage(data, message)
42
42
  expect(message.ack).toHaveBeenCalled()
43
43
  })
44
+
45
+ it('should publish a ticket:updated event', async () => {
46
+ const { data, listener, message } = await setup()
47
+ await listener.onMessage(data, message)
48
+ expect(natsClient.client.publish).toHaveBeenCalled()
49
+ })
44
50
  })
@@ -0,0 +1,24 @@
1
+ import { Listener, NotFoundError, OrderCancelledEvent, Subjects } from '@next-k8s/common'
2
+ import { Message } from 'node-nats-streaming'
3
+ import Ticket from '../../models/ticket'
4
+ import TicketUpdatedPublisher from '../publishers/updated'
5
+
6
+ import queueGroupName from './_queue-group-name'
7
+
8
+ export class OrderCancelledListener extends Listener<OrderCancelledEvent> {
9
+ readonly subject = Subjects.OrderCancelled
10
+ queueGroupName = queueGroupName
11
+
12
+ async onMessage (data: OrderCancelledEvent['data'], msg: Message) {
13
+ const ticket = await Ticket.findById(data.ticket.id)
14
+ if (!ticket) throw new NotFoundError('Ticket not found')
15
+ ticket.set({ orderId: undefined })
16
+ await ticket.save()
17
+
18
+ const { id, version, price, title, owner, orderId } = ticket
19
+ await new TicketUpdatedPublisher(this.client).publish({ id, version, price, title, owner, orderId })
20
+ msg.ack()
21
+ }
22
+ }
23
+
24
+ export default OrderCancelledListener
@@ -15,6 +15,8 @@ export class OrderCreatedListener extends Listener<OrderCreatedEvent> {
15
15
  ticket.set({ orderId: data.id })
16
16
  await ticket.save()
17
17
 
18
+ const { id, version, price, title, owner, orderId } = ticket
19
+ await new TicketUpdatedPublisher(this.client).publish({ id, version, price, title, owner, orderId })
18
20
  msg.ack()
19
21
  }
20
22
  }