diff --git a/src/GitHub.VisualStudio/GitHubPackage.cs b/src/GitHub.VisualStudio/GitHubPackage.cs index 0597377539..0d719d3609 100644 --- a/src/GitHub.VisualStudio/GitHubPackage.cs +++ b/src/GitHub.VisualStudio/GitHubPackage.cs @@ -254,7 +254,8 @@ async Task CreateService(IAsyncServiceContainer container, CancellationT { var usageService = await GetServiceAsync(typeof(IUsageService)) as IUsageService; var serviceProvider = await GetServiceAsync(typeof(IGitHubServiceProvider)) as IGitHubServiceProvider; - return new UsageTracker(serviceProvider, usageService); + var settings = await GetServiceAsync(typeof(IPackageSettings)) as IPackageSettings; + return new UsageTracker(serviceProvider, usageService, settings); } else if (serviceType == typeof(IVSGitExt)) { diff --git a/src/GitHub.VisualStudio/Services/UsageTracker.cs b/src/GitHub.VisualStudio/Services/UsageTracker.cs index eb250ad552..f0e987906a 100644 --- a/src/GitHub.VisualStudio/Services/UsageTracker.cs +++ b/src/GitHub.VisualStudio/Services/UsageTracker.cs @@ -28,14 +28,15 @@ public sealed class UsageTracker : IUsageTracker, IDisposable IDisposable timer; bool firstTick = true; - [ImportingConstructor] public UsageTracker( IGitHubServiceProvider gitHubServiceProvider, - IUsageService service) + IUsageService service, + IPackageSettings settings) { this.gitHubServiceProvider = gitHubServiceProvider; this.service = service; - timer = StartTimer(); + this.userSettings = settings; + timer = StartTimer(); } public void Dispose() @@ -71,7 +72,6 @@ async Task Initialize() client = gitHubServiceProvider.TryGetService(); connectionManager = gitHubServiceProvider.GetService(); - userSettings = gitHubServiceProvider.GetService(); vsservices = gitHubServiceProvider.GetService(); initialized = true; } diff --git a/test/UnitTests/GitHub.VisualStudio/Services/MetricsTests.cs b/test/UnitTests/GitHub.VisualStudio/Services/MetricsTests.cs index 55113bdf8a..9d6dbdb2d3 100644 --- a/test/UnitTests/GitHub.VisualStudio/Services/MetricsTests.cs +++ b/test/UnitTests/GitHub.VisualStudio/Services/MetricsTests.cs @@ -23,7 +23,7 @@ public class UsageTrackerTests : TestBaseClass public void ShouldStartTimer() { var service = Substitute.For(); - var target = new UsageTracker(CreateServiceProvider(), service); + var target = new UsageTracker(CreateServiceProvider(), service, CreatePackageSettings()); service.Received(1).StartTimer(Arg.Any>(), TimeSpan.FromMinutes(3), TimeSpan.FromHours(8)); } @@ -147,7 +147,8 @@ public async Task ShouldIncrementCounter() var usageService = CreateUsageService(model); var target = new UsageTracker( CreateServiceProvider(), - usageService); + usageService, + CreatePackageSettings()); await target.IncrementCounter(x => x.NumberOfClones); UsageData result = usageService.ReceivedCalls().First(x => x.GetMethodInfo().Name == "WriteLocalData").GetArguments()[0] as UsageData; @@ -162,7 +163,8 @@ public async Task ShouldWriteData() var target = new UsageTracker( CreateServiceProvider(), - service); + service, + CreatePackageSettings()); await target.IncrementCounter(x => x.NumberOfClones); await service.Received(1).WriteLocalData(Arg.Is(data => @@ -196,7 +198,8 @@ public async Task ShouldWriteUpdatedData() var target = new UsageTracker( CreateServiceProvider(), - service); + service, + CreatePackageSettings()); await target.IncrementCounter(x => x.NumberOfClones); await service.Received(1).WriteLocalData(Arg.Is(data => @@ -218,7 +221,7 @@ static Tuple> CreateTargetAndGetTick( service.WhenForAnyArgs(x => x.StartTimer(null, new TimeSpan(), new TimeSpan())) .Do(x => tick = x.ArgAt>(0)); - var target = new UsageTracker(serviceProvider, service); + var target = new UsageTracker(serviceProvider, service, CreatePackageSettings()); return Tuple.Create(target, tick); } @@ -228,20 +231,24 @@ static IGitHubServiceProvider CreateServiceProvider(bool hasMetricsService = tru var result = Substitute.For(); var connectionManager = Substitute.For(); var metricsService = Substitute.For(); - var packageSettings = Substitute.For(); var vsservices = Substitute.For(); connectionManager.Connections.Returns(new ObservableCollectionEx()); - packageSettings.CollectMetrics.Returns(true); result.GetService().Returns(connectionManager); - result.GetService().Returns(packageSettings); result.GetService().Returns(vsservices); result.TryGetService().Returns(hasMetricsService ? metricsService : null); return result; } + static IPackageSettings CreatePackageSettings() + { + var result = Substitute.For(); + result.CollectMetrics.Returns(true); + return result; + } + static IUsageService CreateUsageService( UsageModel model = null) {