コード例 #1
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #5
0
            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));
            }
コード例 #6
0
            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);
            }
コード例 #7
0
            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>();
            }
コード例 #8
0
 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;
 }