테스트 DB 계약과 실행 안전성 정렬
ci / backend (push) Failing after 0s
ci / static (push) Failing after 6s
ci / backend (pull_request) Failing after 1s
ci / static (pull_request) Failing after 7s
Build & Test with Secrets / build (pull_request) Failing after 1s
ci / frontend (push) Failing after 48s
Build & Test with Secrets / security-scan (pull_request) Successful in 5s
Build & Test with Secrets / frontend (pull_request) Failing after 1m23s
ci / frontend (pull_request) Failing after 1m32s
Build & Test with Secrets / notification (pull_request) Failing after 2s
ci / backend (push) Failing after 0s
ci / static (push) Failing after 6s
ci / backend (pull_request) Failing after 1s
ci / static (pull_request) Failing after 7s
Build & Test with Secrets / build (pull_request) Failing after 1s
ci / frontend (push) Failing after 48s
Build & Test with Secrets / security-scan (pull_request) Successful in 5s
Build & Test with Secrets / frontend (pull_request) Failing after 1m23s
ci / frontend (pull_request) Failing after 1m32s
Build & Test with Secrets / notification (pull_request) Failing after 2s
This commit is contained in:
@@ -26,8 +26,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
|
||||
public ApprovalWorkflowTests()
|
||||
{
|
||||
_connectionString = Environment.GetEnvironmentVariable("KARTSELL_POSTGRES")
|
||||
?? "Host=localhost;Port=5432;Database=kartselldb;Username=kartsell;Password=kartsell4321@!";
|
||||
_connectionString = TestDatabaseConnection.GetConnectionString();
|
||||
_dataSource = new NpgsqlDataSourceBuilder(_connectionString).Build();
|
||||
_connectionFactory = new NpgsqlConnectionFactory(_dataSource);
|
||||
}
|
||||
@@ -67,8 +66,8 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
""",
|
||||
new[]
|
||||
{
|
||||
new { RunId = runId1, ModelId = modelId, Start = new DateOnly(2024, 1, 2), End = new DateOnly(2024, 8, 31) },
|
||||
new { RunId = runId2, ModelId = modelId, Start = new DateOnly(2024, 1, 2), End = new DateOnly(2024, 8, 31) }
|
||||
new { RunId = runId1, ModelId = modelId, Start = new DateTime(2024, 1, 2), End = new DateTime(2024, 8, 31) },
|
||||
new { RunId = runId2, ModelId = modelId, Start = new DateTime(2024, 1, 2), End = new DateTime(2024, 8, 31) }
|
||||
});
|
||||
|
||||
// Create approvals: one Pending, one Approved
|
||||
@@ -115,7 +114,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
INSERT INTO model_operations.shadow_run (run_id, model_id, window_start, window_end, status)
|
||||
VALUES (@RunId, @ModelId, @Start, @End, 'EvaluationComplete')
|
||||
""",
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateOnly(2024, 1, 2), End = new DateOnly(2024, 8, 31) });
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateTime(2024, 1, 2), End = new DateTime(2024, 8, 31) });
|
||||
|
||||
await connection.ExecuteAsync("""
|
||||
INSERT INTO model_operations.approval_queue (run_id, model_id, status)
|
||||
@@ -162,7 +161,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
INSERT INTO model_operations.shadow_run (run_id, model_id, window_start, window_end, status)
|
||||
VALUES (@RunId, @ModelId, @Start, @End, 'EvaluationComplete')
|
||||
""",
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateOnly(2024, 1, 2), End = new DateOnly(2024, 8, 31) });
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateTime(2024, 1, 2), End = new DateTime(2024, 8, 31) });
|
||||
|
||||
await connection.ExecuteAsync("""
|
||||
INSERT INTO model_operations.approval_queue (run_id, model_id, status, approved_by, approval_reason)
|
||||
@@ -198,7 +197,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
INSERT INTO model_operations.shadow_run (run_id, model_id, window_start, window_end, status)
|
||||
VALUES (@RunId, @ModelId, @Start, @End, 'EvaluationComplete')
|
||||
""",
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateOnly(2024, 1, 2), End = new DateOnly(2024, 8, 31) });
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateTime(2024, 1, 2), End = new DateTime(2024, 8, 31) });
|
||||
|
||||
await connection.ExecuteAsync("""
|
||||
INSERT INTO model_operations.approval_queue (run_id, model_id, status)
|
||||
@@ -237,7 +236,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
var runId = Guid.NewGuid();
|
||||
var modelId = Guid.NewGuid();
|
||||
var approverId = Guid.NewGuid();
|
||||
var beforeApproval = _clock.UtcNow.DateTime;
|
||||
var beforeApproval = MarketTime.SeoulDateTime(_clock.UtcNow);
|
||||
|
||||
await using var connection = await _connectionFactory.OpenAsync(CancellationToken.None);
|
||||
|
||||
@@ -245,7 +244,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
INSERT INTO model_operations.shadow_run (run_id, model_id, window_start, window_end, status)
|
||||
VALUES (@RunId, @ModelId, @Start, @End, 'EvaluationComplete')
|
||||
""",
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateOnly(2024, 1, 2), End = new DateOnly(2024, 8, 31) });
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateTime(2024, 1, 2), End = new DateTime(2024, 8, 31) });
|
||||
|
||||
await connection.ExecuteAsync("""
|
||||
INSERT INTO model_operations.approval_queue (run_id, model_id, status)
|
||||
@@ -258,7 +257,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
var request = new ApproveRequest(runId, "Approved");
|
||||
var response = await handler.HandleAsync(request, approverId, CancellationToken.None);
|
||||
|
||||
var afterApproval = _clock.UtcNow.DateTime;
|
||||
var afterApproval = MarketTime.SeoulDateTime(_clock.UtcNow);
|
||||
|
||||
// Assert: Timestamps are within expected range
|
||||
var approval = await connection.QuerySingleAsync<(DateTime RequestedAt, DateTime ApprovedAt)>("""
|
||||
@@ -267,7 +266,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
""",
|
||||
new { RunId = runId });
|
||||
|
||||
Assert.True(approval.RequestedAt < approval.ApprovedAt);
|
||||
Assert.True(approval.RequestedAt <= approval.ApprovedAt);
|
||||
Assert.True(approval.ApprovedAt >= beforeApproval && approval.ApprovedAt <= afterApproval.AddSeconds(1));
|
||||
}
|
||||
|
||||
@@ -287,7 +286,7 @@ public sealed class ApprovalWorkflowTests : IAsyncLifetime
|
||||
INSERT INTO model_operations.shadow_run (run_id, model_id, window_start, window_end, status)
|
||||
VALUES (@RunId, @ModelId, @Start, @End, 'EvaluationComplete')
|
||||
""",
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateOnly(2024, 1, 2), End = new DateOnly(2024, 8, 31) });
|
||||
new { RunId = runId, ModelId = modelId, Start = new DateTime(2024, 1, 2), End = new DateTime(2024, 8, 31) });
|
||||
|
||||
// Insert first approval
|
||||
await connection.ExecuteAsync("""
|
||||
|
||||
Reference in New Issue
Block a user