|
1 | 1 | using System; |
2 | 2 | using System.ComponentModel; |
| 3 | +using System.Linq.Expressions; |
3 | 4 | using System.Numerics; |
4 | 5 | using System.Threading.Tasks; |
5 | 6 | using GitHub.Extensions; |
@@ -27,6 +28,41 @@ public async Task GitHubPage_Is_Initialized() |
27 | 28 | target.EnterpriseTab.DidNotReceiveWithAnyArgs().Initialize(null); |
28 | 29 | } |
29 | 30 |
|
| 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 | + |
30 | 66 | [Test] |
31 | 67 | public async Task EnterprisePage_Is_Initialized() |
32 | 68 | { |
@@ -285,8 +321,8 @@ static RepositoryCloneViewModel CreateTarget( |
285 | 321 | os = os ?? Substitute.For<IOperatingSystem>(); |
286 | 322 | connectionManager = connectionManager ?? CreateConnectionManager("https://github.com"); |
287 | 323 | service = service ?? CreateRepositoryCloneService(defaultClonePath); |
288 | | - usageService = CreateUsageService(); |
289 | | - usageTracker = Substitute.For<IUsageTracker>(); |
| 324 | + usageService = usageService ?? CreateUsageService(); |
| 325 | + usageTracker = usageTracker ?? Substitute.For<IUsageTracker>(); |
290 | 326 | gitHubTab = gitHubTab ?? CreateSelectViewModel(); |
291 | 327 | enterpriseTab = enterpriseTab ?? CreateSelectViewModel(); |
292 | 328 | urlTab = urlTab ?? Substitute.For<IRepositoryUrlViewModel>(); |
|
0 commit comments