public async Task SURV7()
        {
            string testName = "SURV7";

            //Arrange
            HttpClient client = _factory.CreateClient();

            SurvivalAnalysisModel model = new SurvivalAnalysisModel();

            model.DatasetID             = _factory.SheetNames.Single(x => x.Value == "Survival").Key;
            model.Response              = "Resp3";
            model.Treatment             = "Group 1";
            model.Censorship            = "Censor1";
            model.CompareSurvivalCurves = true;

            //Act
            HttpResponseMessage response = await client.PostAsync("Analyses/SurvivalAnalysis", new FormUrlEncodedContent(model.ToKeyValue()));

            IEnumerable <string> warnings = await Helpers.ExtractWarnings(response);

            //Assert
            Assert.Contains("The Response (Resp3) contains missing data. Any rows of the dataset that contain missing responses will be excluded prior to the analysis.", warnings);
            Helpers.SaveOutput("SurvivalAnalysis", testName, warnings);

            //Act - ignore warnings
            var modelIgnoreWarnings = model.ToKeyValue();

            modelIgnoreWarnings.Add("ignoreWarnings", "true");
            StatsOutput statsOutput = await Helpers.SubmitAnalysis(client, "SurvivalAnalysis", new FormUrlEncodedContent(modelIgnoreWarnings));

            Helpers.SaveTestOutput("SurvivalAnalysis", model, testName, statsOutput);

            //Assert
            string expectedHtml = File.ReadAllText(Path.Combine("ExpectedResults", "SurvivalAnalysis", testName + ".html"));

            Assert.Equal(Helpers.RemoveAllImageNodes(expectedHtml), Helpers.RemoveAllImageNodes(statsOutput.HtmlResults));
        }
        public async Task SURV4()
        {
            string testName = "SURV4";

            //Arrange
            HttpClient client = _factory.CreateClient();

            SurvivalAnalysisModel model = new SurvivalAnalysisModel();

            model.DatasetID  = _factory.SheetNames.Single(x => x.Value == "Survival").Key;
            model.Response   = "Resp2";
            model.Treatment  = "Group 3";
            model.Censorship = "Censor1";

            //Act
            HttpResponseMessage response = await client.PostAsync("Analyses/SurvivalAnalysis", new FormUrlEncodedContent(model.ToKeyValue()));

            IEnumerable <string> errors = await Helpers.ExtractErrors(response);

            //Assert
            Assert.Contains("There is no replication in one or more of the levels of the Treatment factor (Group 3). Please select another factor.", errors);
            Helpers.SaveOutput("SurvivalAnalysis", testName, errors);
        }
        public async Task SURV2()
        {
            string testName = "SURV2";

            //Arrange
            HttpClient client = _factory.CreateClient();

            SurvivalAnalysisModel model = new SurvivalAnalysisModel();

            model.DatasetID  = _factory.SheetNames.Single(x => x.Value == "Survival").Key;
            model.Response   = "Resp2";
            model.Treatment  = "Group 1";
            model.Censorship = "Censor2";

            //Act
            HttpResponseMessage response = await client.PostAsync("Analyses/SurvivalAnalysis", new FormUrlEncodedContent(model.ToKeyValue()));

            IEnumerable <string> errors = await Helpers.ExtractErrors(response);

            //Assert
            Assert.Contains("The Censorship variable contains values other than 0 and 1. Please amend the dataset prior to running the analysis.", errors);
            Helpers.SaveOutput("SurvivalAnalysis", testName, errors);
        }
        public async Task SURV16()
        {
            string testName = "SURV16";

            //Arrange
            HttpClient client = _factory.CreateClient();

            SurvivalAnalysisModel model = new SurvivalAnalysisModel();

            model.DatasetID             = _factory.SheetNames.Single(x => x.Value == "Survival").Key;
            model.Response              = "Resp4";
            model.Treatment             = "Group 8";
            model.Censorship            = "Censor9";
            model.CompareSurvivalCurves = true;

            //Act
            StatsOutput statsOutput = await Helpers.SubmitAnalysis(client, "SurvivalAnalysis", new FormUrlEncodedContent(model.ToKeyValue()));

            Helpers.SaveTestOutput("SurvivalAnalysis", model, testName, statsOutput);

            //Assert
            string expectedHtml = File.ReadAllText(Path.Combine("ExpectedResults", "SurvivalAnalysis", testName + ".html"));

            Assert.Equal(Helpers.RemoveAllImageNodes(expectedHtml), Helpers.RemoveAllImageNodes(statsOutput.HtmlResults));
        }
        public async Task SURV10()
        {
            string testName = "SURV10";

            //Arrange
            HttpClient client = _factory.CreateClient();

            SurvivalAnalysisModel model = new SurvivalAnalysisModel();

            model.DatasetID             = _factory.SheetNames.Single(x => x.Value == "Survival").Key;
            model.Treatment             = "Group 1";
            model.Censorship            = "Censor1";
            model.CompareSurvivalCurves = true;

            //Act
            HttpResponseMessage response = await client.PostAsync("Analyses/SurvivalAnalysis", new FormUrlEncodedContent(model.ToKeyValue()));

            IEnumerable <string> errors = await Helpers.ExtractErrors(response);

            //Assert
            Assert.Contains("The Response field is required.", errors);
            Helpers.SaveOutput("SurvivalAnalysis", testName, errors);
        }
        public async Task SURV1()
        {
            string testName = "SURV1";

            //Arrange
            HttpClient client = _factory.CreateClient();

            SurvivalAnalysisModel model = new SurvivalAnalysisModel();

            model.DatasetID  = _factory.SheetNames.Single(x => x.Value == "Survival").Key;
            model.Response   = "Resp 1";
            model.Treatment  = "Group 1";
            model.Censorship = "Censor1";

            //Act
            HttpResponseMessage response = await client.PostAsync("Analyses/SurvivalAnalysis", new FormUrlEncodedContent(model.ToKeyValue()));

            IEnumerable <string> errors = await Helpers.ExtractErrors(response);

            //Assert
            Assert.Contains("The Response (Resp 1) contains non-numeric data that cannot be processed. Please check the input data and make sure the data was entered correctly.", errors);
            Helpers.SaveOutput("SurvivalAnalysis", testName, errors);
        }