using Npgsql; using StellaOps.JobEngine.Infrastructure.Postgres; namespace StellaOps.JobEngine.Tests.DeadLetter; public sealed class PostgresDeadLetterRepositoryTests { [Theory] [InlineData(PostgresErrorCodes.UndefinedFunction)] [InlineData(PostgresErrorCodes.AmbiguousColumn)] public void ShouldUseActionableSummaryFallback_ReturnsTrue_ForRecoverableLegacySqlStates(string sqlState) { Assert.True(PostgresDeadLetterRepository.ShouldUseActionableSummaryFallback(sqlState)); } [Theory] [InlineData(PostgresErrorCodes.UndefinedTable)] [InlineData("XX000")] [InlineData(null)] public void ShouldUseActionableSummaryFallback_ReturnsFalse_ForNonFallbackSqlStates(string? sqlState) { Assert.False(PostgresDeadLetterRepository.ShouldUseActionableSummaryFallback(sqlState)); } [Theory] [InlineData(PostgresErrorCodes.UndefinedTable)] [InlineData("25P02")] // in_failed_sql_transaction public void IsMissingTableOrAbortedTransaction_ReturnsTrue_ForExpectedSqlStates(string sqlState) { Assert.True(PostgresDeadLetterRepository.IsMissingTableOrAbortedTransaction(sqlState)); } [Theory] [InlineData(PostgresErrorCodes.UndefinedFunction)] [InlineData(PostgresErrorCodes.AmbiguousColumn)] [InlineData("XX000")] [InlineData(null)] public void IsMissingTableOrAbortedTransaction_ReturnsFalse_ForOtherSqlStates(string? sqlState) { Assert.False(PostgresDeadLetterRepository.IsMissingTableOrAbortedTransaction(sqlState)); } }