Esempio n. 1
0
        public void GenerateTextTest()
        {
            var rnd = new Random();

            var model = new TestReportModel
            {
                Items = Enumerable.Range(0, 50).Select(id => new TestReportItemModel
                {
                    Id    = id,
                    Name  = Guid.NewGuid().ToString(),
                    Value = rnd.Next(1000000, 10000000) / 1000.0
                })
            };

            var generator = new RazorTextGenerator();

            var content = generator.Generate(@"Content\SimpleReport.cshtml", model);

            var document = XDocument.Parse("<body>" + content + "</body>");

            // ReSharper disable PossibleNullReferenceException
            var style = document.Root.Element("style");
            var table = document.Root.Element("table");

            // ReSharper restore PossibleNullReferenceException

            Assert.IsFalse(string.IsNullOrEmpty(content), "Content is null or empty");
            Assert.IsNotNull(style, "Cant find 'style' tag");
            Assert.IsNotNull(table, "Cant find 'table' tag");
        }
Esempio n. 2
0
        public void ConstructorImagesTest()
        {
            var rnd = new Random();

            var model = new TestReportModel
            {
                Items = Enumerable.Range(0, 50).Select(id => new TestReportItemModel
                {
                    Id    = id,
                    Name  = Guid.NewGuid().ToString(),
                    Value = rnd.Next(1000000, 10000000) / 1000.0
                })
            };

            Func <string, string> pathConverter = s => s.Replace("/", "\\");

            var constructor = new RazorGridConstructor();

            constructor.Init(new Dictionary <string, object> {
                { "RESOLVE_PATH_ACTION", pathConverter }
            });
            var tables = constructor.CreateTables(@"Content\SimpleReport.cshtml", model);
            var table  = tables.First();

            Assert.IsNotNull(table.Images);
            Assert.IsTrue(table.Images.Count() == 3);

            Assert.IsTrue(table.Images.All(image => image.ImagePath.EndsWith(".png")));
            Assert.IsTrue(table.Images.All(image => image.Width == 160 && image.Height == 70));
            Assert.IsTrue(table.Images.All(image => image.Left >= 1 && image.Top >= 1));
        }
Esempio n. 3
0
        public void ConstructorTableTest()
        {
            var rnd = new Random();

            var model = new TestReportModel
            {
                Items = Enumerable.Range(0, 50).Select(id => new TestReportItemModel
                {
                    Id    = id,
                    Name  = Guid.NewGuid().ToString(),
                    Value = rnd.Next(1000000, 10000000) / 1000.0
                })
            };

            var constructor = new RazorGridConstructor();
            var tables      = constructor.CreateTables(@"Content\SimpleReport.cshtml", model);
            var table       = tables.First();

            Assert.IsNotNull(table.Head);
            Assert.IsNotNull(table.Body);

            Assert.IsTrue(table.Head.Rows.Any());
            Assert.IsTrue(table.Body.Rows.Any());

            Assert.IsTrue(table.Head.Rows.First().Cells.Any());
            Assert.IsTrue(table.Body.Rows.First().Cells.Any());

            Assert.IsNotNull(table.Head.Rows.First().Cells.First().Style);
            Assert.IsNotNull(table.Body.Rows.First().Cells.First().Style);
        }
