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);
        }
Пример #3
0
        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);
        }
Пример #5
0
        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);
        }
Пример #9
0
        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);
        }
Пример #11
0
 public ActionResult Create(ModelMedicalCertificateViewModel viewModel)
 {
     return(this.Edit(viewModel));
 }