diff --git a/ontrack-it-utils/src/main/java/net/nemerosa/ontrack/it/AbstractDSLTestSupport.kt b/ontrack-it-utils/src/main/java/net/nemerosa/ontrack/it/AbstractDSLTestSupport.kt index ef916452337..e8b662aa483 100644 --- a/ontrack-it-utils/src/main/java/net/nemerosa/ontrack/it/AbstractDSLTestSupport.kt +++ b/ontrack-it-utils/src/main/java/net/nemerosa/ontrack/it/AbstractDSLTestSupport.kt @@ -17,6 +17,7 @@ import net.nemerosa.ontrack.model.support.OntrackConfigProperties import net.nemerosa.ontrack.model.support.SettingsRepository import net.nemerosa.ontrack.test.TestUtils import net.nemerosa.ontrack.test.TestUtils.uid +import org.junit.jupiter.api.BeforeEach import org.springframework.beans.factory.annotation.Autowired import java.time.LocalDateTime import kotlin.reflect.KClass @@ -59,6 +60,15 @@ abstract class AbstractDSLTestSupport : AbstractServiceTestSupport() { protected final inline fun asUserWith(noinline code: () -> R): R = asUser().with(T::class.java).call(code) + /** + * Removing all settings before any test + */ + @BeforeEach + fun clearSettings() { + settingsRepository.clear() + cachedSettingsService.invalidateAll() + } + /** * Kotlin friendly */ diff --git a/ontrack-model/src/main/java/net/nemerosa/ontrack/model/settings/CachedSettingsService.java b/ontrack-model/src/main/java/net/nemerosa/ontrack/model/settings/CachedSettingsService.java index d4fada8da6d..c9c3f27ff84 100644 --- a/ontrack-model/src/main/java/net/nemerosa/ontrack/model/settings/CachedSettingsService.java +++ b/ontrack-model/src/main/java/net/nemerosa/ontrack/model/settings/CachedSettingsService.java @@ -5,4 +5,9 @@ public interface CachedSettingsService { T getCachedSettings(Class type); void invalidate(Class type); + + /** + * Invalidates all the settings caches + */ + void invalidateAll(); } diff --git a/ontrack-model/src/main/java/net/nemerosa/ontrack/model/support/SettingsRepository.java b/ontrack-model/src/main/java/net/nemerosa/ontrack/model/support/SettingsRepository.java index 384276f65f1..e02585d68e9 100644 --- a/ontrack-model/src/main/java/net/nemerosa/ontrack/model/support/SettingsRepository.java +++ b/ontrack-model/src/main/java/net/nemerosa/ontrack/model/support/SettingsRepository.java @@ -13,6 +13,11 @@ public interface SettingsRepository { */ void deleteAll(Class category); + /** + * Removing all settings + */ + void clear(); + boolean getBoolean(Class category, String name, boolean defaultValue); void setBoolean(Class category, String name, boolean value); diff --git a/ontrack-repository-impl/src/main/java/net/nemerosa/ontrack/repository/SettingsJdbcRepository.java b/ontrack-repository-impl/src/main/java/net/nemerosa/ontrack/repository/SettingsJdbcRepository.java index 04f2ca15998..0707eab0467 100644 --- a/ontrack-repository-impl/src/main/java/net/nemerosa/ontrack/repository/SettingsJdbcRepository.java +++ b/ontrack-repository-impl/src/main/java/net/nemerosa/ontrack/repository/SettingsJdbcRepository.java @@ -36,6 +36,11 @@ public void deleteAll(Class category) { ); } + @Override + public void clear() { + getJdbcTemplate().update("DELETE FROM SETTINGS"); + } + @Override public boolean getBoolean(Class category, String name, boolean defaultValue) { return getValue( diff --git a/ontrack-service/src/main/java/net/nemerosa/ontrack/service/support/CachedSettingsServiceImpl.java b/ontrack-service/src/main/java/net/nemerosa/ontrack/service/support/CachedSettingsServiceImpl.java index 68b4cb5d042..26fa12880dd 100644 --- a/ontrack-service/src/main/java/net/nemerosa/ontrack/service/support/CachedSettingsServiceImpl.java +++ b/ontrack-service/src/main/java/net/nemerosa/ontrack/service/support/CachedSettingsServiceImpl.java @@ -39,4 +39,8 @@ public T getCachedSettings(Class type) { public void invalidate(Class type) { } + @Override + @CacheEvict(value = Caches.SETTINGS, allEntries = true) + public void invalidateAll() { + } }