Esempio n. 4
0
        public void ConstructorTest()
        {
            var rnd = new Random();

            var model = new TestReportModel
            {
                Items = Enumerable.Range(0, 50).Select(id => new TestReportItemModel
                {
                    Id    = id,
                    Name  = Guid.NewGuid().ToString(),
                    Value = rnd.Next(1000000, 10000000) / 1000.0
                })
            };

            Func <string, string> pathConverter = s => s.Replace("/", "\\");

            var constructor = new RazorGridConstructor();

            constructor.Init(new Dictionary <string, object> {
                { "RESOLVE_PATH_ACTION", pathConverter }
            });
            var tables = constructor.CreateTables(@"Content\SimpleReport.cshtml", model);

            try
            {
                try
                {
                    SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
                }
                catch
                {
                }

                var printer = new XlsxPrinter();

                using (var stream = new FileStream("test.xlsx", FileMode.Create, FileAccess.ReadWrite))
                {
                    printer.Print(stream, tables);

                    Assert.AreNotEqual(stream.Length, 0);
                }

                Assert.IsTrue(File.Exists("test.xlsx"));
                Assert.IsTrue(File.ReadAllBytes("test.xlsx").Length > 1024);
            }
            finally
            {
                if (File.Exists("test.xlsx"))
                {
                    //File.Delete("test.xlsx");
                }
            }
        }
        public IActionResult ExecuteTests()
        {
            var nunit = new HW5T1.MyNUnit($"{environment.WebRootPath}/Temp");

            nunit.Execute();
            var results        = nunit.GetAllData();
            var assemblyReport = new AssemblyReportModel();
            var idPart         = DateTime.Now;

            foreach (var test in results)
            {
                var currentReport = new TestReportModel();
                currentReport.Name       = test.Name;
                currentReport.Time       = test.TimeOfExecution;
                currentReport.WhyIgnored = test.WhyIgnored;
                currentReport.Id         = idPart.ToString() + '%' + test.Name;
                if (test.Result == "Success")
                {
                    currentReport.Passed = true;
                    assemblyReport.Passed++;
                }
                else if (test.Result == "Failed")
                {
                    currentReport.Passed = false;
                    assemblyReport.Failed++;
                }
                else
                {
                    currentReport.Passed = null;
                    assemblyReport.Ignored++;
                }
                infoContainer.TestReports.Add(currentReport);
                archive.Add(currentReport);
                archive.SaveChanges();
                assemblyReport.TestReports.Add(currentReport);
            }
            this.currentAssembly = assemblyReport;
            currentState.AssemblyReports.Add(assemblyReport);
            return(View("Index", infoContainer.TestReports));
        }
Esempio n. 6
0
        /// <summary>
        /// Runs tests in all assemblies in the temporary directory
        /// </summary>
        public IActionResult Test()
        {
            try
            {
                var reports  = TestRunner.RunTests($"{environment.WebRootPath}/Temp");
                var dateTime = DateTime.Now;
                var results  = new List <AssemblyReportModel>();
                foreach (var testClassReport in reports)
                {
                    var assemblyReports = currentState.AssemblyReports.Where(r => r.Name == testClassReport.AssemblyName);
                    var assemblyReport  = assemblyReports.FirstOrDefault();
                    if (assemblyReports.Count() == 0)
                    {
                        assemblyReport = new AssemblyReportModel {
                            Name = testClassReport.AssemblyName, Id = dateTime.ToString() + testClassReport.AssemblyName
                        };
                        currentState.AssemblyReports.Add(assemblyReport);
                        results.Add(assemblyReport);
                    }
                    foreach (var test in testClassReport.Reports)
                    {
                        var newTestReportModel = new TestReportModel
                        {
                            ClassName = testClassReport.ClassName,
                            Valid     = true,
                            Name      = test.Name,
                            Passed    = test.Ignored ? null : test.Passed,
                            Time      = test.Ignored ? null : test.Time,
                            Message   = test.Message,
                            Id        = dateTime.ToString() + test.Name + testClassReport.ClassName
                        };
                        if (test.Passed == true)
                        {
                            assemblyReport.Passed++;
                        }
                        else if (test.Passed == false)
                        {
                            assemblyReport.Failed++;
                        }
                        else
                        {
                            assemblyReport.Ignored++;
                        }

                        assemblyReport.TestReports.Add(newTestReportModel);
                    }
                }
                var newRunReport = new TestRunModel
                {
                    DateTime        = DateTime.Now,
                    AssemblyReports = results
                };
                archive.Add(newRunReport);
                archive.SaveChanges();
            }
            catch (InvalidAssemlyException e)
            {
                var reports = e.InvalidClasses;
                foreach (var testClassReport in reports)
                {
                    var assemblyReports = currentState.AssemblyReports.Where(r => r.Name == testClassReport.AssemblyName);
                    var assemblyReport  = assemblyReports.FirstOrDefault();
                    if (assemblyReports.Count() == 0)
                    {
                        assemblyReport = new AssemblyReportModel {
                            Name = testClassReport.AssemblyName
                        };
                        currentState.AssemblyReports.Add(assemblyReport);
                    }
                    foreach (var test in testClassReport.InvalidMethods)
                    {
                        var newTestReportModel = new TestReportModel
                        {
                            ClassName = testClassReport.Name,
                            Valid     = false,
                            Name      = test.Name,
                            Passed    = null,
                            Time      = null,
                            Message   = String.Join("\n", test.Errors)
                        };

                        assemblyReport.TestReports.Add(newTestReportModel);
                    }
                }
            }

            return(View("Index", currentState));
        }