Exemple #1
0
        public Task PutTransaction(string transactionId, PutTransactionDto putTransactionDto)
        {
            var transaction = _mapper.Map <Transaction>(putTransactionDto);

            transaction.TransactionId = transactionId;
            transaction.UserId        = _userContext.UserId;
            return(_repository.PutTransaction(transaction));
        }
Exemple #2
0
        public async Task <IActionResult> Put(string transactionId, PutTransactionDto putTransactionDto)
        {
            await _transactionHelperService.PutTransaction(transactionId, putTransactionDto);

            return(Ok());
        }
        public async Task GivenValidPutTransactionDto_WhenPutTransactionsIsCalled_ThenCorrectTransactionsArePersisted()
        {
            var expectedTransactionId = Guid.NewGuid().ToString();

            var transaction1 = new Transaction
            {
                UserId               = UserId,
                TransactionId        = expectedTransactionId,
                TransactionTimestamp = DateTime.Now.ToString("o"),
                TransactionType      = "expense",
                Amount               = 123.45M,
                Category             = "Groceries",
                Subcategory          = "Meat",
                Note = "this is a note123"
            };
            var transaction2 = new Transaction
            {
                UserId               = UserId,
                TransactionId        = "fa00567c-468e-4ccf-af4c-fca1c731915b",
                TransactionTimestamp = DateTime.Now.ToString("o"),
                TransactionType      = "expense",
                Amount               = 123.45M,
                Category             = "Groceries",
                Subcategory          = "Meat"
            };

            var transactionList = new List <Transaction>
            {
                transaction1,
                transaction2
            };
            await DynamoDbHelper.WriteTransactionsIntoTable(transactionList);

            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";
            const string expectedPayerPayeeId    = "id123";
            const string expectedPayerPayeeName  = "name123";
            const string expectedNote            = "This is a new note";
            var          inputDto = new PutTransactionDto
            {
                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.PutAsync($"/api/transactions/{expectedTransactionId}", httpContent);

            response.EnsureSuccessStatusCode();

            var returnedTransaction = await DynamoDbHelper.QueryTable <Transaction>(UserId, expectedTransactionId);

            var expectedTransaction = new Transaction
            {
                UserId               = UserId,
                TransactionId        = expectedTransactionId,
                Amount               = expectedAmount,
                Category             = expectedCategory,
                Subcategory          = expectedSubcategory,
                TransactionTimestamp = expectedTransactionTimestamp,
                TransactionType      = expectedTransactionType,
                PayerPayeeId         = expectedPayerPayeeId,
                PayerPayeeName       = expectedPayerPayeeName,
                Note = expectedNote
            };

            Assert.Equal(expectedTransaction, returnedTransaction);
        }