1- using FineCodeCoverage . Engine . MsTestPlatform ;
2- using Moq ;
1+ using Moq ;
32using NUnit . Framework ;
4- using System . Xml ;
53using Microsoft . VisualStudio . TestWindow . Extensibility ;
64using System . IO ;
7- using System . Globalization ;
85using System . Xml . XPath ;
9- using System ;
106using System . Collections . Generic ;
11- using FineCodeCoverage . Options ;
127using Microsoft . VisualStudio . TestPlatform . ObjectModel ;
138using AutoMoq ;
149using System . Threading ;
1510using FineCodeCoverage . Core . Utilities ;
16- using FineCodeCoverage . Engine . Model ;
1711using FineCodeCoverage . Engine . MsTestPlatform . CodeCoverage ;
12+ using System ;
1813
1914namespace FineCodeCoverageTests . MsCodeCoverage
2015{
@@ -37,55 +32,110 @@ public void Should_Have_A_Name()
3732
3833 [ TestCase ( RunSettingConfigurationInfoState . Discovery ) ]
3934 [ TestCase ( RunSettingConfigurationInfoState . None ) ]
40- public void Should_Not_Process_When_Not_Test_Execution ( RunSettingConfigurationInfoState state )
35+ public void Should_Not_Delegate_To_UserRunSettingsService_When_Not_Test_Execution ( RunSettingConfigurationInfoState state )
36+ {
37+ SetuserRunSettingsProjectDetailsLookup ( false ) ;
38+ msCodeCoverageRunSettingsService . collectionStatus = MsCodeCoverageCollectionStatus . Collecting ;
39+
40+ ShouldNotDelegateToUserRunSettingsService ( state ) ;
41+ }
42+
43+ [ TestCase ( MsCodeCoverageCollectionStatus . NotCollecting ) ]
44+ [ TestCase ( MsCodeCoverageCollectionStatus . Error ) ]
45+ public void Should_Not_Delegate_To_UserRunSettingsService_When_Is_Not_Collecting ( MsCodeCoverageCollectionStatus status )
46+ {
47+ msCodeCoverageRunSettingsService . collectionStatus = MsCodeCoverageCollectionStatus . NotCollecting ;
48+ SetuserRunSettingsProjectDetailsLookup ( false ) ;
49+
50+ ShouldNotDelegateToUserRunSettingsService ( RunSettingConfigurationInfoState . Execution ) ;
51+ }
52+
53+ [ Test ]
54+ public void Should_Not_Delegate_To_UserRunSettingsService_When_No_User_RunSettings ( )
55+ {
56+ msCodeCoverageRunSettingsService . collectionStatus = MsCodeCoverageCollectionStatus . Collecting ;
57+ SetuserRunSettingsProjectDetailsLookup ( true ) ;
58+
59+ ShouldNotDelegateToUserRunSettingsService ( RunSettingConfigurationInfoState . Execution ) ;
60+ }
61+
62+ private void ShouldNotDelegateToUserRunSettingsService ( RunSettingConfigurationInfoState state )
4163 {
4264 var mockRunSettingsConfigurationInfo = new Mock < IRunSettingsConfigurationInfo > ( ) ;
4365 mockRunSettingsConfigurationInfo . Setup ( ci => ci . RequestState ) . Returns ( state ) ;
66+
67+ autoMocker . GetMock < IUserRunSettingsService > ( )
68+ . Setup ( userRunSettingsService => userRunSettingsService . AddFCCRunSettings (
69+ It . IsAny < IXPathNavigable > ( ) ,
70+ It . IsAny < IRunSettingsConfigurationInfo > ( ) ,
71+ It . IsAny < Dictionary < string , IUserRunSettingsProjectDetails > > ( ) ,
72+ It . IsAny < string > ( )
73+ ) ) . Returns ( new Mock < IXPathNavigable > ( ) . Object ) ;
4474 Assert . IsNull ( msCodeCoverageRunSettingsService . AddRunSettings ( null , mockRunSettingsConfigurationInfo . Object , null ) ) ;
4575 }
4676
47- [ Test ]
48- public void Should_Not_Process_When_Runsettings_Created_From_Template ( )
77+
78+
79+ private void SetuserRunSettingsProjectDetailsLookup ( bool empty )
4980 {
50- var xPathNavigable = new Mock < IXPathNavigable > ( ) . Object ;
51- autoMocker . GetMock < IRunSettingsTemplate > ( ) . Setup ( runSettingsTemplate => runSettingsTemplate . FCCGenerated ( xPathNavigable ) ) . Returns ( true ) ;
52- var mockRunSettingsConfigurationInfo = new Mock < IRunSettingsConfigurationInfo > ( ) ;
53- mockRunSettingsConfigurationInfo . Setup ( ci => ci . RequestState ) . Returns ( RunSettingConfigurationInfoState . Execution ) ;
54- Assert . IsNull ( msCodeCoverageRunSettingsService . AddRunSettings ( xPathNavigable , mockRunSettingsConfigurationInfo . Object , null ) ) ;
81+ var userRunSettingsProjectDetailsLookup = new Dictionary < string , IUserRunSettingsProjectDetails > ( ) ;
82+ if ( ! empty )
83+ {
84+ userRunSettingsProjectDetailsLookup . Add ( "" , null ) ; // an entry
85+ }
86+ msCodeCoverageRunSettingsService . userRunSettingsProjectDetailsLookup = userRunSettingsProjectDetailsLookup ;
5587 }
5688
5789 [ Test ]
58- public void Should_UserRunSettingsService_AddFCCRunSettings_When_Execute_And_UserRunSettings ( )
90+ public void Should_Delegate_To_UserRunSettingsService_With_UserRunSettingsProjectDetailsLookup_And_FCC_Ms_TestAdapter_Path_When_Applicable ( )
5991 {
6092 var inputRunSettingDocument = new Mock < IXPathNavigable > ( ) . Object ;
61- var mockRunSettingsTemplate = autoMocker . GetMock < IRunSettingsTemplate > ( ) ;
62- mockRunSettingsTemplate . Setup ( runSettingsTemplate => runSettingsTemplate . FCCGenerated ( inputRunSettingDocument ) ) . Returns ( false ) ;
6393
6494 var mockRunSettingsConfigurationInfo = new Mock < IRunSettingsConfigurationInfo > ( ) ;
6595 mockRunSettingsConfigurationInfo . Setup ( ci => ci . RequestState ) . Returns ( RunSettingConfigurationInfoState . Execution ) ;
66- var testContainers = new List < ITestContainer > ( ) ;
67- mockRunSettingsConfigurationInfo . Setup ( ci => ci . TestContainers ) . Returns ( testContainers ) ;
68-
69- var ct = CancellationToken . None ;
70- autoMocker . GetMock < IToolFolder > ( ) . Setup ( toolFolder => toolFolder . EnsureUnzipped ( It . IsAny < string > ( ) , It . IsAny < string > ( ) , It . IsAny < ZipDetails > ( ) , ct ) ) . Returns ( "ZipDestination" ) ;
71- var msCodeCoveragePath = Path . Combine ( "ZipDestination" , "build" , "netstandard1.0" ) ;
72- msCodeCoverageRunSettingsService . Initialize ( null , null , ct ) ;
73-
74- // collecting
75- var mockCoverageProject = new Mock < ICoverageProject > ( ) ;
76- mockCoverageProject . Setup ( cp => cp . TestDllFile ) . Returns ( "Test.dll" ) ;
77- msCodeCoverageRunSettingsService . userRunSettingsProjectDetailsLookup = new Dictionary < string , IUserRunSettingsProjectDetails > { } ;
78-
96+ var runSettingsConfigurationInfo = mockRunSettingsConfigurationInfo . Object ;
97+
98+ var fccMsTestAdapter = GetFCCMsTestAdapterPath ( ) ;
99+
100+ // IsCollecting would set this
101+ var userRunSettingsProjectDetailsLookup = new Dictionary < string , IUserRunSettingsProjectDetails >
102+ {
103+ { "" , null } // an entry
104+ } ;
105+ msCodeCoverageRunSettingsService . userRunSettingsProjectDetailsLookup = userRunSettingsProjectDetailsLookup ;
106+ msCodeCoverageRunSettingsService . collectionStatus = MsCodeCoverageCollectionStatus . Collecting ;
79107
80- var runSettingsTemplateReplacements = new Mock < IRunSettingsTemplateReplacements > ( ) . Object ;
81- var mockRunSettingsTemplateReplacementsFactory = autoMocker . GetMock < IRunSettingsTemplateReplacementsFactory > ( ) ;
82- mockRunSettingsTemplateReplacementsFactory . Setup ( f => f . Create ( testContainers , msCodeCoverageRunSettingsService . userRunSettingsProjectDetailsLookup , msCodeCoveragePath ) ) . Returns ( runSettingsTemplateReplacements ) ;
83108
84109 var mockUserRunSettingsService = autoMocker . GetMock < IUserRunSettingsService > ( ) ;
85110 var fccRunSettingDocument = new Mock < IXPathNavigable > ( ) . Object ;
86- mockUserRunSettingsService . Setup ( userRunSettingsService => userRunSettingsService . AddFCCRunSettings ( mockRunSettingsTemplate . Object , runSettingsTemplateReplacements , inputRunSettingDocument ) ) . Returns ( fccRunSettingDocument ) ;
111+ var addFCCRunSettingsSetup = mockUserRunSettingsService . Setup ( userRunSettingsService => userRunSettingsService . AddFCCRunSettings (
112+ inputRunSettingDocument ,
113+ runSettingsConfigurationInfo ,
114+ It . IsAny < Dictionary < string , IUserRunSettingsProjectDetails > > ( ) ,
115+ fccMsTestAdapter )
116+ ) . Returns ( fccRunSettingDocument ) ;
117+
118+ Assert . AreSame ( fccRunSettingDocument , msCodeCoverageRunSettingsService . AddRunSettings ( inputRunSettingDocument , mockRunSettingsConfigurationInfo . Object , null ) ) ;
119+
120+ var addFCCRunSettingsInvocation = mockUserRunSettingsService . Invocations [ 0 ] ;
121+ Assert . AreSame ( userRunSettingsProjectDetailsLookup , addFCCRunSettingsInvocation . Arguments [ 2 ] ) ;
122+ }
123+
124+ private string GetFCCMsTestAdapterPath ( )
125+ {
126+ autoMocker . GetMock < IToolFolder > ( )
127+ . Setup (
128+ toolFolder => toolFolder . EnsureUnzipped (
129+ It . IsAny < string > ( ) ,
130+ It . IsAny < string > ( ) ,
131+ It . IsAny < ZipDetails > ( ) ,
132+ It . IsAny < CancellationToken > ( ) )
133+ )
134+ . Returns ( "ZipDestination" ) ;
87135
88- Assert . AreSame ( fccRunSettingDocument , msCodeCoverageRunSettingsService . AddRunSettings ( inputRunSettingDocument , mockRunSettingsConfigurationInfo . Object , null ) ) ;
136+ msCodeCoverageRunSettingsService . Initialize ( null , null , CancellationToken . None ) ;
137+ return Path . Combine ( "ZipDestination" , "build" , "netstandard1.0" ) ;
89138 }
139+
90140 }
91141}
0 commit comments