@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.
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
  }