@@ -166,6 +166,26 @@ describe('getDefaultValuesUpgradeForm', () => {
166
166
} )
167
167
} )
168
168
169
+ it ( 'returns correct seats when free seats are present' , ( ) => {
170
+ const data = getDefaultValuesUpgradeForm ( {
171
+ accountDetails,
172
+ selectedPlan : proPlanYear ,
173
+ plans : [ teamPlanMonth ] ,
174
+ plan : {
175
+ billingRate : BillingRate . MONTHLY ,
176
+ value : Plans . USERS_TEAMM ,
177
+ planUserCount : 5 ,
178
+ freeSeatCount : 2 ,
179
+ isTeamPlan : true ,
180
+ } as Plan ,
181
+ } )
182
+
183
+ expect ( data ) . toStrictEqual ( {
184
+ newPlan : { value : Plans . USERS_TEAMM } ,
185
+ seats : 3 ,
186
+ } )
187
+ } )
188
+
169
189
it ( 'returns pro sentry plan if user is sentry upgrade' , ( ) => {
170
190
const data = getDefaultValuesUpgradeForm ( {
171
191
accountDetails,
@@ -214,6 +234,56 @@ describe('getDefaultValuesUpgradeForm', () => {
214
234
seats : 2 ,
215
235
} )
216
236
} )
237
+
238
+ describe ( 'quantity calculation edge cases' , ( ) => {
239
+ it ( 'returns 0 when planUserCount is null' , ( ) => {
240
+ const data = getDefaultValuesUpgradeForm ( {
241
+ accountDetails,
242
+ selectedPlan : proPlanYear ,
243
+ plans : [ proPlanYear ] ,
244
+ plan : {
245
+ billingRate : BillingRate . MONTHLY ,
246
+ value : Plans . USERS_PR_INAPPM ,
247
+ planUserCount : null ,
248
+ } as unknown as Plan ,
249
+ } )
250
+
251
+ expect ( data ) . toStrictEqual ( {
252
+ newPlan : {
253
+ value : Plans . USERS_PR_INAPPM ,
254
+ billingRate : BillingRate . MONTHLY ,
255
+ planUserCount : null ,
256
+ } ,
257
+ // extractSeats() will be passed quantity: 0, but returns min plan seats
258
+ seats : 2 ,
259
+ } )
260
+ } )
261
+
262
+ it ( 'handles case where freeSeatCount equals planUserCount' , ( ) => {
263
+ const data = getDefaultValuesUpgradeForm ( {
264
+ accountDetails,
265
+ selectedPlan : proPlanYear ,
266
+ plans : [ proPlanYear ] ,
267
+ plan : {
268
+ billingRate : BillingRate . MONTHLY ,
269
+ value : Plans . USERS_PR_INAPPM ,
270
+ planUserCount : 3 ,
271
+ freeSeatCount : 3 ,
272
+ } as Plan ,
273
+ } )
274
+
275
+ expect ( data ) . toStrictEqual ( {
276
+ newPlan : {
277
+ value : Plans . USERS_PR_INAPPM ,
278
+ billingRate : BillingRate . MONTHLY ,
279
+ planUserCount : 3 ,
280
+ freeSeatCount : 3 ,
281
+ } ,
282
+ // extractSeats() will be passed quantity: 0, but returns min plan seats
283
+ seats : 2 ,
284
+ } )
285
+ } )
286
+ } )
217
287
} )
218
288
219
289
describe ( 'getSchema' , ( ) => {
0 commit comments