polishing the workspace migration
This commit is contained in:
@@ -17,6 +17,8 @@ import java.math.BigDecimal;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import static java.util.UUID.randomUUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@DataJpaTest
|
||||
@@ -29,13 +31,14 @@ class TransactionRepositoryTest {
|
||||
@Test
|
||||
@DisplayName("Should save and find transaction by ID")
|
||||
void shouldSaveAndFindById() {
|
||||
Transaction transaction = createTestTransaction();
|
||||
UUID wsId = randomUUID();
|
||||
Transaction transaction = createTestTransaction(wsId);
|
||||
Transaction saved = transactionRepository.save(transaction);
|
||||
|
||||
Optional<Transaction> found = transactionRepository.findById(saved.getId());
|
||||
|
||||
assertTrue(found.isPresent());
|
||||
assertEquals("user-1", found.get().getUserId());
|
||||
assertEquals(wsId, found.get().getWorkspaceId());
|
||||
assertEquals(new BigDecimal("100.00"), found.get().getAmount());
|
||||
}
|
||||
|
||||
@@ -48,19 +51,21 @@ class TransactionRepositoryTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Should find transactions by userId")
|
||||
void shouldFindByUserId() {
|
||||
@DisplayName("Should find transactions by workspaceId")
|
||||
void shouldFindByWorkspaceId() {
|
||||
UUID ws1 = randomUUID();
|
||||
UUID ws2 = randomUUID();
|
||||
Transaction tx1 = createTestTransaction();
|
||||
tx1.setUserId("user-1");
|
||||
tx1.setWorkspaceId(ws1);
|
||||
Transaction tx2 = createTestTransaction();
|
||||
tx2.setUserId("user-2");
|
||||
tx2.setWorkspaceId(ws2);
|
||||
transactionRepository.save(tx1);
|
||||
transactionRepository.save(tx2);
|
||||
|
||||
var results = transactionRepository.findAllByUserId("user-1");
|
||||
var results = transactionRepository.findAllByWorkspaceId(ws1);
|
||||
|
||||
assertEquals(1, results.size());
|
||||
assertEquals("user-1", results.get(0).getUserId());
|
||||
assertEquals(ws1, results.get(0).getWorkspaceId());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -68,7 +73,7 @@ class TransactionRepositoryTest {
|
||||
void shouldReturnPaginatedResults() {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
Transaction tx = createTestTransaction();
|
||||
tx.setUserId("user-" + i);
|
||||
tx.setWorkspaceId(randomUUID());
|
||||
transactionRepository.save(tx);
|
||||
}
|
||||
|
||||
@@ -97,7 +102,7 @@ class TransactionRepositoryTest {
|
||||
@DisplayName("Should persist all transaction fields correctly")
|
||||
void shouldPersistAllFields() {
|
||||
Transaction transaction = Transaction.builder()
|
||||
.userId("user-1")
|
||||
.workspaceId(randomUUID())
|
||||
.trace("TRACE-123")
|
||||
.region("ZW")
|
||||
.amount(new BigDecimal("150.00"))
|
||||
@@ -134,7 +139,7 @@ class TransactionRepositoryTest {
|
||||
|
||||
Optional<Transaction> found = transactionRepository.findById(saved.getId());
|
||||
assertTrue(found.isPresent());
|
||||
assertEquals("user-1", found.get().getUserId());
|
||||
assertNotNull(found.get().getWorkspaceId());
|
||||
assertEquals(new BigDecimal("150.00"), found.get().getAmount());
|
||||
assertEquals(new BigDecimal("5.00"), found.get().getCharge());
|
||||
assertEquals(new BigDecimal("158.50"), found.get().getTotalAmount());
|
||||
@@ -146,8 +151,12 @@ class TransactionRepositoryTest {
|
||||
}
|
||||
|
||||
private Transaction createTestTransaction() {
|
||||
return createTestTransaction(randomUUID());
|
||||
}
|
||||
|
||||
private Transaction createTestTransaction(UUID workspaceId) {
|
||||
return Transaction.builder()
|
||||
.userId("user-1")
|
||||
.workspaceId(workspaceId)
|
||||
.amount(new BigDecimal("100.00"))
|
||||
.debitCurrency(CurrencyType.USD)
|
||||
.build();
|
||||
|
||||
@@ -26,6 +26,8 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import static java.util.UUID.randomUUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
@@ -55,7 +57,7 @@ class TransactionServiceTest {
|
||||
void setUp() {
|
||||
transaction = new Transaction();
|
||||
transaction.setId(txId);
|
||||
transaction.setUserId("user-1");
|
||||
transaction.setWorkspaceId(randomUUID());
|
||||
transaction.setAmount(new BigDecimal("100.00"));
|
||||
transaction.setDebitCurrency(CurrencyType.USD);
|
||||
transaction.setCreditCurrency(CurrencyType.ZWL);
|
||||
@@ -142,15 +144,17 @@ class TransactionServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Should reassign transactions from old user to new user")
|
||||
@DisplayName("Should reassign transactions from old workspace to new workspace")
|
||||
void shouldReassignTransactions() {
|
||||
UUID oldWs = randomUUID();
|
||||
UUID newWs = randomUUID();
|
||||
List<Transaction> transactions = List.of(transaction);
|
||||
when(transactionRepository.findAllByUserId("old-user")).thenReturn(transactions);
|
||||
when(transactionRepository.findAllByWorkspaceId(oldWs)).thenReturn(transactions);
|
||||
when(transactionRepository.save(any(Transaction.class))).thenReturn(transaction);
|
||||
|
||||
transactionService.reassignTransactions("old-user", "new-user");
|
||||
transactionService.reassignTransactions(oldWs, newWs);
|
||||
|
||||
assertEquals("new-user", transaction.getUserId());
|
||||
assertEquals(newWs, transaction.getWorkspaceId());
|
||||
verify(transactionRepository).save(transaction);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ import zw.qantra.tm.domain.models.Transaction;
|
||||
import zw.qantra.tm.domain.services.RecipientService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static java.util.UUID.randomUUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@@ -34,7 +37,7 @@ class RecipientsUpdateHandlerTest {
|
||||
transaction = new Transaction();
|
||||
transaction.setStatus(Status.SUCCESS);
|
||||
transaction.setCreditAccount("ACC-123");
|
||||
transaction.setUserId("user-1");
|
||||
transaction.setWorkspaceId(randomUUID());
|
||||
transaction.setProviderLabel("econet");
|
||||
transaction.setCreditName("John Doe");
|
||||
transaction.setCreditEmail("john@example.com");
|
||||
@@ -47,10 +50,10 @@ class RecipientsUpdateHandlerTest {
|
||||
void shouldUpdateExistingRecipient() {
|
||||
Recipient existingRecipient = new Recipient();
|
||||
existingRecipient.setAccount("ACC-123");
|
||||
existingRecipient.setUserId("user-1");
|
||||
existingRecipient.setWorkspaceId(randomUUID());
|
||||
existingRecipient.setName("Old Name");
|
||||
|
||||
when(recipientService.getRecipient("ACC-123", "user-1"))
|
||||
when(recipientService.getRecipient("ACC-123", transaction.getWorkspaceId()))
|
||||
.thenReturn(List.of(existingRecipient));
|
||||
when(recipientService.save(any(Recipient.class))).thenReturn(existingRecipient);
|
||||
|
||||
@@ -68,7 +71,7 @@ class RecipientsUpdateHandlerTest {
|
||||
@Test
|
||||
@DisplayName("Should create new recipient when not found")
|
||||
void shouldCreateNewRecipient() {
|
||||
when(recipientService.getRecipient("ACC-123", "user-1"))
|
||||
when(recipientService.getRecipient("ACC-123", transaction.getWorkspaceId()))
|
||||
.thenReturn(List.of());
|
||||
when(recipientService.save(any(Recipient.class))).thenAnswer(i -> i.getArgument(0));
|
||||
|
||||
@@ -94,7 +97,7 @@ class RecipientsUpdateHandlerTest {
|
||||
void shouldUseBillNameForInitials() {
|
||||
transaction.setCreditName(null);
|
||||
|
||||
when(recipientService.getRecipient("ACC-123", "user-1"))
|
||||
when(recipientService.getRecipient("ACC-123", transaction.getWorkspaceId()))
|
||||
.thenReturn(List.of());
|
||||
when(recipientService.save(any(Recipient.class))).thenAnswer(i -> i.getArgument(0));
|
||||
|
||||
@@ -106,7 +109,7 @@ class RecipientsUpdateHandlerTest {
|
||||
@Test
|
||||
@DisplayName("Should handle exception gracefully without throwing")
|
||||
void shouldHandleExceptionGracefully() {
|
||||
when(recipientService.getRecipient("ACC-123", "user-1"))
|
||||
when(recipientService.getRecipient("ACC-123", transaction.getWorkspaceId()))
|
||||
.thenThrow(new RuntimeException("DB error"));
|
||||
|
||||
assertDoesNotThrow(() -> handler.process(transaction));
|
||||
@@ -121,9 +124,9 @@ class RecipientsUpdateHandlerTest {
|
||||
|
||||
Recipient existingRecipient = new Recipient();
|
||||
existingRecipient.setAccount("ACC-123");
|
||||
existingRecipient.setUserId("user-1");
|
||||
existingRecipient.setWorkspaceId(randomUUID());
|
||||
|
||||
when(recipientService.getRecipient("ACC-123", "user-1"))
|
||||
when(recipientService.getRecipient("ACC-123", transaction.getWorkspaceId()))
|
||||
.thenReturn(List.of(existingRecipient));
|
||||
when(recipientService.save(any(Recipient.class))).thenReturn(existingRecipient);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user