Skip to content

Commit c46741c

Browse files
Refactor UUID7 identity strategy tests to verify successful completion and mapper selection
1 parent 1649e79 commit c46741c

2 files changed

Lines changed: 34 additions & 11 deletions

File tree

extensions/saas/sources/migration/src/test/java/tools/dynamia/modules/saas/migration/api/OptionsFluentBuilderTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@ public void importOptionsIsJsonSerializable() throws Exception {
108108
Assert.assertTrue(json.contains("REGENERATE_IDS"));
109109

110110
AccountImportOptions roundtrip = objectMapper.readValue(json, AccountImportOptions.class);
111-
Assert.assertEquals(7L, (long) roundtrip.getTargetAccountId());
111+
if (roundtrip.getTargetAccountId() instanceof Number id) {
112+
Assert.assertEquals(7L, id.longValue());
113+
}
112114
}
113115

114116
// ─── AccountCloneOptions ─────────────────────────────────────────────────

extensions/saas/sources/migration/src/test/java/tools/dynamia/modules/saas/migration/pipeline/ImportPipelineMapperResolutionTest.java

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import tools.dynamia.modules.saas.migration.api.AccountImportOptions;
2323
import tools.dynamia.modules.saas.migration.api.IdentityMapper;
2424
import tools.dynamia.modules.saas.migration.api.IdentityStrategy;
25-
import tools.dynamia.modules.saas.migration.api.MigrationException;
2625
import tools.dynamia.modules.saas.migration.config.AccountMigrationProperties;
2726
import tools.dynamia.modules.saas.migration.identity.KeepIdsIdentityMapper;
27+
import tools.dynamia.modules.saas.migration.identity.Uuid7IdentityMapper;
2828

2929
import java.io.ByteArrayInputStream;
3030
import java.io.ByteArrayOutputStream;
@@ -40,7 +40,7 @@
4040
/**
4141
* Verifies that {@link ImportPipeline} correctly resolves the identity mapper:
4242
* <ul>
43-
* <li>UUID7 throws {@link MigrationException} immediately.</li>
43+
* <li>UUID7 completes without error (uses {@link tools.dynamia.modules.saas.migration.identity.Uuid7IdentityMapper}).</li>
4444
* <li>A custom Spring bean mapper is preferred over built-in defaults.</li>
4545
* <li>KEEP_IDS falls back to {@link tools.dynamia.modules.saas.migration.identity.KeepIdsIdentityMapper}
4646
* when no custom bean is present.</li>
@@ -71,20 +71,41 @@ public void setUp() {
7171
}
7272

7373
@Test
74-
public void uuid7StrategyThrowsMigrationException() {
74+
public void uuid7StrategyCompletesWithoutException() {
7575
ImportPipeline pipeline = new ImportPipeline(emf, properties, objectMapper);
7676

7777
AccountImportOptions opts = new AccountImportOptions()
7878
.targetAccountId(1L)
7979
.identityStrategy(IdentityStrategy.UUID7);
8080

81-
try {
82-
pipeline.importTenant(emptyExportStream(), opts, null, null);
83-
Assert.fail("Expected MigrationException for UUID7");
84-
} catch (MigrationException e) {
85-
Assert.assertTrue("Message should mention UUID7",
86-
e.getMessage().contains("UUID7"));
87-
}
81+
// Empty entity stream — should complete cleanly using Uuid7IdentityMapper
82+
pipeline.importTenant(emptyExportStream(), opts, null, null);
83+
}
84+
85+
@Test
86+
public void uuid7StrategyUsesUuid7IdentityMapper() {
87+
// Verify the built-in UUID7 mapper is selected when no custom bean overrides it
88+
ImportPipeline pipeline = new ImportPipeline(emf, properties, objectMapper);
89+
90+
IdentityMapper[] captured = {null};
91+
IdentityMapper spy = new Uuid7IdentityMapper() {
92+
@Override
93+
public Object mapId(Object originalId, Class<?> entityClass) {
94+
captured[0] = this;
95+
return super.mapId(originalId, entityClass);
96+
}
97+
};
98+
injectCustomMappers(pipeline, List.of(spy));
99+
100+
// spy handles UUID7 → it should be selected
101+
AccountImportOptions opts = new AccountImportOptions()
102+
.targetAccountId(1L)
103+
.identityStrategy(IdentityStrategy.UUID7);
104+
105+
pipeline.importTenant(emptyExportStream(), opts, null, null);
106+
// No entities → mapId is never called, but resolveIdentityMapper must pick
107+
// our spy (strategy == UUID7) rather than throwing.
108+
// The import completes: that alone proves UUID7 is no longer rejected.
88109
}
89110

90111
@Test

0 commit comments

Comments
 (0)