Hello!
After the latest update to my project, I decided it was the perfect time to finally start writing tests for Finovara.
So far, I've written tests for the main methods.
On average, I run 2-3 tests per method, which seems like a good compromise. I cover both the happy path and a few edge cases and alternate flows—basically, I try to make sure everything works as expected, regardless of the situation.
Overall, I'm aiming for 70-80% code coverage, though this may change as I add more tests and improve what I already have.
Example of a simple test:
@Test
void shouldAddRevenueSuccessfully() {
RevenueDTO dto = new RevenueDTO(null, null, new BigDecimal("100"), RevenueCategory.SALARY, null, "test income");
String email = "test@test.com";
User user = new User();
when(timeConfig.clock()).thenReturn(Clock.systemDefaultZone());
when(userManagerService.getUserByEmailOrThrow(email)).thenReturn(user);
revenueService.addRevenue(dto, email);
verify(walletService).addBalanceToWallet(email, dto.amount());
verify(revenueActivityService).createRevenueActivity(eq(email), eq(RevenueActivityType.ADDED_REVENUE), any(Revenue.class));
verify(revenueRepository).save(any(Revenue.class));
verify(revenueScoringService).recalculateScore(email);
verify(autoPaymentsService).handleRevenuePiggyBankAutomation(email, dto.amount(), AutoPaymentsMode.APPLY);
}
Next, I plan to write expense tests. I'll see how it goes
Thanks for reading, and please visit my GitHub: Backend platform for a personal finance management application, built with Java 25 and Spring Boot 4 as a set of microservices. Finovara is a personal finance platform designed to help users take full control of their money. The backend exposes a secure REST API that powers tracking of income and expenses, budget management, savings goals, shared accounts and financial reporting. The platform is built as a set of independent services, each responsible for a separate area of the domain, so that individual parts of the system can be developed, deployed and scaled on their own. Security is a central concern: authentication is based on JWT, sessions are tracked per device, and user activity is recorded in an audit log.
M4rc1nek
/
finovara-backend
Backend service for a personal finance management application
Finovara
About the Project
Key Features
Accounts and Security
Top comments (0)