Пример #1
0
        public ActionResult View(string filename, int pageNumber = 1, int noOfResults = 20)
        {
            pageNumber = pageNumber < 1 ? 1 : pageNumber;
            TestFile           testFile = _testsClient.GetTestFile(filename);
            IEnumerable <Test> tests    = testFile.Tests.GetPaged(noOfResults, pageNumber);

            var viewModel = new TestFileViewModel
            {
                PageNumbers  = testFile.Tests.GetPageNumbersToShow(noOfResults),
                Tests        = _testFileMapper.BuildTests(tests, pageNumber, noOfResults),
                Filename     = filename,
                PageNumber   = pageNumber,
                NoOfResults  = noOfResults,
                Environments = _environmentsService.Get().OrderBy(x => x.Order).ThenBy(x => x.Name).Select(x => x.Name).ToArray()
            };

            string viewName = "View";

            if (_configuration.ReadonlyMode)
            {
                viewName = "View-ReadonlyMode";
            }

            return(View(viewName, viewModel));
        }
Пример #2
0
        public ActionResult Add(TestFileViewModel model)
        {
            SelectListItem[] environments = GetEnvironmentsDropDown();

            if (ModelState.IsValid)
            {
                var testFile = new TestFile
                {
                    Filename  = model.Filename,
                    Variables = model.Variables?.Select(x => new Variable(x.Name, x.Value, x.Environment == DEFAULT_ENV_VAL ? string.Empty : x.Environment)).ToList() ?? new List <Variable>()
                };

                bool createdTestFile = _testsClient.CreateTestFile(testFile);
                if (createdTestFile)
                {
                    return(RedirectToAction("Index", "Home"));
                }
            }

            if (model.Variables != null)
            {
                foreach (VariableViewModel variable in model.Variables)
                {
                    variable.AvailableEnvironments = environments;
                }
            }

            return(View("Add", model));
        }
Пример #3
0
        public ActionResult Update(TestFileViewModel model)
        {
            if (ModelState.IsValid)
            {
                var variables = new List <Variable>();
                foreach (var variableModel in model.Variables ?? new List <VariableViewModel>())
                {
                    string environment = variableModel.Environment == DEFAULT_ENV_VAL ? string.Empty : variableModel.Environment;
                    variables.Add(new Variable(variableModel.Name, variableModel.Value, environment));
                }

                var testFile = new TestFile
                {
                    Filename  = model.Filename,
                    Variables = variables
                };

                bool updateTestFile = _testsClient.UpdateTestVariables(testFile);
                if (updateTestFile)
                {
                    return(RedirectToAction("View", "TestFile", new { filename = model.Filename }));
                }
            }

            if (model.Variables != null)
            {
                SelectListItem[] availableEnvironments = GetEnvironmentsDropDown();
                foreach (var variable in model.Variables)
                {
                    variable.AvailableEnvironments = availableEnvironments;
                }
            }

            return(View("Update", model));
        }
Пример #4
0
        public ActionResult Update(string fileName)
        {
            TestFile testFile = _testsClient.GetTestFile(fileName);

            SelectListItem[] environments = GetEnvironmentsDropDown();

            var variables = testFile.Variables
                            .Select(x => new VariableViewModel
            {
                Name                  = x.Name,
                Value                 = x.Value,
                Environment           = x.Environment.Name,
                AvailableEnvironments = environments
            })
                            .ToList();

            var model = new TestFileViewModel
            {
                Filename  = fileName,
                Variables = variables
            };

            return(View("Update", model));
        }
Пример #5
0
        public ActionResult Add()
        {
            var model = new TestFileViewModel();

            return(View("Add", model));
        }
Пример #6
0
        public ExampleViewModel GetExample(string course, string name)
        {
            var dir        = _bl.GetExampleDir(course, name);
            var example    = _bl.GetExamples(course).Single(i => i.Name == name);
            var userUID    = _bl.GetCurrentUserUID();
            var pastResult = _bl.GetExampleResult(userUID, null, course, name);

            var vmdl = new ExampleViewModel(example);

            vmdl.SessionID = Guid.NewGuid();
            vmdl.StartTime = DateTime.Now;

            var angabe = Directory.GetFiles(Path.Combine(dir, "text"), "*Angabe_full.md").FirstOrDefault();

            if (angabe != null)
            {
                vmdl.Instruction = _bl.FixMarkdown(_bl.ReadTextFile(angabe));
            }
            else
            {
                _bl.LogParseError(Path.Combine(dir, "text", "*Angabe_full.md"), "No text/*Angabe_full.md file found.");
            }

            var use_this_main = Directory.GetFiles(Path.Combine(dir, "src"), "use_this_main.*").FirstOrDefault();

            if (use_this_main != null)
            {
                vmdl.UseThisMain = _bl.ReadTextFile(use_this_main);
            }
            else
            {
                vmdl.UseThisMain = "";
            }

            if (pastResult != null && !string.IsNullOrWhiteSpace(userUID))
            {
                try
                {
                    var store = _submissionStoreFactory(course, "^" + Path.GetFileName(name) + "$", userUID);
                    var main  = store.GetItems().FirstOrDefault(i => i.Name == example.FileName);
                    if (main != null)
                    {
                        using (var sr = new StreamReader(main.GetStream()))
                        {
                            vmdl.SourceCode = sr.ReadToEnd();
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.Warn("Error getting source code from git repo", ex);
                }
            }

            if (string.IsNullOrWhiteSpace(vmdl.SourceCode))
            {
                vmdl.SourceCode = vmdl.UseThisMain;
            }

            vmdl.TestFiles = Directory.GetFiles(Path.Combine(dir, "tests"), "*.in").Select(inFile =>
            {
                var path    = Path.GetDirectoryName(inFile);
                var result  = new TestFileViewModel();
                result.Name = Path.GetFileNameWithoutExtension(inFile);

                result.In   = _bl.ReadTextFile(inFile);
                result.SExp = _bl.ReadTextFile(Path.Combine(path, result.Name + ".sexp"));

                return(result);
            })
                             .OrderBy(i => i.Name)
                             .ToList();

            if (vmdl.TestFiles.Count == 0)
            {
                _bl.LogParseError(Path.Combine(dir, "tests", "*.in"), "No test files found.");
            }

            return(vmdl);
        }