Skip to content

Commit e92b2c3

Browse files
committed
further tests
1 parent f1da4e9 commit e92b2c3

8 files changed

+347
-94
lines changed

FineCodeCoverageTests/FineCodeCoverageTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
<Compile Include="Events\EventAggregator.cs" />
112112
<Compile Include="MsCodeCoverage\CustomRunSettingsTemplateProvider_Tests.cs" />
113113
<Compile Include="MsCodeCoverage\MsCodeCoverageRunSettingsService_Collect_Tests.cs" />
114+
<Compile Include="MsCodeCoverage\MsCodeCoverageRunSettingsService_IsCollecting_Tests.cs" />
114115
<Compile Include="MsCodeCoverage\MsCodeCoverageRunSettingsService_Initialize_Tests.cs" />
115116
<Compile Include="MsCodeCoverage\MsCodeCoverageRunSettingsService_IRunSettingsService_Tests.cs" />
116117
<Compile Include="MsCodeCoverage\ProjectRunSettingsGenerator_Tests.cs" />

FineCodeCoverageTests/MsCodeCoverage/MsCodeCoverageRunSettingsService_Collect_Tests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ private async Task RunAndProcessReportAsync(IEnumerable<Uri> resultsUris,string[
5454
var mockOperation = new Mock<IOperation>();
5555
mockOperation.Setup(operation => operation.GetRunSettingsDataCollectorResultUri(new Uri(RunSettingsHelper.MsDataCollectorUri))).Returns(resultsUris);
5656

57-
// in another test List<ICoverageProject> coverageProjects = await testOperation.GetCoverageProjectsAsync();
5857
await msCodeCoverageRunSettingsService.CollectAsync(mockOperation.Object, new Mock<ITestOperation>().Object);
5958
mockFccEngine.Verify(engine => engine.RunAndProcessReport(
6059
It.Is<string[]>(coberturaFiles => !expectedCoberturaFiles.Except(coberturaFiles).Any() && !coberturaFiles.Except(expectedCoberturaFiles).Any()), It.IsAny<Action>()

FineCodeCoverageTests/MsCodeCoverage/MsCodeCoverageRunSettingsService_IRunSettingsService_Tests.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,12 @@ public void Should_UserRunSettingsService_AddFCCRunSettings_When_Execute_And_Use
6868
// collecting
6969
var mockCoverageProject = new Mock<ICoverageProject>();
7070
mockCoverageProject.Setup(cp => cp.TestDllFile).Returns("Test.dll");
71-
var userRunSettingsProjectDetails = msCodeCoverageRunSettingsService.SetUserRunSettingsProjectDetails(new List<ICoverageProject>
72-
{
73-
mockCoverageProject.Object
74-
});
71+
msCodeCoverageRunSettingsService.userRunSettingsProjectDetailsLookup = new Dictionary<string, IUserRunSettingsProjectDetails> { };
72+
7573

7674
var runSettingsTemplateReplacements = new Mock<IRunSettingsTemplateReplacements>().Object;
7775
var mockRunSettingsTemplateReplacementsFactory = autoMocker.GetMock<IRunSettingsTemplateReplacementsFactory>();
78-
mockRunSettingsTemplateReplacementsFactory.Setup(f => f.Create(testContainers, userRunSettingsProjectDetails, msCodeCoveragePath)).Returns(runSettingsTemplateReplacements);
76+
mockRunSettingsTemplateReplacementsFactory.Setup(f => f.Create(testContainers, msCodeCoverageRunSettingsService.userRunSettingsProjectDetailsLookup, msCodeCoveragePath)).Returns(runSettingsTemplateReplacements);
7977

8078
var mockUserRunSettingsService = autoMocker.GetMock<IUserRunSettingsService>();
8179
var fccRunSettingDocument = new Mock<IXPathNavigable>().Object;
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
using Moq;
2+
using NUnit.Framework;
3+
using AutoMoq;
4+
using FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage;
5+
using FineCodeCoverage.Impl;
6+
using System.Threading.Tasks;
7+
using FineCodeCoverage.Options;
8+
using FineCodeCoverage.Engine.Model;
9+
using System.Collections.Generic;
10+
using FineCodeCoverage.Engine;
11+
using System.Linq;
12+
using System.Threading;
13+
using FineCodeCoverageTests.Test_helpers;
14+
using System.Xml.Linq;
15+
using System;
16+
17+
namespace FineCodeCoverageTests.MsCodeCoverage
18+
{
19+
internal class MsCodeCoverageRunSettingsService_IsCollecting_Tests
20+
{
21+
private AutoMoqer autoMocker;
22+
private MsCodeCoverageRunSettingsService msCodeCoverageRunSettingsService;
23+
24+
[SetUp]
25+
public void SetupSut()
26+
{
27+
autoMocker = new AutoMoqer();
28+
msCodeCoverageRunSettingsService = autoMocker.Create<MsCodeCoverageRunSettingsService>();
29+
msCodeCoverageRunSettingsService.threadHelper = new TestThreadHelper();
30+
}
31+
32+
[TestCase(true)]
33+
[TestCase(false)]
34+
public async Task Should_Not_Be_Collecting_If_User_RunSettings_Are_Not_Suitable(bool useMsCodeCoverage)
35+
{
36+
SetupAppOptionsProvider(useMsCodeCoverage);
37+
38+
var mockTestOperation = new Mock<ITestOperation>();
39+
mockTestOperation.Setup(testOperation => testOperation.GetCoverageProjectsAsync()).ReturnsAsync(new List<ICoverageProject>
40+
{
41+
CreateCoverageProject("RunSettings1"),
42+
CreateCoverageProject("RunSettings2"),
43+
CreateCoverageProject(null),
44+
});
45+
46+
var mockUserRunSettingsService = autoMocker.GetMock<IUserRunSettingsService>();
47+
mockUserRunSettingsService.Setup(userRunSettingsService => userRunSettingsService.CheckUserRunSettingsSuitability(new List<string>
48+
{
49+
"RunSettings1",
50+
"RunSettings2",
51+
}, useMsCodeCoverage)).Returns((false, false));
52+
53+
var collectionStatus = await msCodeCoverageRunSettingsService.IsCollectingAsync(mockTestOperation.Object);
54+
Assert.AreEqual(MsCodeCoverageCollectionStatus.NotCollecting, collectionStatus);
55+
mockUserRunSettingsService.VerifyAll();
56+
}
57+
58+
private void SetupAppOptionsProvider(bool useMsCodeCoverage = true)
59+
{
60+
var mockAppOptionsProvider = autoMocker.GetMock<IAppOptionsProvider>();
61+
var mockOptions = new Mock<IAppOptions>();
62+
mockOptions.Setup(options => options.MsCodeCoverage).Returns(useMsCodeCoverage);
63+
mockAppOptionsProvider.Setup(appOptionsProvider => appOptionsProvider.Get()).Returns(mockOptions.Object);
64+
}
65+
66+
[Test]
67+
public async Task Should_Prepare_Coverage_Projects_When_Suitable()
68+
{
69+
SetupAppOptionsProvider();
70+
var mockTestOperation = new Mock<ITestOperation>();
71+
var mockCoverageProjects = new List<Mock<ICoverageProject>>
72+
{
73+
new Mock<ICoverageProject>(),
74+
new Mock<ICoverageProject>(),
75+
};
76+
var coverageProjects = mockCoverageProjects.Select(mockCoverageProject => mockCoverageProject.Object).ToList();
77+
mockTestOperation.Setup(testOperation => testOperation.GetCoverageProjectsAsync()).ReturnsAsync(coverageProjects);
78+
79+
var mockUserRunSettingsService = autoMocker.GetMock<IUserRunSettingsService>();
80+
mockUserRunSettingsService.Setup(userRunSettingsService => userRunSettingsService.CheckUserRunSettingsSuitability(It.IsAny<IEnumerable<string>>(), It.IsAny<bool>())).Returns((true,false));
81+
82+
await msCodeCoverageRunSettingsService.IsCollectingAsync(mockTestOperation.Object);
83+
84+
autoMocker.Verify<ICoverageToolOutputManager>(coverageToolOutputManager => coverageToolOutputManager.SetProjectCoverageOutputFolder(coverageProjects));
85+
foreach(var mockCoverageProject in mockCoverageProjects)
86+
{
87+
mockCoverageProject.Verify(coverageProject => coverageProject.PrepareForCoverageAsync(CancellationToken.None, false));
88+
}
89+
}
90+
91+
[Test]
92+
public async Task Should_Set_UserRunSettingsProjectDetailsLookup_For_IRunSettingsService_When_Suitable()
93+
{
94+
SetupAppOptionsProvider();
95+
var mockTestOperation = new Mock<ITestOperation>();
96+
97+
var projectSettings = new Mock<IAppOptions>().Object;
98+
var excludedReferencedProjects = new List<string>();
99+
var includedReferencedProjects = new List<string>();
100+
var coverageProjects = new List<ICoverageProject>
101+
{
102+
CreateCoverageProject(null),
103+
CreateCoverageProject("rs",projectSettings,"OutputFolder","Test.dll",excludedReferencedProjects, includedReferencedProjects)
104+
};
105+
mockTestOperation.Setup(testOperation => testOperation.GetCoverageProjectsAsync()).ReturnsAsync(coverageProjects);
106+
107+
var mockUserRunSettingsService = autoMocker.GetMock<IUserRunSettingsService>();
108+
mockUserRunSettingsService.Setup(userRunSettingsService => userRunSettingsService.CheckUserRunSettingsSuitability(It.IsAny<IEnumerable<string>>(), It.IsAny<bool>())).Returns((true, false));
109+
110+
await msCodeCoverageRunSettingsService.IsCollectingAsync(mockTestOperation.Object);
111+
112+
var userRunSettingsProjectDetailsLookup = msCodeCoverageRunSettingsService.userRunSettingsProjectDetailsLookup;
113+
Assert.AreEqual(1, userRunSettingsProjectDetailsLookup.Count);
114+
var userRunSettingsProjectDetails = userRunSettingsProjectDetailsLookup["Test.dll"];
115+
Assert.AreSame(projectSettings, userRunSettingsProjectDetails.Settings);
116+
Assert.AreSame(excludedReferencedProjects, userRunSettingsProjectDetails.ExcludedReferencedProjects);
117+
Assert.AreSame(includedReferencedProjects, userRunSettingsProjectDetails.IncludedReferencedProjects);
118+
Assert.AreEqual("OutputFolder", userRunSettingsProjectDetails.OutputFolder);
119+
Assert.AreEqual("Test.dll", userRunSettingsProjectDetails.TestDllFile);
120+
}
121+
122+
123+
private ICoverageProject CreateCoverageProject(string runSettingsFile,IAppOptions settings = null,string outputFolder = "",string testDllFile = "", List<string> excludedReferencedProjects = null,List<string> includedReferencedProjects = null)
124+
{
125+
var mockCoverageProject = new Mock<ICoverageProject>();
126+
mockCoverageProject.Setup(cp => cp.RunSettingsFile).Returns(runSettingsFile);
127+
mockCoverageProject.Setup(cp => cp.ProjectOutputFolder).Returns(outputFolder);
128+
mockCoverageProject.Setup(cp => cp.TestDllFile).Returns(testDllFile);
129+
mockCoverageProject.Setup(cp => cp.ExcludedReferencedProjects).Returns(excludedReferencedProjects);
130+
mockCoverageProject.Setup(cp => cp.IncludedReferencedProjects).Returns(includedReferencedProjects);
131+
mockCoverageProject.Setup(cp => cp.Settings).Returns(settings);
132+
return mockCoverageProject.Object;
133+
}
134+
}
135+
}

0 commit comments

Comments
 (0)