private void FillInvetnoryFormMedicationUsage(double quantityShipped, DateTime shipDate, InventoryFormData inventoryFormData) { int usagesCount = randomGenerator.Next(1, 4); double quantityPerTime = Math.Round(quantityShipped/usagesCount, 1); DateTime nextUsage = shipDate.AddDays(randomGenerator.Next(4)); inventoryFormData.MedicationUsage = new List<RepeatableInventoryData>(); for (int i = 0; i < usagesCount - 1; i++) { inventoryFormData.MedicationUsage.Add(new RepeatableInventoryData { DateUsed = new Question() {Caption = "Date Used", DataType = QuestionDataType.Date, Value = nextUsage.ToString()}, QuantityUsed = new Question() {Caption = "Quantity Used", DataType = QuestionDataType.Number, Value = quantityPerTime.ToString()} }); nextUsage = nextUsage.AddDays(randomGenerator.Next(1, 3)); } double restOfMedication = quantityShipped - Math.Round(quantityPerTime*(usagesCount - 1), 1); restOfMedication = Math.Round(restOfMedication, 1); inventoryFormData.MedicationUsage.Add(new RepeatableInventoryData { DateUsed = new Question() { Caption = "Date Used", DataType = QuestionDataType.Date, Value = nextUsage.ToString() }, QuantityUsed = new Question() { Caption = "Quantity Used", DataType = QuestionDataType.Number, Value = restOfMedication.ToString() } }); }
public void UpdateMedicationUsage_AddOneDeleteOneQuestions() { //Arrange var dataStorage = new Mock<IDataStorage>(); var entity = new InventoryFormData() { Id = 1, QuantityShipped = new Question {Id = 2, Value = "2"}, BatchNumber = new Question {Id = 3, Value = "3"}, ReceiptDate = new Question {Id = 4, Value = "4"}, ShipDate = new Question {Id = 5, Value = "5"}, MedicationUsage = new List<RepeatableInventoryData> { new RepeatableInventoryData { Id = 1, DateUsed = new Question { Id = 6, Value = "6" }, QuantityUsed = new Question { Id = 7, Value = "7" } }, new RepeatableInventoryData { Id = 2, DateUsed = new Question { Id = 8, Value = "8" }, QuantityUsed = new Question { Id = 9, Value = "9" } } } }; var updatedEntity = new InventoryFormData() { Id = 1, QuantityShipped = new Question {Id = 3, Value = "3"}, BatchNumber = new Question {Id = 4, Value = "4"}, ReceiptDate = new Question {Id = 5, Value = "5"}, ShipDate = new Question {Id = 6, Value = "6"}, MedicationUsage = new List<RepeatableInventoryData> { new RepeatableInventoryData { Id = 2, DateUsed = new Question { Id = 10, Value = "10" }, QuantityUsed = new Question { Id = 11, Value = "11" } }, new RepeatableInventoryData { Id = 0, DateUsed = new Question { Id = 12, Value = "12" }, QuantityUsed = new Question { Id = 13, Value = "13" } } } }; var repository = new InventoryFormDataRepository(dataStorage.Object); dataStorage.Setup(ds => ds.GetData<InventoryFormData>()).Returns(new List<InventoryFormData> {entity}); //Act repository.Edit(updatedEntity); //Assert //Values are equal Assert.That(entity.MedicationUsage, Is.Not.Null); Assert.That(entity.MedicationUsage.Count, Is.EqualTo(2)); Assert.That(entity.MedicationUsage.Count, Is.EqualTo(updatedEntity.MedicationUsage.Count)); Assert.That(entity.MedicationUsage.Any(x => x.Id == 1), Is.False); Assert.That(entity.MedicationUsage.Any(x => x.Id == 2), Is.True); Assert.That(entity.MedicationUsage.Any(x => x.Id == 3), Is.True); Assert.That(entity.MedicationUsage[0].Id, Is.EqualTo(updatedEntity.MedicationUsage[0].Id)); Assert.That(entity.MedicationUsage[0].DateUsed.Value, Is.EqualTo(updatedEntity.MedicationUsage[0].DateUsed.Value)); Assert.That(entity.MedicationUsage[0].QuantityUsed.Value, Is.EqualTo(updatedEntity.MedicationUsage[0].QuantityUsed.Value)); Assert.That(entity.MedicationUsage[1].Id, Is.EqualTo(updatedEntity.MedicationUsage[1].Id)); Assert.That(entity.MedicationUsage[1].DateUsed.Value, Is.EqualTo(updatedEntity.MedicationUsage[1].DateUsed.Value)); Assert.That(entity.MedicationUsage[1].QuantityUsed.Value, Is.EqualTo(updatedEntity.MedicationUsage[1].QuantityUsed.Value)); }
public void InventoryFormDataToViewModel_FullData() { //Arrange var iFormData = new InventoryFormData { Id = 5, Form = new Form { Id = 15, Caption = "Form15", FormState = FormState.Completed, Visit = new Visit {Caption = "Visit15", Patient = new Patient {PatientNumber = 150}} }, ShipDate = new Question { Id = 3, DataType = QuestionDataType.Date, Value = new DateTime(2011, 12, 21).ToString( CultureInfo.InvariantCulture) }, BatchNumber = new Question {Id = 4, DataType = QuestionDataType.Integer, Value = "123"}, QuantityShipped = new Question { Id = 5, DataType = QuestionDataType.Number, Value = (3.3m).ToString(CultureInfo.InvariantCulture) }, ReceiptDate = new Question { Id = 6, DataType = QuestionDataType.Date, Value = new DateTime(2011, 12, 5).ToString( CultureInfo.InvariantCulture) }, MedicationUsage = new List<RepeatableInventoryData> { new RepeatableInventoryData { Id = 1, DateUsed = new Question { Id = 114, DataType = QuestionDataType.Date, Value = DateTime.Today.ToString(CultureInfo.InvariantCulture) }, QuantityUsed = new Question { Id = 115, DataType = QuestionDataType.Number, Value = (2.4m).ToString(CultureInfo.InvariantCulture) } }, new RepeatableInventoryData { Id = 2, DateUsed = new Question { Id = 211, DataType = QuestionDataType.Date, Value = DateTime.Today.AddDays(-1).ToString(CultureInfo.InvariantCulture) }, QuantityUsed = new Question { Id = 212, DataType = QuestionDataType.Number, Value = (0.4m).ToString(CultureInfo.InvariantCulture) } } } }; //Act var inventory = formController.MapInventoryFormDataToViewModel(iFormData); //Assert Assert.That(inventory.FormId, Is.EqualTo(15)); Assert.That(inventory.FormCaption, Is.EqualTo("Form15")); Assert.That(inventory.IsCompleted, Is.True); Assert.That(inventory.VisitName, Is.EqualTo("Visit15")); Assert.That(inventory.PatientNumber, Is.EqualTo(150)); Assert.That(inventory.Id, Is.EqualTo(5)); Assert.That(inventory.BatchNumber, Is.EqualTo(123)); Assert.That(inventory.ShipDate, Is.Not.Null); Assert.That(inventory.ShipDate.Value.ToShortDateString(), Is.EqualTo(new DateTime(2011, 12, 21).ToShortDateString())); Assert.That(inventory.ReceiptDate, Is.Not.Null); Assert.That(inventory.ReceiptDate.Value.ToShortDateString(), Is.EqualTo(new DateTime(2011, 12, 5).ToShortDateString())); Assert.That(inventory.QuantityShipped, Is.EqualTo(3.3m)); Assert.That(inventory.BatchNumberQuestionId, Is.EqualTo(iFormData.BatchNumber.Id)); Assert.That(inventory.ShipDateQuestionId, Is.EqualTo(iFormData.ShipDate.Id)); Assert.That(inventory.ReceiptDateQuestionId, Is.EqualTo(iFormData.ReceiptDate.Id)); Assert.That(inventory.QuantityShippedQuestionId, Is.EqualTo(iFormData.QuantityShipped.Id)); Assert.That(inventory.MedicationUsage, Is.Not.Null); Assert.That(inventory.MedicationUsage.Count, Is.EqualTo(2)); Assert.That(inventory.MedicationUsage[0].DateUsed, Is.Not.Null); Assert.That(inventory.MedicationUsage[0].DateUsed.Value.ToShortDateString(), Is.EqualTo(DateTime.Today.ToShortDateString())); Assert.That(inventory.MedicationUsage[0].QuantityUsed, Is.EqualTo(2.4m)); Assert.That(inventory.MedicationUsage[0].DateUsedQuestionId, Is.EqualTo(iFormData.MedicationUsage[0].DateUsed.Id)); Assert.That(inventory.MedicationUsage[0].QuantityUsedQuestionId, Is.EqualTo(iFormData.MedicationUsage[0].QuantityUsed.Id)); Assert.That(inventory.MedicationUsage[1].DateUsed, Is.Not.Null); Assert.That(inventory.MedicationUsage[1].DateUsed.Value.ToShortDateString(), Is.EqualTo(DateTime.Today.AddDays(-1).ToShortDateString())); Assert.That(inventory.MedicationUsage[1].QuantityUsed, Is.EqualTo(0.4m)); Assert.That(inventory.MedicationUsage[1].DateUsedQuestionId, Is.EqualTo(iFormData.MedicationUsage[1].DateUsed.Id)); Assert.That(inventory.MedicationUsage[1].QuantityUsedQuestionId, Is.EqualTo(iFormData.MedicationUsage[1].QuantityUsed.Id)); }
public void MappingTest() { //Arrange var dataStorage = new Mock<IDataStorage>(); var entity = new InventoryFormData() { Id = 1, QuantityShipped = new Question {Id = 2, Value = "2"}, BatchNumber = new Question {Id = 3, Value = "3"}, ReceiptDate = new Question {Id = 4, Value = "4"}, ShipDate = new Question {Id = 5, Value = "5"}, MedicationUsage = new List<RepeatableInventoryData> { new RepeatableInventoryData { Id = 1, DateUsed = new Question {Id = 6, Value = "6"}, QuantityUsed = new Question {Id = 7, Value = "7"} } } }; var updatedEntity = new InventoryFormData() { Id = 1, QuantityShipped = new Question {Id = 3, Value = "3"}, BatchNumber = new Question {Id = 4, Value = "4"}, ReceiptDate = new Question {Id = 5, Value = "5"}, ShipDate = new Question {Id = 6, Value = "6"}, MedicationUsage = new List<RepeatableInventoryData> { new RepeatableInventoryData { Id = 1, DateUsed = new Question {Id = 7, Value = "7"}, QuantityUsed = new Question {Id = 8, Value = "8"} } } }; var repository = new InventoryFormDataRepository(dataStorage.Object); dataStorage.Setup(ds => ds.GetData<InventoryFormData>()).Returns(new List<InventoryFormData> {entity}); //Act repository.Edit(updatedEntity); //Assert //Values are equal Assert.That(entity.QuantityShipped.Value, Is.EqualTo(updatedEntity.QuantityShipped.Value)); Assert.That(entity.BatchNumber.Value, Is.EqualTo(updatedEntity.BatchNumber.Value)); Assert.That(entity.ReceiptDate.Value, Is.EqualTo(updatedEntity.ReceiptDate.Value)); Assert.That(entity.ShipDate.Value, Is.EqualTo(updatedEntity.ShipDate.Value)); Assert.That(entity.MedicationUsage[0].DateUsed.Value, Is.EqualTo(updatedEntity.MedicationUsage[0].DateUsed.Value)); Assert.That(entity.MedicationUsage[0].QuantityUsed.Value, Is.EqualTo(updatedEntity.MedicationUsage[0].QuantityUsed.Value)); //Objects are not equal Assert.That(entity.QuantityShipped, Is.Not.EqualTo(updatedEntity.QuantityShipped)); Assert.That(entity.BatchNumber, Is.Not.EqualTo(updatedEntity.BatchNumber)); Assert.That(entity.ReceiptDate, Is.Not.EqualTo(updatedEntity.ReceiptDate)); Assert.That(entity.ShipDate, Is.Not.EqualTo(updatedEntity.ShipDate)); Assert.That(entity.MedicationUsage[0].DateUsed, Is.Not.EqualTo(updatedEntity.MedicationUsage[0].DateUsed)); Assert.That(entity.MedicationUsage[0].QuantityUsed, Is.Not.EqualTo(updatedEntity.MedicationUsage[0].QuantityUsed)); }
public void PostEditInventoryFormData_ChangedValues_IncompleteForm_Test() { //Arrange EmulateControllerContext(formController, false); var form = new Form { Id = 13, FormState = FormState.Incomplete, Caption = "TestForm", Visit = new Visit { Caption = "TestVisit", Patient = new Patient { PatientNumber = 123 } } }; var formData = new InventoryFormData { Id = 12, Form = form, ReceiptDate = new Question() { Id = 101, Value = new DateTime(2011, 10, 11, 12, 13, 14).ToString(CultureInfo.InvariantCulture) }, ShipDate = new Question() { Id = 102, Value = new DateTime(2012, 1, 2, 3, 4, 5).ToString(CultureInfo.InvariantCulture) }, BatchNumber = new Question() { Id = 103, Value = "170" }, QuantityShipped = new Question() { Id = 104, Value = "50" } }; var incomingModel = new InventoryFormViewModel { Id = 12, FormId = 13, ReceiptDate = new DateTime(2012, 10, 11, 15, 16, 17), ShipDate = new DateTime(2011, 4, 5, 6, 7, 8), BatchNumber = 171, QuantityShipped = 51 }; fRep.Setup(r => r.GetByKey(incomingModel.FormId)).Returns(form); //here we return "formdata before editing" - this data should be overwritten from model ifdRep.Setup(r => r.GetByKey(incomingModel.Id)).Returns(formData); //as checking of saved formdata is quite complicated, we will save the passed object and inspect it later InventoryFormData savedFormData = null; ifdRep.Setup(r => r.Edit(It.IsAny<InventoryFormData>())).Callback<InventoryFormData>(fd => savedFormData = fd); Form savedForm = null; fRep.Setup(r => r.Edit(It.IsAny<Form>())).Callback<Form>(f => savedForm = f); //Act var result = formController.EditInventoryForm(incomingModel); //Assert CheckEditFormDataRedirectRouteValues(result, form); ifdRep.Verify(r => r.GetByKey(incomingModel.Id), Times.Once()); ifdRep.Verify(r => r.Edit(It.IsAny<InventoryFormData>()), Times.Once()); ifdRep.Verify(r => r.Save(), Times.Once()); fRep.Verify(r => r.GetByKey(incomingModel.FormId), Times.Once()); fRep.Verify(r => r.Edit(It.IsAny<Form>()), Times.Once()); fRep.Verify(r => r.Save(), Times.Once()); Assert.That(savedFormData, Is.Not.Null); Assert.That(savedFormData.Id, Is.EqualTo(incomingModel.Id)); Assert.That(savedFormData.ReceiptDate.Value, Is.EqualTo(new DateTime(2012, 10, 11, 15, 16, 17).ToString(CultureInfo.InvariantCulture))); Assert.That(savedFormData.ShipDate.Value, Is.EqualTo(new DateTime(2011, 4, 5, 6, 7, 8).ToString(CultureInfo.InvariantCulture))); Assert.That(savedFormData.BatchNumber.Value, Is.EqualTo("171")); Assert.That(savedFormData.QuantityShipped.Value, Is.EqualTo("51")); Assert.That(savedForm, Is.Not.Null); Assert.That(savedForm.Id, Is.EqualTo(incomingModel.FormId)); Assert.That(savedForm.FormState, Is.EqualTo(FormState.Completed)); }
public void PostEditInventoryFormData_ChangedUnconfirmedValues_Test() { //Arrange EmulateControllerContext(formController, false); var form = new Form { Id = 13, FormState = FormState.Completed, Caption = "TestForm", Visit = new Visit { Caption = "TestVisit", Patient = new Patient { PatientNumber = 123 } } }; var formData = new InventoryFormData { Id = 12, Form = form, ReceiptDate = new Question() { Id = 101, Value = new DateTime(2011, 10, 11, 12, 13, 14).ToString(CultureInfo.InvariantCulture) }, ShipDate = new Question() { Id = 102, Value = new DateTime(2012, 1, 2, 3, 4, 5).ToString(CultureInfo.InvariantCulture) }, BatchNumber = new Question() { Id = 103, Value = "170" }, QuantityShipped = new Question() { Id = 104, Value = "50" } }; var incomingModel = new InventoryFormViewModel { Id = 12, FormId = 13, ReceiptDate = new DateTime(2012, 10, 11, 15, 16, 17), ShipDate = new DateTime(2011, 4, 5, 6, 7, 8), BatchNumber = 171, QuantityShipped = 51 }; fRep.Setup(r => r.GetByKey(incomingModel.FormId)).Returns(form); //here we return "formdata before editing" - this data should not be overwritten from model as no any data change note provided ifdRep.Setup(r => r.GetByKey(incomingModel.Id)).Returns(formData); //Act var result = formController.EditInventoryForm(incomingModel); //Assert ifdRep.Verify(r => r.GetByKey(incomingModel.Id), Times.Once()); ifdRep.Verify(r => r.Edit(It.IsAny<InventoryFormData>()), Times.Never()); ifdRep.Verify(r => r.Save(), Times.Never()); fRep.Verify(r => r.GetByKey(incomingModel.FormId), Times.Once()); fRep.Verify(r => r.Edit(It.IsAny<Form>()), Times.Never()); fRep.Verify(r => r.Save(), Times.Never()); Assert.That(result, Is.Not.Null); Assert.That(result is ViewResultBase); var viewResultBase = result as ViewResultBase; Assert.That(viewResultBase.Model, Is.Not.Null); InventoryFormViewModel model = viewResultBase.Model as InventoryFormViewModel; Assert.That(model, Is.Not.Null); Assert.That(model.DataChangeReasonRequired); Assert.That(model.ChangeInfos, Is.Not.Null); Assert.That(model.ChangeInfos.Count, Is.EqualTo(4)); AssertChangeInfo(formData.ReceiptDate, DateTime.Parse(formData.ReceiptDate.Value).ToShortDateString(), incomingModel.ReceiptDate.Value.ToShortDateString(), model); AssertChangeInfo(formData.ShipDate, DateTime.Parse(formData.ShipDate.Value).ToShortDateString(), incomingModel.ShipDate.Value.ToShortDateString(), model); AssertChangeInfo(formData.BatchNumber, "170", "171", model); AssertChangeInfo(formData.QuantityShipped, "50", "51", model); }
public void TestSetup() { inventoryData = new InventoryFormData { Id = 12, Form = new Form { Id = 17, Caption = "TestForm", Visit = new Visit {Caption = "TstVisit", Patient = new Patient {PatientNumber = 978}} }, BatchNumber = new Question {Value = "15"}, QuantityShipped = new Question {Value = "16"}, ReceiptDate = new Question {Value = DateTime.Today.ToString(CultureInfo.InvariantCulture)}, ShipDate = new Question {Value = DateTime.Today.AddDays(-1).ToString(CultureInfo.InvariantCulture)}, MedicationUsage = new List<RepeatableInventoryData> { new RepeatableInventoryData { Id = 34, DateUsed = new Question { Value = DateTime.Today. AddDays(-2).ToString (CultureInfo. InvariantCulture) }, QuantityUsed = new Question {Value = "17"} }, new RepeatableInventoryData { Id = 35, DateUsed = new Question { Value = DateTime.Today. AddDays(-3).ToString (CultureInfo. InvariantCulture) }, QuantityUsed = new Question {Value = "18"} } } }; repeatableInventoryViewModel = new List<RepeatableInventoryDataViewModel> { new RepeatableInventoryDataViewModel { Id = 134, InnerId = 34, DateUsed = DateTime.Today.AddDays(-2), QuantityUsed = 17 }, new RepeatableInventoryDataViewModel { Id = 135, InnerId = 35, DateUsed =DateTime.Today.AddDays(-3), QuantityUsed = 18 } }; newRepeatableInventoryViewModel = new RepeatableInventoryDataViewModel { Id = 0, InnerId = 0, DateUsed = DateTime.Today.AddDays(8), QuantityUsed = 27 }; ifdRep = new Mock<IInventoryFormDataRepository>(); formController = new FormController(null, null, null, null, null, ifdRep.Object, null, null, null); session = new Mock<HttpSessionStateBase>(); }
private InventoryFormData AddInventoryFormData(Form form) { var formData = new InventoryFormData() { Form = form, ShipDate = new Question { Caption = "Ship Date", DataType = QuestionDataType.Date, Form = form }, BatchNumber = new Question { Caption = "Batch Number", DataType = QuestionDataType.Integer, Form = form }, QuantityShipped = new Question { Caption = "Quantity Shipped", DataType = QuestionDataType.Number, Form = form }, ReceiptDate = new Question { Caption = "Receipt Date", DataType = QuestionDataType.Date, Form = form }, MedicationUsage = new List<RepeatableInventoryData>() }; InventoryFormDataRepository.Add(formData); QuestionRepository.Add(formData.ShipDate); QuestionRepository.Add(formData.BatchNumber); QuestionRepository.Add(formData.QuantityShipped); QuestionRepository.Add(formData.ReceiptDate); return formData; }