public void MedicalCertificateFieldsEditor_2_ModelIdIsSuppliedAndCertficateIdIsNot() { // create a model ModelMedicalCertificateViewModel formModel = new ModelMedicalCertificateViewModel() { Name = "My Model", Text = "This is a reference: <%PROP_1%>, <%pRoP_2%>, <%PrOP_3%>, <%ProP_4%>" }; var mr = new MockRepository(true); var certificateModelcontroller = mr.CreateController <ModelMedicalCertificatesController>(); certificateModelcontroller.Edit(formModel); var modelId = this.db.ModelMedicalCertificates.Select(m => m.Id).First(); // create a certificate // obtains a valid patient Firestarter.CreateFakePatients(this.db.Doctors.First(), this.db); this.db.SaveChanges(); var patientId = this.db.Patients.First().Id; var controller = mr.CreateController <MedicalCertificatesController>(); var controllerResult = controller.MedicalCertificateFieldsEditor(modelId, null, null); // obtaining the view-model ViewResult view = (ViewResult)controllerResult; var viewModel = (MedicalCertificateViewModel)view.Model; Assert.AreEqual(4, viewModel.Fields.Count); }
public void Edit_4_CannotSaveACertificateWithInvalidFields() { // obtains a valid patient Firestarter.CreateFakePatients(this.db.Doctors.First(), this.db); this.db.SaveChanges(); var patientId = this.db.Patients.First().Id; // obtains a valid certificate model ModelMedicalCertificateViewModel certificateModelFormModel = new ModelMedicalCertificateViewModel() { Name = "My Model", Text = "This is a reference: <%FIELD_1%>" }; var mr = new MockRepository(true); var certificateModelTarget = mr.CreateController <ModelMedicalCertificatesController>(); var certificateModelResult = certificateModelTarget.Edit(certificateModelFormModel); var modelId = this.db.ModelMedicalCertificates.First().Id; // tries to save MedicalCertificateViewModel formModel = new MedicalCertificateViewModel() { // both EXISTING ModelId = modelId, PatientId = patientId }; var target = mr.CreateController <MedicalCertificatesController>(); var result = target.Edit(new[] { formModel }); Assert.IsInstanceOfType(result, typeof(ViewResult)); Assert.AreEqual(false, target.ModelState.IsValid); Assert.AreEqual(1, target.ModelState.Count); }
public ActionResult Edit(ModelMedicalCertificateViewModel formModel) { if (this.ModelState.IsValid) { ModelMedicalCertificate certificateModel = null; if (formModel.Id != null) { certificateModel = this.db.ModelMedicalCertificates.First(m => m.Id == formModel.Id); } else { certificateModel = new ModelMedicalCertificate { PracticeId = this.DbUser.PracticeId, }; this.db.ModelMedicalCertificates.AddObject(certificateModel); } certificateModel.Name = formModel.Name; certificateModel.Text = formModel.Text; certificateModel.Doctor = this.Doctor; certificateModel.PracticeId = this.DbPractice.Id; var fieldsFoundInText = Regex.Matches(formModel.Text, @"\<%([^%]+?)%\>", RegexOptions.IgnoreCase) .Cast <Match>().Select(m => m.Groups[1].Value.Trim()).ToList(); // delete fields found in the DB that don't have a matching field in text var itemsToDelete = certificateModel.Fields .Where(dbField => fieldsFoundInText.All(f => f != dbField.Name)) .ToList(); foreach (var itemToDelete in itemsToDelete) { this.db.ModelMedicalCertificateFields.DeleteObject(itemToDelete); } // add new fields to the DB foreach (var field in fieldsFoundInText .Where(field => certificateModel.Fields.All(f => f.Name != field)) .Where(field => StringHelper.RemoveDiacritics(field).ToLower() != "paciente")) { certificateModel.Fields.Add( new ModelMedicalCertificateField { PracticeId = this.DbUser.PracticeId, Name = field }); } this.db.SaveChanges(); return(this.Redirect(this.Url.Action("Details", new { id = certificateModel.Id }))); } return(this.View("Edit", formModel)); }
public void MedicalCertificateFieldsEditor_4_BothParametersAreSuppliedAndTheyDontMatch() { // create a model ModelMedicalCertificateViewModel certificateModelFormModel = new ModelMedicalCertificateViewModel() { Name = "My Model", Text = "This is a reference: <%PROP_1%>" }; var mr = new MockRepository(true); var certificateModelcontroller = mr.CreateController <ModelMedicalCertificatesController>(); certificateModelcontroller.Edit(certificateModelFormModel); var modelId = this.db.ModelMedicalCertificates.Select(m => m.Id).First(); // create a certificate // obtains a valid patient Firestarter.CreateFakePatients(this.db.Doctors.First(), this.db); this.db.SaveChanges(); var patientId = this.db.Patients.First().Id; var controller = mr.CreateController <MedicalCertificatesController>(); MedicalCertificateViewModel formModel = new MedicalCertificateViewModel() { // both EXISTING ModelId = modelId, PatientId = patientId, Fields = new List <MedicalCertificateFieldViewModel>() { new MedicalCertificateFieldViewModel() { Name = "prop_1", Value = "Este é o valor" } } }; // save the certificate controller.Edit(new[] { formModel }); var certificateId = this.db.MedicalCertificates.Select(c => c.Id).First(); // at this point we have 2 certificate models, "modelId" and "anotherModelId" and we have a certificate using "modelId". The point is // to call MedicalCertificateFieldsEditor passing "anotherModelId" var controllerResult = controller.MedicalCertificateFieldsEditor(modelId, certificateId, null); // obtaining the view-model ViewResult view = (ViewResult)controllerResult; var viewModel = (MedicalCertificateViewModel)view.Model; Assert.AreEqual(1, viewModel.Fields.Count); Assert.AreEqual("Este é o valor", viewModel.Fields[0].Value); }
public ActionResult Details(int id) { var certificateModel = this.db.ModelMedicalCertificates.Include("Fields").First(m => m.Id == id); var model = new ModelMedicalCertificateViewModel() { Id = certificateModel.Id, Name = certificateModel.Name, Text = certificateModel.Text }; return(View(model)); }
public void GetCertificateText_HappyPath() { // obtains a valid patient Firestarter.CreateFakePatients(this.db.Doctors.First(), this.db); this.db.SaveChanges(); var patient = this.db.Patients.First(); var patientId = patient.Id; var patientName = patient.Person.FullName; // obtains a valid certificate model ModelMedicalCertificateViewModel certificateModelFormModel = new ModelMedicalCertificateViewModel() { Name = "My Model", Text = "This is a reference: <%FIELD_1%>. This is the patient name: <%paCIENTE%>" }; var mr = new MockRepository(true); var certificateModelController = mr.CreateController <ModelMedicalCertificatesController>(); var certificateModelControllerResult = certificateModelController.Edit(certificateModelFormModel); var modelId = this.db.ModelMedicalCertificates.First().Id; // tries to save MedicalCertificateViewModel formModel = new MedicalCertificateViewModel() { // both EXISTING ModelId = modelId, PatientId = patientId, Fields = new List <MedicalCertificateFieldViewModel>() { new MedicalCertificateFieldViewModel() { Name = "field_1", Value = "This is a value" } } }; var certificateController = mr.CreateController <MedicalCertificatesController>(); var certificateControllerResult = certificateController.Edit(new[] { formModel }); Assert.IsInstanceOfType(certificateControllerResult, typeof(ViewResult)); Assert.AreEqual(true, certificateController.ModelState.IsValid); // Now verifies whether the result is the expected var newlyCreatedCertificate = this.db.MedicalCertificates.First(); var certificateText = certificateController.GetCertificateText(newlyCreatedCertificate.Id); Assert.AreEqual("This is a reference: This is a value. This is the patient name: " + patientName, certificateText); }
public void Delete_HappyPath() { // obtains a valid patient Firestarter.CreateFakePatients(this.db.Doctors.First(), this.db); this.db.SaveChanges(); var patientId = this.db.Patients.First().Id; // obtains a valid certificate model ModelMedicalCertificateViewModel certificateModelFormModel = new ModelMedicalCertificateViewModel() { Name = "My Model", Text = "This is a reference: <%FIELD_1%>" }; var mr = new MockRepository(true); var certificateModelController = mr.CreateController <ModelMedicalCertificatesController>(); var certificateModelControllerResult = certificateModelController.Edit(certificateModelFormModel); var certificateModel = this.db.ModelMedicalCertificates.First(); // tries to save a certificate based on that model MedicalCertificateViewModel formModel = new MedicalCertificateViewModel() { ModelId = certificateModel.Id, PatientId = patientId, Fields = new List <MedicalCertificateFieldViewModel>() { new MedicalCertificateFieldViewModel() { Name = "field_1", Value = "value 1" } } }; var certificateController = mr.CreateController <MedicalCertificatesController>(); var certificateControllerResult = certificateController.Edit(new[] { formModel }); var certificate = this.db.MedicalCertificates.First(); // tries to delete the certificate var result = certificateController.Delete(certificate.Id); JsonDeleteMessage deleteMessage = (JsonDeleteMessage)result.Data; Assert.AreEqual(true, deleteMessage.success, "deleteMessage.success must be true"); Assert.AreEqual(0, this.db.MedicalCertificates.Count()); }
public void Edit_HappyPath() { // obtains a valid patient Firestarter.CreateFakePatients(this.db.Doctors.First(), this.db); this.db.SaveChanges(); var patientId = this.db.Patients.First().Id; // obtains a valid certificate model var certificateModelFormModel = new ModelMedicalCertificateViewModel() { Name = "My Model", Text = "This is a reference: <%FIELD_1%>" }; var mr = new MockRepository(true); var certificateModelTarget = mr.CreateController <ModelMedicalCertificatesController>(); var certificateModelResult = certificateModelTarget.Edit(certificateModelFormModel); var modelId = this.db.ModelMedicalCertificates.First().Id; // tries to save MedicalCertificateViewModel formModel = new MedicalCertificateViewModel() { // both EXISTING ModelId = modelId, PatientId = patientId, Fields = new List <MedicalCertificateFieldViewModel>() { new MedicalCertificateFieldViewModel() { Name = "field_1", Value = "Este é o valor" } } }; var target = mr.CreateController <MedicalCertificatesController>(); var result = target.Edit(new[] { formModel }); Assert.IsInstanceOfType(result, typeof(ViewResult)); Assert.AreEqual(true, target.ModelState.IsValid); }
public ActionResult Edit(int?id, int?anvisaId = null) { var viewModel = new ModelMedicalCertificateViewModel(); if (id != null) { var medicine = this.db.ModelMedicalCertificates.First(m => m.Id == id); viewModel = new ModelMedicalCertificateViewModel() { Id = medicine.Id, Name = medicine.Name, Text = medicine.Text }; // todo: page title should be set in the view, not in the controller ViewBag.Title = "Alterando modelo de atestado médico: " + viewModel.Name; } else { // todo: page title should be set in the view, not in the controller ViewBag.Title = "Novo modelo de atestado médico"; } return(View("Edit", viewModel)); }
public void Edit_5_CanSaveAllFieldsWhenModelDoesNotExist() { // obtains a valid patient Firestarter.CreateFakePatients(this.db.Doctors.First(), this.db); this.db.SaveChanges(); var patientId = this.db.Patients.First().Id; // obtains a valid certificate model ModelMedicalCertificateViewModel certificateModelFormModel = new ModelMedicalCertificateViewModel() { Name = "My Model", Text = "This is a reference: <%FIELD_1%>" }; var mr = new MockRepository(true); var certificateModelTarget = mr.CreateController <ModelMedicalCertificatesController>(); var certificateModelResult = certificateModelTarget.Edit(certificateModelFormModel); var modelId = this.db.ModelMedicalCertificates.First().Id; // tries to save MedicalCertificateViewModel formModel = new MedicalCertificateViewModel() { // both EXISTING ModelId = modelId, PatientId = patientId, Fields = new List <MedicalCertificateFieldViewModel>() { new MedicalCertificateFieldViewModel() { Name = "field_1", Value = "value 1" } } }; var target = mr.CreateController <MedicalCertificatesController>(); var result = target.Edit(new[] { formModel }); Assert.IsInstanceOfType(result, typeof(ViewResult)); Assert.AreEqual(true, target.ModelState.IsValid); // now, edit to remove the model and add a field var medicalCerticate = this.db.MedicalCertificates.First(); formModel = new MedicalCertificateViewModel() { // both EXISTING Id = medicalCerticate.Id, ModelId = null, PatientId = patientId, Fields = new List <MedicalCertificateFieldViewModel>() { new MedicalCertificateFieldViewModel() { Name = "field_1" }, new MedicalCertificateFieldViewModel() { Name = "field_2" }, } }; target = mr.CreateController <MedicalCertificatesController>(); result = target.Edit(new[] { formModel }); Assert.IsInstanceOfType(result, typeof(ViewResult)); Assert.AreEqual(true, target.ModelState.IsValid); }
public ActionResult Create(ModelMedicalCertificateViewModel viewModel) { return(this.Edit(viewModel)); }