public async Task GetLedgerByAccountAsync_ExceptionThrownAccessingDatabase()
        {
            // Arrange
            _mockDatabaseFactory.Setup(f => f.CreateConnection()).Returns(_mockDatabase.Object);
            _mockDatabase.Setup(d => d.FetchAsync <Ledger>(It.IsAny <string>(), It.IsAny <object>()))
            .ThrowsAsync(new Exception());

            var ledgerRepository = new LedgerRepository(_mockDatabaseFactory.Object);

            // Act & Assert
            await Assert.ThrowsAsync <Exception>(() => ledgerRepository.GetLedgerByAccountAsync(0));

            _mockDatabase.Verify(d => d.FetchAsync <Ledger>(It.IsAny <string>(), It.IsAny <object>()), Times.Once);
        }
        public async Task GetLedgerByAccountAsync_ListOfLedgerEntriesRetrievedSuccessfully()
        {
            // Arrange
            var expectedLedgerEntries = _fixture.CreateMany <Ledger>().ToList();

            _mockDatabaseFactory.Setup(f => f.CreateConnection()).Returns(_mockDatabase.Object);
            _mockDatabase.Setup(d => d.FetchAsync <Ledger>(It.IsAny <string>(), It.IsAny <object>()))
            .ReturnsAsync(expectedLedgerEntries);

            var ledgerRepository = new LedgerRepository(_mockDatabaseFactory.Object);

            // Act
            var result = await ledgerRepository.GetLedgerByAccountAsync(0);

            // Assert
            Assert.Equal(expectedLedgerEntries, result);
            _mockDatabase.Verify(d => d.FetchAsync <Ledger>(It.IsAny <string>(), It.IsAny <object>()), Times.Once);
        }