diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommand.java index fb5e3534f0e..69e19378b1a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommand.java @@ -49,13 +49,16 @@ public Template execute(CommandContext ctxt) throws CommandException { } Template createdTemplate = ctxt.templates().save(template); - - if (initialize && template.isIsDefaultForDataverse()) { + + createdTemplate.setIsDefaultForDataverse(template.isIsDefaultForDataverse()); + if (initialize && createdTemplate.isIsDefaultForDataverse()) { dataverse.setDefaultTemplate(createdTemplate); ctxt.em().merge(dataverse); - } + } + + ctxt.em().flush(); + return createdTemplate; - return template; } private static void updateTermsOfUseAndAccess(CommandContext ctxt, Template template) { diff --git a/src/test/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommandTest.java b/src/test/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommandTest.java index bf3daa6c593..71bcbad98b8 100644 --- a/src/test/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommandTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/engine/command/impl/CreateTemplateCommandTest.java @@ -18,6 +18,7 @@ import org.mockito.Mockito; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; +import jakarta.persistence.EntityManager; import java.util.Collections; import java.util.List; @@ -42,6 +43,8 @@ public class CreateTemplateCommandTest { private LicenseServiceBean licenseServiceBeanMock; @Mock private DataverseFieldTypeInputLevelServiceBean fieldTypeInputLevelServiceBeanMock; + @Mock + private EntityManager em; @Spy private Template templateSpy; @@ -53,6 +56,7 @@ public class CreateTemplateCommandTest { public void setUp() { dataverseRequestStub = Mockito.mock(DataverseRequest.class); when(contextMock.templates()).thenReturn(templateServiceBeanStub); + when(contextMock.em()).thenReturn(em); } @Test @@ -60,8 +64,10 @@ public void execute_shouldSaveTemplate_noInitialization() throws CommandExceptio // Create the command with initialization set to false CreateTemplateCommand sut = new CreateTemplateCommand(templateSpy, dataverseRequestStub, dataverseMock, false); - + Template savedTemplate = mock(Template.class); + when(templateServiceBeanStub.save(templateSpy)).thenReturn(savedTemplate); // Act + sut.execute(contextMock); @@ -83,6 +89,9 @@ public void execute_shouldInitializeAndSaveTemplate_withInitialization() throws when(dataverseMock.getId()).thenReturn(42L); when(dataverseMock.isMetadataBlockRoot()).thenReturn(true); + + Template savedTemplate = mock(Template.class); + when(templateServiceBeanStub.save(templateSpy)).thenReturn(savedTemplate); // Mock system metadata blocks