Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit aebe978

Browse files
Trying to fashion better tests
1 parent e7fe92e commit aebe978

File tree

1 file changed

+97
-4
lines changed

1 file changed

+97
-4
lines changed

test/UnitTests/GitHub.VisualStudio/Services/MetricsTests.cs

Lines changed: 97 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using NUnit.Framework;
1010
using System.Linq;
1111
using System.Globalization;
12+
using System.IO;
1213
using GitHub.Reflection;
1314
using 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

Comments
 (0)