public async Task Should_Return_Using_VsBuild_When_No_Labelled_PropertyGroup(bool returnNull)
        {
            var mockCoverageProject = new Mock <ICoverageProject>();
            var coverageProjectGuid = Guid.NewGuid();

            mockCoverageProject.Setup(cp => cp.Id).Returns(coverageProjectGuid);
            var fccLabelledPropertyGroup = @"
    <PropertyGroup Label='NotFineCodeCoverage'>
    </PropertyGroup>

";
            var projectFileXElement      = XElement.Parse($@"
<Project>
    {fccLabelledPropertyGroup}
</Project>
");

            mockCoverageProject.Setup(cp => cp.ProjectFileXElement).Returns(projectFileXElement);

            var mockVsBuildFCCSettingsProvider = new Mock <IVsBuildFCCSettingsProvider>();
            var settingsElementFromVsBuildFCCSettingsProvider = returnNull ? null : new XElement("Root");

            mockVsBuildFCCSettingsProvider.Setup(
                vsBuildFCCSettingsProvider =>
                vsBuildFCCSettingsProvider.GetSettingsAsync(coverageProjectGuid)
                ).ReturnsAsync(settingsElementFromVsBuildFCCSettingsProvider);

            var coverageProjectSettingsProvider = new CoverageProjectSettingsProvider(mockVsBuildFCCSettingsProvider.Object);

            var coverageProject         = mockCoverageProject.Object;
            var coverageProjectSettings = await coverageProjectSettingsProvider.ProvideAsync(coverageProject);

            Assert.AreSame(settingsElementFromVsBuildFCCSettingsProvider, coverageProjectSettings);
        }
        public async Task Should_Return_The_FineCodeCoverage_Labelled_PropertyGroup()
        {
            var coverageProjectSettingsProvider = new CoverageProjectSettingsProvider(null);
            var mockCoverageProject             = new Mock <ICoverageProject>();
            var fccLabelledPropertyGroup        = @"
    <PropertyGroup Label='FineCodeCoverage'>
        <Setting1/>
    </PropertyGroup>

";
            var projectFileXElement             = XElement.Parse($@"
<Project>
    {fccLabelledPropertyGroup}
</Project>
");

            mockCoverageProject.Setup(cp => cp.ProjectFileXElement).Returns(projectFileXElement);
            var coverageProject         = mockCoverageProject.Object;
            var coverageProjectSettings = await coverageProjectSettingsProvider.ProvideAsync(coverageProject);

            XmlAssert.NoXmlDifferences(coverageProjectSettings.ToString(), fccLabelledPropertyGroup);
        }