99using NUnit . Framework ;
1010using System . Linq ;
1111using System . Globalization ;
12+ using System . IO ;
1213using GitHub . Reflection ;
1314using Rothko ;
1415
@@ -424,17 +425,109 @@ static IUsageService CreateUsageService(
424425
425426 public class UsageServiceTests : TestBaseClass
426427 {
428+ private const string DefaultUserStoreContent =
429+ @"
430+ " ;
431+ private const string DefaultUsageContent =
432+ @"
433+ " ;
434+ private const string LegacyUsageContent =
435+ @"{
436+ ""LastUpdated"": ""2018-02-28T12:37:09.4771538Z"",
437+ ""Model"": {
438+ ""IsGitHubUser"": true,
439+ ""IsEnterpriseUser"": false,
440+ ""AppVersion"": ""2.4.3.0"",
441+ ""VSVersion"": ""14.0.25431.01 Update 3"",
442+ ""Lang"": ""en-US"",
443+ ""NumberOfStartups"": 0,
444+ ""NumberOfStartupsWeek"": 3,
445+ ""NumberOfStartupsMonth"": 23,
446+ ""NumberOfUpstreamPullRequests"": 0,
447+ ""NumberOfClones"": 0,
448+ ""NumberOfReposCreated"": 0,
449+ ""NumberOfReposPublished"": 0,
450+ ""NumberOfGists"": 0,
451+ ""NumberOfOpenInGitHub"": 0,
452+ ""NumberOfLinkToGitHub"": 2,
453+ ""NumberOfLogins"": 1,
454+ ""NumberOfOAuthLogins"": 0,
455+ ""NumberOfTokenLogins"": 0,
456+ ""NumberOfPullRequestsOpened"": 1,
457+ ""NumberOfLocalPullRequestsCheckedOut"": 0,
458+ ""NumberOfLocalPullRequestPulls"": 0,
459+ ""NumberOfLocalPullRequestPushes"": 0,
460+ ""NumberOfForkPullRequestsCheckedOut"": 0,
461+ ""NumberOfForkPullRequestPulls"": 0,
462+ ""NumberOfForkPullRequestPushes"": 0,
463+ ""NumberOfSyncSubmodules"": 0,
464+ ""NumberOfWelcomeDocsClicks"": 0,
465+ ""NumberOfWelcomeTrainingClicks"": 0,
466+ ""NumberOfGitHubPaneHelpClicks"": 0,
467+ ""NumberOfPRDetailsViewChanges"": 1,
468+ ""NumberOfPRDetailsViewFile"": 0,
469+ ""NumberOfPRDetailsCompareWithSolution"": 0,
470+ ""NumberOfPRDetailsOpenFileInSolution"": 0,
471+ ""NumberOfPRDetailsNavigateToEditor"": 0,
472+ ""NumberOfPRReviewDiffViewInlineCommentOpen"": 1,
473+ ""NumberOfPRReviewDiffViewInlineCommentPost"": 0,
474+ ""NumberOfShowCurrentPullRequest"": 2
475+ }
476+ }" ;
477+
478+ private string storeFileName ;
479+ private string userFileName ;
480+ private string localApplicationDataPath ;
481+ private IEnvironment environment ;
482+
483+ [ SetUp ]
484+ public void SetUp ( )
485+ {
486+ localApplicationDataPath = Path . Combine ( Path . GetTempPath ( ) , Path . GetRandomFileName ( ) ) ;
487+
488+ if ( File . Exists ( localApplicationDataPath ) )
489+ {
490+ File . Delete ( localApplicationDataPath ) ;
491+ }
492+
493+ if ( Directory . Exists ( localApplicationDataPath ) )
494+ {
495+ Directory . Delete ( localApplicationDataPath ) ;
496+ }
497+
498+ Directory . CreateDirectory ( localApplicationDataPath ) ;
499+
500+ storeFileName = Path . Combine ( localApplicationDataPath , "ghfvs.usage" ) ;
501+ userFileName = Path . Combine ( localApplicationDataPath , "user.json" ) ;
502+
503+ environment = Substitute . For < IEnvironment > ( ) ;
504+ environment . GetFolderPath ( System . Environment . SpecialFolder . LocalApplicationData )
505+ . Returns ( localApplicationDataPath ) ;
506+
507+ WriteUsageFileContent ( DefaultUsageContent ) ;
508+ WriteUserFileContent ( DefaultUserStoreContent ) ;
509+ }
510+
511+ private void WriteUsageFileContent ( string content )
512+ {
513+ File . WriteAllText ( storeFileName , content ) ;
514+ }
515+ private void WriteUserFileContent ( string content )
516+ {
517+ File . WriteAllText ( userFileName , content ) ;
518+ }
519+
427520 [ Test ]
428521 public async Task GetUserGuidWorks ( )
429522 {
430- var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , Substitute . For < IEnvironment > ( ) ) ;
523+ var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , environment ) ;
431524 var guid = await usageService . GetUserGuid ( ) ;
432525 }
433526
434527 [ Test ]
435528 public void IsSameDayWorks ( )
436529 {
437- var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , Substitute . For < IEnvironment > ( ) ) ;
530+ var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , environment ) ;
438531 var now = DateTimeOffset . Now ;
439532 Assert . True ( usageService . IsSameDay ( now ) ) ;
440533 Assert . True ( usageService . IsSameDay ( new DateTimeOffset ( now . Year , now . Month , now . Day , 0 , 0 , 0 , TimeSpan . Zero ) ) ) ;
@@ -448,7 +541,7 @@ public void IsSameDayWorks()
448541 [ Test ]
449542 public void IsSameWeekWorks ( )
450543 {
451- var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , Substitute . For < IEnvironment > ( ) ) ;
544+ var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , environment ) ;
452545 var now = DateTimeOffset . Now ;
453546
454547 Assert . True ( usageService . IsSameWeek ( now ) ) ;
@@ -476,7 +569,7 @@ public void IsSameWeekWorks()
476569 [ Test ]
477570 public void IsSameMonthWorks ( )
478571 {
479- var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , Substitute . For < IEnvironment > ( ) ) ;
572+ var usageService = new UsageService ( Substitute . For < IGitHubServiceProvider > ( ) , environment ) ;
480573 var now = DateTimeOffset . Now ;
481574
482575 Assert . True ( usageService . IsSameMonth ( now ) ) ;
0 commit comments