public void WarewolfWorkflowReports_Calculte_TotalWorkflowNodesCoveredPercentage_GIVEN_ResourceNotFound_ShouldNotReturnNaN()
        {
            var workflowID = Guid.NewGuid();

            var mockWarewolfWorkflow = new Mock <IWarewolfWorkflow>();

            mockWarewolfWorkflow.Setup(o => o.ResourceID)
            .Returns(workflowID);
            mockWarewolfWorkflow.Setup(o => o.WorkflowNodes)
            .Returns(new List <IWorkflowNode>());

            var mockTestCoverageCatalog = new Mock <ITestCoverageCatalog>();

            mockTestCoverageCatalog.Setup(o => o.Fetch(Guid.Empty))
            .Returns(new List <IServiceTestCoverageModelTo> {
                new ServiceTestCoverageModelTo
                {
                    AllTestNodesCovered = new ISingleTestNodesCovered[]
                    {
                    }
                }
            });

            var sut = new WarewolfWorkflowReports(new List <IWarewolfWorkflow> {
                mockWarewolfWorkflow.Object
            }, string.Empty);

            sut.Calculte(mockTestCoverageCatalog.Object, new Mock <ITestCatalog>().Object);

            Assert.AreEqual(0, sut.TotalWorkflowNodesCount);
            Assert.AreEqual(0, sut.TotalWorkflowNodesCoveredCount);
            Assert.AreEqual(0, sut.TotalWorkflowNodesCoveredPercentage, "NaN my not be Ideal to print to user, should rather returning zero");
        }
        public void WarewolfWorkflowReports_Add_GIVEN_Null_ShouldNotAddNull1()
        {
            var sut = new WarewolfWorkflowReports(new List <IWarewolfWorkflow> {
                null
            }, null);

            Assert.AreEqual(0, sut.TotalWorkflowNodesCoveredPercentage);
        }
        public void WarewolfWorkflowReports_Calculte_TotalWorkflowNodesCoveredPercentage_GIVEN_RecordNameIsAsterick_ShouldReturnReport100()
        {
            var workflowID      = Guid.NewGuid();
            var testName        = "Test 1";
            var reportName      = "*";
            var coveredNode_one = Guid.NewGuid();

            var mockWarewolfWorkflow = new Mock <IWarewolfWorkflow>();

            mockWarewolfWorkflow.Setup(o => o.ResourceID)
            .Returns(workflowID);
            mockWarewolfWorkflow.Setup(o => o.WorkflowNodes)
            .Returns(new List <IWorkflowNode>
            {
                new WorkflowNode
                {
                    UniqueID = Guid.NewGuid()
                },
                new WorkflowNode
                {
                    UniqueID = Guid.NewGuid()
                }
            });

            var mockTestCoverageCatalog = new Mock <ITestCoverageCatalog>();

            mockTestCoverageCatalog.Setup(o => o.Fetch(workflowID))
            .Returns(new List <IServiceTestCoverageModelTo> {
                new ServiceTestCoverageModelTo
                {
                    ReportName          = reportName,
                    AllTestNodesCovered = new ISingleTestNodesCovered[]
                    {
                        new SingleTestNodesCovered(testName, new List <IServiceTestStep>
                        {
                            new ServiceTestStepTO
                            {
                                ActivityID = coveredNode_one,
                                Children   = new System.Collections.ObjectModel.ObservableCollection <IServiceTestStep>
                                {
                                    new ServiceTestStepTO()
                                }
                            }
                        })
                    }
                }
            });

            var sut = new WarewolfWorkflowReports(new List <IWarewolfWorkflow> {
                mockWarewolfWorkflow.Object
            }, reportName);

            sut.Calculte(mockTestCoverageCatalog.Object, new Mock <ITestCatalog>().Object);

            Assert.AreEqual(2, sut.TotalWorkflowNodesCount);
            Assert.AreEqual(2, sut.TotalWorkflowNodesCoveredCount);
            Assert.AreEqual(100, sut.TotalWorkflowNodesCoveredPercentage);
        }
        private static WarewolfWorkflowReports RunListOfCoverage(ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog, Guid workspaceGuid, IResourceCatalog catalog)
        {
            var resourceReportTemp = new WarewolfWorkflowReports(coverageData.CoverageReportResources, coverageData.ReportName);

            resourceReportTemp.Calculte(testCoverageCatalog, testCatalog);

            resourceReportTemp.EndTime = DateTime.Now;

            return(resourceReportTemp);
        }
        internal static void SetupLinesCountSummaryHtml(this HtmlTextWriter writer, WarewolfWorkflowReports workflowReports)
        {
            var totalNodes      = workflowReports.TotalWorkflowNodesCount;
            var coveredNodes    = workflowReports.TotalWorkflowNodesCoveredCount;
            var notCoveredNodes = totalNodes - coveredNodes;

            writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px 10px 5px 10px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "5px");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "count-summary row");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "0 -15px 0 -15px");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "black");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-black");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Total Nodes: " + totalNodes);
            writer.RenderEndTag();

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "green");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-green");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Covered Nodes: " + coveredNodes);
            writer.RenderEndTag();


            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "red");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-red");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Not Covered Nodes: " + notCoveredNodes);
            writer.RenderEndTag();

            var coveragePer = workflowReports.TotalWorkflowNodesCoveredPercentage;

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");

            if (coveragePer <= 65)
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "red");
            }
            else if ((coveragePer > 65) && (coveragePer <= 85))
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "orange");
            }
            else if (coveragePer > 85)
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "green");
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-red");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Coverage : " + coveragePer + " %");
            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            writer.RenderEndTag();

            writer.RenderEndTag();
            writer.RenderEndTag();
            writer.RenderEndTag();
        }
        public void WarewolfWorkflowReports_Calculte_TotalWorkflowNodesCoveredPercentage_GIVEN_RecordNameNotFound_ShouldReturnReport()
        {
            var workflowID = Guid.NewGuid();

            var mockWarewolfWorkflow = new Mock <IWarewolfWorkflow>();

            mockWarewolfWorkflow.Setup(o => o.ResourceID)
            .Returns(workflowID);
            mockWarewolfWorkflow.Setup(o => o.WorkflowNodes)
            .Returns(new List <IWorkflowNode>
            {
                new WorkflowNode
                {
                    ActivityID = Guid.NewGuid()
                },
                new WorkflowNode
                {
                    ActivityID = Guid.NewGuid()
                },
                new WorkflowNode
                {
                    ActivityID = Guid.NewGuid()
                },
            });

            var mockTestCoverageCatalog = new Mock <ITestCoverageCatalog>();

            mockTestCoverageCatalog.Setup(o => o.Fetch(workflowID))
            .Returns(new List <IServiceTestCoverageModelTo> {
                new ServiceTestCoverageModelTo
                {
                    AllTestNodesCovered = new ISingleTestNodesCovered[]
                    {
                        new SingleTestNodesCovered(string.Empty, new List <IServiceTestStep>
                        {
                            new ServiceTestStepTO
                            {
                                ActivityID = Guid.NewGuid(),
                                Children   = new System.Collections.ObjectModel.ObservableCollection <IServiceTestStep>
                                {
                                    new ServiceTestStepTO
                                    {
                                        ActivityID = Guid.NewGuid()
                                    }
                                }
                            }
                        })
                    }
                }
            });

            var sut = new WarewolfWorkflowReports(new List <IWarewolfWorkflow> {
                mockWarewolfWorkflow.Object
            }, string.Empty);

            sut.Calculte(mockTestCoverageCatalog.Object, new Mock <ITestCatalog>().Object);

            Assert.AreEqual(3, sut.TotalWorkflowNodesCount);
            Assert.AreEqual(2, sut.TotalWorkflowNodesCoveredCount);
            Assert.AreEqual(67, 67, sut.TotalWorkflowNodesCoveredPercentage);
        }