@@ -251,7 +251,7 @@ define(function (require, exports, module) {
251251
252252 it ( "should show promo ended dialog when trial expires (not logged in)" , async function ( ) {
253253 const expiredTrial = {
254- proVersion : "3.0 .0" ,
254+ proVersion : "3.1 .0" , // Same version as current to trigger ended dialog
255255 endDate : mockNow - LoginService . TRIAL_CONSTANTS . MS_PER_DAY , // Expired yesterday
256256 signature : "mock_signature"
257257 } ;
@@ -267,7 +267,7 @@ define(function (require, exports, module) {
267267 // Verify upgrade dialog shown flag was set
268268 expect ( updatedTrialData ) . not . toBeNull ( ) ;
269269 expect ( updatedTrialData . upgradeDialogShownVersion ) . toBe ( "3.1.0" ) ;
270- expect ( updatedTrialData . proVersion ) . toBe ( "3.0 .0" ) ; // Should preserve original version
270+ expect ( updatedTrialData . proVersion ) . toBe ( "3.1 .0" ) ; // Should preserve original version
271271 expect ( updatedTrialData . endDate ) . toBe ( expiredTrial . endDate ) ; // Should preserve end date
272272
273273 // Wait for modal dialog and verify it's the "ended" dialog
@@ -278,7 +278,45 @@ define(function (require, exports, module) {
278278 // Check if it's the "ended" dialog (different text than upgrade)
279279 const dialogText = modalContent . text ( ) ;
280280 expect ( dialogText ) . toContain ( 'Phoenix Pro' ) ;
281- // Note: Ended dialog would have different text than upgrade dialog
281+ expect ( dialogText ) . toContain ( 'Trial has ended' ) ;
282+
283+ // Close the dialog
284+ testWindow . $ ( '.modal .btn' ) . first ( ) . click ( ) ;
285+ await testWindow . __PR . waitForModalDialogClosed ( ".modal" ) ;
286+ } ) ;
287+
288+ it ( "should grant new trial when expired trial is from older version (not logged in)" , async function ( ) {
289+ const expiredTrial = {
290+ proVersion : "3.0.0" , // Older version than current 3.1.0
291+ endDate : mockNow - LoginService . TRIAL_CONSTANTS . MS_PER_DAY , // Expired yesterday
292+ signature : "mock_signature"
293+ } ;
294+
295+ // Set up expired trial data first
296+ await LoginService . _setTrialData ( expiredTrial ) ;
297+
298+ await LoginService . activateProTrial ( ) ;
299+
300+ // Get the updated trial data
301+ const updatedTrialData = await LoginService . _getTrialData ( ) ;
302+
303+ // Verify new trial was granted for version upgrade
304+ expect ( updatedTrialData ) . not . toBeNull ( ) ;
305+ expect ( updatedTrialData . proVersion ) . toBe ( "3.1.0" ) ; // Should update to current version
306+
307+ // Should grant 7-day trial for version upgrade
308+ const expectedEndDate = mockNow + ( 7 * LoginService . TRIAL_CONSTANTS . MS_PER_DAY ) ;
309+ expect ( updatedTrialData . endDate ) . toBe ( expectedEndDate ) ;
310+
311+ // Should show upgrade dialog (not ended dialog)
312+ await testWindow . __PR . waitForModalDialog ( ".modal" ) ;
313+ const modalContent = testWindow . $ ( '.modal' ) ;
314+ expect ( modalContent . length ) . toBeGreaterThan ( 0 ) ;
315+
316+ const dialogText = modalContent . text ( ) ;
317+ expect ( dialogText . toLowerCase ( ) ) . toContain ( 'you’ve been upgraded to' ) ;
318+ expect ( dialogText ) . toContain ( 'Phoenix Pro' ) ;
319+ expect ( dialogText ) . toContain ( '7 days' ) ;
282320
283321 // Close the dialog
284322 testWindow . $ ( '.modal .btn' ) . first ( ) . click ( ) ;
0 commit comments