public Task StoreTransaction(StoreTransactionDto transactionDto) { var transaction = _mapper.Map <Transaction>(transactionDto); transaction.TransactionId = Guid.NewGuid().ToString(); transaction.UserId = _userContext.UserId; return(_repository.StoreTransaction(transaction)); }
GivenValidStoreTransactionDto_ThenCorrectTransactionShouldBeStored() { const string expectedUserId = "id123"; _mockCurrentUserContext.SetupGet(context => context.UserId) .Returns(expectedUserId); var inputDto = new StoreTransactionDto { Amount = (decimal)1.0, TransactionTimestamp = "2021-04-13T13:15:23.7002027Z", Category = "category-1", Subcategory = "subcategory-1", TransactionType = "transaction-type-1", PayerPayeeId = Guid.NewGuid().ToString(), PayerPayeeName = "name1", Note = "this is a note123" }; _mockMapper.Setup(mapper => mapper.Map <Transaction>(It.IsAny <StoreTransactionDto>())) .Returns(new Transaction { Amount = inputDto.Amount, TransactionTimestamp = inputDto.TransactionTimestamp, Category = inputDto.Category, Subcategory = inputDto.Subcategory, TransactionType = inputDto.TransactionType, PayerPayeeId = inputDto.PayerPayeeId, PayerPayeeName = inputDto.PayerPayeeName, Note = inputDto.Note }); var service = new TransactionHelperService(_mockCurrentUserContext.Object, _mockTransactionRepository.Object, _mockMapper.Object); await service.StoreTransaction(inputDto); Guid guid; _mockTransactionRepository.Verify(repository => repository.StoreTransaction(It.Is <Transaction>(transaction => transaction.UserId == expectedUserId && transaction.TransactionTimestamp == inputDto.TransactionTimestamp && Guid.TryParse(transaction.TransactionId, out guid) && transaction.Amount == inputDto.Amount && transaction.Category == inputDto.Category && transaction.Subcategory == inputDto.Subcategory && transaction.TransactionType == inputDto.TransactionType && transaction.PayerPayeeId == inputDto.PayerPayeeId && transaction.PayerPayeeName == inputDto.PayerPayeeName && transaction.Note == inputDto.Note)) ); }
GivenValidTransactionRequest_WhenPostTransactionsIsCalled_ThenCorrectTransactionsArePersisted() { const decimal expectedAmount = 123M; const string expectedCategory = "Food"; const string expectedSubcategory = "Dinner"; var expectedTransactionTimestamp = new DateTimeOffset(new DateTime(2021, 4, 2)).ToString("yyyy-MM-ddThh:mm:ss.FFFK"); const string expectedTransactionType = "expense"; var expectedPayerPayeeId = Guid.NewGuid().ToString(); const string expectedPayerPayeeName = "name1"; const string expectedNote = "this is a note123"; var inputDto = new StoreTransactionDto { Amount = expectedAmount, Category = expectedCategory, Subcategory = expectedSubcategory, TransactionTimestamp = expectedTransactionTimestamp, TransactionType = expectedTransactionType, PayerPayeeId = expectedPayerPayeeId, PayerPayeeName = expectedPayerPayeeName, Note = expectedNote }; string inputDtoString = JsonSerializer.Serialize(inputDto); StringContent httpContent = new StringContent(inputDtoString, Encoding.UTF8, "application/json"); var response = await HttpClient.PostAsync($"/api/transactions", httpContent); response.EnsureSuccessStatusCode(); var returnedTransactions = await DynamoDbHelper.ScanTable <Transaction>(); Assert.Single(returnedTransactions); Assert.Equal(expectedAmount, returnedTransactions[0].Amount); Assert.Equal(expectedCategory, returnedTransactions[0].Category); Assert.Equal(expectedSubcategory, returnedTransactions[0].Subcategory); Assert.Equal(expectedTransactionTimestamp, returnedTransactions[0].TransactionTimestamp); Assert.Equal(expectedTransactionType, returnedTransactions[0].TransactionType); Assert.Equal(expectedPayerPayeeId, returnedTransactions[0].PayerPayeeId); Assert.Equal(expectedPayerPayeeName, returnedTransactions[0].PayerPayeeName); Assert.Equal(expectedNote, returnedTransactions[0].Note); }
public async Task GivenInvalidRequest_WhenPostTransactionsIsCalled_ThenValidationErrorShouldBeReturned() { var inputDto = new StoreTransactionDto { Category = "Food", Subcategory = "Dinner", TransactionTimestamp = "2017-06-21T14:57:17", TransactionType = "expense", PayerPayeeId = Guid.NewGuid().ToString(), PayerPayeeName = "name1", Note = "note123" }; string inputDtoString = JsonSerializer.Serialize(inputDto); StringContent httpContent = new StringContent(inputDtoString, Encoding.UTF8, "application/json"); var response = await HttpClient.PostAsync($"/api/transactions", httpContent); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task <IActionResult> Post(StoreTransactionDto storeTransactionDto) { await _transactionHelperService.StoreTransaction(storeTransactionDto); return(Ok()); }