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

Commit e989fdf

Browse files
committed
Add tests for default tab and counters
Check the correct default tab is being selected and the NumberOfCloneView*Tab counters are being incremented.
1 parent 525c367 commit e989fdf

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

test/GitHub.App.UnitTests/ViewModels/Dialog/Clone/RepositoryCloneViewModelTests.cs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.ComponentModel;
3+
using System.Linq.Expressions;
34
using System.Numerics;
45
using System.Threading.Tasks;
56
using GitHub.Extensions;
@@ -27,6 +28,41 @@ public async Task GitHubPage_Is_Initialized()
2728
target.EnterpriseTab.DidNotReceiveWithAnyArgs().Initialize(null);
2829
}
2930

31+
[TestCase("https://github.com", false, 0)]
32+
[TestCase("https://enterprise.com", false, 1)]
33+
[TestCase("https://github.com", true, 2, Description = "Show URL tab for GitHub connections")]
34+
[TestCase("https://enterprise.com", true, 2, Description = "Show URL tab for Enterprise connections")]
35+
public async Task Default_SelectedTabIndex_For_Group(string address, bool isGroupA, int expectTabIndex)
36+
{
37+
var cm = CreateConnectionManager(address);
38+
var connection = cm.Connections[0];
39+
var usageService = CreateUsageService(isGroupA);
40+
var target = CreateTarget(connectionManager: cm, usageService: usageService);
41+
42+
await target.InitializeAsync(connection);
43+
44+
Assert.That(target.SelectedTabIndex, Is.EqualTo(expectTabIndex));
45+
}
46+
47+
[TestCase("https://github.com", false, "model => model.NumberOfCloneViewGitHubTab")]
48+
[TestCase("https://enterprise.com", false, "model => model.NumberOfCloneViewEnterpriseTab")]
49+
[TestCase("https://github.com", true, "model => model.NumberOfCloneViewUrlTab")]
50+
[TestCase("https://enterprise.com", true, "model => model.NumberOfCloneViewUrlTab")]
51+
public async Task IncrementCounter_Showing_Default_Tab(string address, bool isGroupA, string expressionString)
52+
{
53+
var cm = CreateConnectionManager(address);
54+
var connection = cm.Connections[0];
55+
var usageService = CreateUsageService(isGroupA);
56+
var usageTracker = Substitute.For<IUsageTracker>();
57+
var target = CreateTarget(connectionManager: cm, usageService: usageService, usageTracker: usageTracker);
58+
usageTracker.IncrementCounter(null).ReturnsForAnyArgs(Task.CompletedTask);
59+
60+
await target.InitializeAsync(connection).ConfigureAwait(false);
61+
62+
await usageTracker.Received(1).IncrementCounter(Arg.Is<Expression<Func<UsageModel.MeasuresModel, int>>>(
63+
x => x.ToString() == expressionString)).ConfigureAwait(false);
64+
}
65+
3066
[Test]
3167
public async Task EnterprisePage_Is_Initialized()
3268
{
@@ -285,8 +321,8 @@ static RepositoryCloneViewModel CreateTarget(
285321
os = os ?? Substitute.For<IOperatingSystem>();
286322
connectionManager = connectionManager ?? CreateConnectionManager("https://github.com");
287323
service = service ?? CreateRepositoryCloneService(defaultClonePath);
288-
usageService = CreateUsageService();
289-
usageTracker = Substitute.For<IUsageTracker>();
324+
usageService = usageService ?? CreateUsageService();
325+
usageTracker = usageTracker ?? Substitute.For<IUsageTracker>();
290326
gitHubTab = gitHubTab ?? CreateSelectViewModel();
291327
enterpriseTab = enterpriseTab ?? CreateSelectViewModel();
292328
urlTab = urlTab ?? Substitute.For<IRepositoryUrlViewModel>();

0 commit comments

Comments
 (0)