@@ -428,11 +428,54 @@ public class UsageServiceTests : TestBaseClass
428428 private static readonly Guid UserGuid = Guid . NewGuid ( ) ;
429429 private static readonly string DefaultUserStoreContent = @"{""UserGuid"":""" + UserGuid + @"""}" ;
430430
431- private static readonly string DefaultUsageContent = string . Empty ;
431+ private static readonly string DefaultUsageContent =
432+ @"{
433+ ""LastUpdated"": ""2017-02-24T18:18:52.4298622Z"",
434+ ""Model"": {
435+ ""Guid"": """ + UserGuid + @""",
436+ ""IsGitHubUser"": false,
437+ ""IsEnterpriseUser"": false,
438+ ""AppVersion"": ""2.4.3.0"",
439+ ""VSVersion"": ""14.0.25431.01 Update 3"",
440+ ""Lang"": ""en-US"",
441+ ""NumberOfStartups"": 0,
442+ ""NumberOfStartupsWeek"": 0,
443+ ""NumberOfStartupsMonth"": 0,
444+ ""NumberOfUpstreamPullRequests"": 0,
445+ ""NumberOfClones"": 0,
446+ ""NumberOfReposCreated"": 0,
447+ ""NumberOfReposPublished"": 0,
448+ ""NumberOfGists"": 0,
449+ ""NumberOfOpenInGitHub"": 0,
450+ ""NumberOfLinkToGitHub"": 0,
451+ ""NumberOfLogins"": 1,
452+ ""NumberOfOAuthLogins"": 0,
453+ ""NumberOfTokenLogins"": 0,
454+ ""NumberOfPullRequestsOpened"": 1,
455+ ""NumberOfLocalPullRequestsCheckedOut"": 0,
456+ ""NumberOfLocalPullRequestPulls"": 0,
457+ ""NumberOfLocalPullRequestPushes"": 0,
458+ ""NumberOfForkPullRequestsCheckedOut"": 0,
459+ ""NumberOfForkPullRequestPulls"": 0,
460+ ""NumberOfForkPullRequestPushes"": 0,
461+ ""NumberOfSyncSubmodules"": 0,
462+ ""NumberOfWelcomeDocsClicks"": 0,
463+ ""NumberOfWelcomeTrainingClicks"": 0,
464+ ""NumberOfGitHubPaneHelpClicks"": 0,
465+ ""NumberOfPRDetailsViewChanges"": 0,
466+ ""NumberOfPRDetailsViewFile"": 0,
467+ ""NumberOfPRDetailsCompareWithSolution"": 0,
468+ ""NumberOfPRDetailsOpenFileInSolution"": 0,
469+ ""NumberOfPRDetailsNavigateToEditor"": 0,
470+ ""NumberOfPRReviewDiffViewInlineCommentOpen"": 0,
471+ ""NumberOfPRReviewDiffViewInlineCommentPost"": 0
472+ }
473+ }
474+ " ;
432475
433476 private static readonly string LegacyUsageContent =
434477@"{
435- ""LastUpdated"": ""2018 -02-28T12 :37:09.4771538Z"",
478+ ""LastUpdated"": ""2017 -02-24T12 :37:09.4771538Z"",
436479 ""Model"": {
437480 ""IsGitHubUser"": true,
438481 ""IsEnterpriseUser"": false,
@@ -472,7 +515,8 @@ public class UsageServiceTests : TestBaseClass
472515 ""NumberOfPRReviewDiffViewInlineCommentPost"": 0,
473516 ""NumberOfShowCurrentPullRequest"": 2
474517 }
475- }" ;
518+ }
519+ " ;
476520
477521 private string usageFileName ;
478522 private string userFileName ;
@@ -525,7 +569,35 @@ public async Task GetUserGuidWorks()
525569 }
526570
527571 [ Test ]
528- public async Task ReadLocalDataWorksWhenFileMissing ( )
572+ public async Task GetUserGuidWorksWhenFileMissing ( )
573+ {
574+ File . Delete ( userFileName ) ;
575+
576+ var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , environment ) ;
577+ var guid = await usageService . GetUserGuid ( ) ;
578+ Assert . AreNotEqual ( guid , Guid . Empty ) ;
579+ }
580+
581+ [ Test ]
582+ public async Task ReadUsageDataWorks ( )
583+ {
584+ var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , environment ) ;
585+ var usageData = await usageService . ReadLocalData ( ) ;
586+ Assert . AreEqual ( usageData . LastUpdated . Date , DateTime . Parse ( "2017-02-24" ) ) ;
587+ }
588+
589+ [ Test ]
590+ public async Task ReadUsageDataWorksWhenLegacyContent ( )
591+ {
592+ WriteUsageFileContent ( LegacyUsageContent ) ;
593+
594+ var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , environment ) ;
595+ var usageData = await usageService . ReadLocalData ( ) ;
596+ Assert . AreEqual ( usageData . LastUpdated . Date , DateTime . Parse ( "2017-02-24" ) ) ;
597+ }
598+
599+ [ Test ]
600+ public async Task ReadUsageDataWorksWhenFileMissing ( )
529601 {
530602 File . Delete ( usageFileName ) ;
531603
0 commit comments