diff --git a/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/FrameworkTest.java b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/FrameworkTest.java new file mode 100644 index 0000000..1f3fa82 --- /dev/null +++ b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/FrameworkTest.java @@ -0,0 +1,155 @@ +package com.klaro.acquirecore.framework; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +/** + * Consolidated unit tests for TxCore migration framework. + */ +class FrameworkTest { + + // TxContext tests + @Test + void testTxContextDefaultConstructor() { + TxContext ctx = new TxContext(); + assertNotNull(ctx.getTransactionId()); + assertEquals(TxContext.TransactionStatus.INITIALIZED, ctx.getStatus()); + } + + @Test + void testTxContextWithServiceName() { + TxContext ctx = new TxContext("testService"); + assertEquals("testService", ctx.getServiceName()); + } + + // TxResult tests + @Test + void testTxResultSuccess() { + TxResult result = TxResult.success("data"); + assertTrue(result.isSuccess()); + assertEquals("data", result.getData()); + } + + @Test + void testTxResultFailure() { + TxResult result = TxResult.failure("ERR", "message"); + assertFalse(result.isSuccess()); + assertEquals("ERR", result.getErrorCode()); + } + + // TxServiceRegistry tests + @Test + void testServiceRegistryRegisterAndGet() { + TxServiceRegistry registry = new TxServiceRegistry(); + TxService service = new DefaultTxService("svc"); + registry.registerService("svc", service); + assertTrue(registry.hasService("svc")); + assertEquals(service, registry.getService("svc")); + } + + @Test + void testServiceRegistryUnregister() { + TxServiceRegistry registry = new TxServiceRegistry(); + registry.registerService("svc", new DefaultTxService("svc")); + registry.unregisterService("svc"); + assertFalse(registry.hasService("svc")); + } + + @Test + void testServiceRegistryExecuteInTransaction() { + TxServiceRegistry registry = new TxServiceRegistry(); + registry.registerService("svc", new DefaultTxService("svc")); + TxResult result = registry.executeInTransaction("svc", ctx -> "ok"); + assertTrue(result.isSuccess()); + assertEquals("ok", result.getData()); + } + + @Test + void testServiceRegistryUnknownService() { + TxServiceRegistry registry = new TxServiceRegistry(); + TxResult result = registry.executeInTransaction("unknown", ctx -> "ok"); + assertFalse(result.isSuccess()); + assertEquals("SERVICE_NOT_FOUND", result.getErrorCode()); + } + + // TxTemplate tests + @Test + void testTxTemplateTxBegin() { + TxTemplate template = new TxTemplate(); + TxContext ctx = template.txBegin("svc"); + assertEquals("svc", ctx.getServiceName()); + } + + @Test + void testTxTemplateTxCommit() { + TxTemplate template = new TxTemplate(); + TxContext ctx = template.txBegin(); + TxResult result = template.txCommit(ctx); + assertTrue(result.isSuccess()); + assertEquals(TxContext.TransactionStatus.COMMITTED, ctx.getStatus()); + } + + @Test + void testTxTemplateTxCommitNullContext() { + TxTemplate template = new TxTemplate(); + TxResult result = template.txCommit(null); + assertFalse(result.isSuccess()); + assertEquals("INVALID_CONTEXT", result.getErrorCode()); + } + + @Test + void testTxTemplateTxRollback() { + TxTemplate template = new TxTemplate(); + TxContext ctx = template.txBegin(); + TxResult result = template.txRollback(ctx, "reason"); + assertTrue(result.isSuccess()); + assertEquals(TxContext.TransactionStatus.ROLLED_BACK, ctx.getStatus()); + assertEquals("reason", ctx.getErrorMessage()); + } + + // DefaultTxService tests + @Test + void testDefaultTxServiceName() { + DefaultTxService svc = new DefaultTxService("myService"); + assertEquals("myService", svc.getServiceName()); + } + + @Test + void testDefaultTxServiceBeginTransaction() { + DefaultTxService svc = new DefaultTxService("svc"); + TxContext ctx = svc.beginTransaction(); + assertEquals("svc", ctx.getServiceName()); + } + + @Test + void testDefaultTxServiceCommit() { + DefaultTxService svc = new DefaultTxService("svc"); + TxContext ctx = svc.beginTransaction(); + TxResult result = svc.commit(ctx); + assertTrue(result.isSuccess()); + } + + @Test + void testDefaultTxServiceRollback() { + DefaultTxService svc = new DefaultTxService("svc"); + TxContext ctx = svc.beginTransaction(); + TxResult result = svc.rollback(ctx, "test"); + assertTrue(result.isSuccess()); + } + + // TxExecutionException tests + @Test + void testTxExecutionExceptionMessage() { + TxExecutionException ex = new TxExecutionException("msg"); + assertEquals("msg", ex.getMessage()); + assertNull(ex.getContext()); + } + + @Test + void testTxExecutionExceptionWithContext() { + TxContext ctx = new TxContext("svc"); + TxExecutionException ex = new TxExecutionException("msg", ctx); + assertEquals("msg", ex.getMessage()); + assertEquals(ctx, ex.getContext()); + } +}