public Case Build(TestCaseViewModel testCase)
        {
            if (testCase == null)
            {
                throw new ArgumentNullException("testCase");
            }

            return new Case
            {
                Id = testCase.Id,
                ErrorMessage = testCase.ErrorMessage,
                Headers = testCase.Headers.Select(x => new HeaderItem(x.Key, x.Value)).ToList(),
                LogRequest = testCase.LogRequest,
                LogResponse = testCase.LogResponse,
                LongDescription = testCase.LongDescription,
                Method = testCase.Method,
                ParentFilename = testCase.ParentFilename,
                ParseResponses = testCase.ParseResponses.Select(x => new ParseResponseItem(x.Description, x.Regex)).ToList(),
                PostBody = testCase.PostBody,
                VerifyPositives = testCase.Verifications.Where(x => x.VerifyType == VerifyType.Positive).Select(x => new VerificationItem(x.Description, x.Regex, x.VerifyType)).ToList(),
                VerifyNegatives = testCase.Verifications.Where(x => x.VerifyType == VerifyType.Negative).Select(x => new VerificationItem(x.Description, x.Regex, x.VerifyType)).ToList(),
                ShortDescription = testCase.ShortDescription,
                Url = testCase.Url,
                Sleep = testCase.Sleep,
                PostType = testCase.PostType.ToString(),
                VerifyResponseCode = testCase.VerifyResponseCode,
            };
        }
        public ActionResult Edit(TestCaseViewModel model)
        {
            if (ModelState.IsValid)
            {
                var testCase = _testCaseCoreModelBuilder.Build(model);
                _casesClient.AddTestCase(testCase, _userContext.TeamName);
                return RedirectToAction("View", new { filename = model.ParentFilename });
            }

            return View("Edit", model);
        }
        public TestCaseViewModel BuildTestCase(Case testCase)
        {
            if (testCase == null)
            {
                throw new ArgumentNullException("testCase");
            }

            var verifications = new List<Models.VerificationItem>();
            IEnumerable<Models.VerificationItem> verifyPositives = GetVerificationItems(testCase.VerifyPositives);
            IEnumerable<Models.VerificationItem> verifyNegatives = GetVerificationItems(testCase.VerifyNegatives);

            verifications.AddRange(verifyPositives);
            verifications.AddRange(verifyNegatives);

            var headerList = new List<Models.HeaderItem>(testCase.Headers.Select(x => new Models.HeaderItem { Key = x.Key, Value = x.Value }));
            var parsedResponses = new List<Models.ParseResponseItem>(testCase.ParseResponses.Select(x => new Models.ParseResponseItem { Description = x.Description, Regex = x.Regex }));

            var model = new TestCaseViewModel
            {
                Id = testCase.Id,
                ErrorMessage = testCase.ErrorMessage,
                Headers = headerList,
                LogRequest = testCase.LogRequest,
                LogResponse = testCase.LogResponse,
                LongDescription = testCase.LongDescription,
                Method = testCase.Method,
                ParseResponses = parsedResponses,
                PostBody = testCase.PostBody,
                PostType = testCase.PostType == PostType.GET.ToString() ? PostType.GET : PostType.POST,
                VerifyResponseCode = testCase.VerifyResponseCode,
                ShortDescription = testCase.ShortDescription,
                Sleep = testCase.Sleep,
                Url = testCase.Url,
                Verifications = verifications,
                ParentFilename = testCase.ParentFilename
            };

            return model;
        }