public void FileDetail_OnlyValidDataIsSentToTheDatabase() { var subMessage = "Something is wrong"; var name = "a"; var fileProcessorMock = AtpMockFactory.FileProcessorMock; fileProcessorMock.Setup(x => x.ReadTransactionData(name)).Returns(_data); var validatorMock = AtpMockFactory.TransactionValidatorMock; var validItem = _data[0]; var invalidItem = _data[1]; validatorMock.Setup(x => x.Validate(invalidItem)).Returns(subMessage); validatorMock.Setup(x => x.Validate(validItem)).Returns(null as string); var itemsSentToDataBase = new List<AccTransaction>(); var dataServiceMock = AtpMockFactory.DataServiceMock; dataServiceMock.Setup(x => x.AddItem(It.IsAny<AccTransaction>())) .Callback<AccTransaction>(x => itemsSentToDataBase.Add(x)); var fileDetail = new FileDetailViewModel( name, dataServiceMock.Object, AtpMockFactory.ViewThreadExecutorMock.Object, fileProcessorMock.Object, validatorMock.Object); fileDetail.UploadCommand.Execute(); var isCompleted = _poller.Poll(() => fileDetail.Status == Status.Uploaded); Assert.IsTrue(isCompleted); Assert.AreEqual(1, itemsSentToDataBase.Count); Assert.AreEqual(validItem, itemsSentToDataBase[0]); }
private void AssertErrorMessagesAreProperlyPopulatedFor(int errorIndex, params AccTransaction[] data) { var subMessage = "Something is wrong"; var errorMessage = string.Format("Line:{0} {1}", errorIndex + 1, subMessage); var name = "a"; var fileProcessorMock = AtpMockFactory.FileProcessorMock; fileProcessorMock.Setup(x => x.ReadTransactionData(name)).Returns(data); var validatorMock = AtpMockFactory.TransactionValidatorMock; for(int i = 0; i < data.Length; i++) { if(errorIndex == i) validatorMock.Setup(x => x.Validate(data[errorIndex])).Returns(subMessage); else validatorMock.Setup(x => x.Validate(data[i])).Returns(null as string); } var fileDetail = new FileDetailViewModel( name, AtpMockFactory.DataServiceMock.Object, AtpMockFactory.ViewThreadExecutorMock.Object, fileProcessorMock.Object, validatorMock.Object); fileDetail.UploadCommand.Execute(); var isCompleted = _poller.Poll(() => fileDetail.Status == Status.Uploaded); Assert.IsTrue(isCompleted); var expectedErrorCount = errorIndex + 1; if(expectedErrorCount > 0) { Assert.AreEqual(1, fileDetail.ErrorList.Count); Assert.AreEqual(errorMessage, fileDetail.ErrorList[0]); } else { Assert.AreEqual(0, fileDetail.ErrorList.Count); } }