From 21bf49c06138c9b8d138d48fabbcd34e4a68d4cd Mon Sep 17 00:00:00 2001 From: "Alessandro (Ale) Segala" <43508+ItalyPaleAle@users.noreply.github.com> Date: Wed, 14 May 2025 08:54:03 -0700 Subject: [PATCH] refactor: flaky unit test in db_bootstrap_test (#532) --- .../internal/bootstrap/db_bootstrap_test.go | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/backend/internal/bootstrap/db_bootstrap_test.go b/backend/internal/bootstrap/db_bootstrap_test.go index 1c61ea05..d8627e5c 100644 --- a/backend/internal/bootstrap/db_bootstrap_test.go +++ b/backend/internal/bootstrap/db_bootstrap_test.go @@ -1,6 +1,7 @@ package bootstrap import ( + "net/url" "testing" "github.com/stretchr/testify/assert" @@ -112,9 +113,32 @@ func TestParseSqliteConnectionString(t *testing.T) { if tt.expectedError { require.Error(t, err) - } else { - require.NoError(t, err) - assert.Equal(t, tt.expected, result) + return + } + + require.NoError(t, err) + + // Parse both URLs to compare components independently + expectedURL, err := url.Parse(tt.expected) + require.NoError(t, err) + + resultURL, err := url.Parse(result) + require.NoError(t, err) + + // Compare scheme and path components + assert.Equal(t, expectedURL.Scheme, resultURL.Scheme) + assert.Equal(t, expectedURL.Path, resultURL.Path) + + // Compare query parameters regardless of order + expectedQuery := expectedURL.Query() + resultQuery := resultURL.Query() + + assert.Len(t, expectedQuery, len(resultQuery)) + + for key, expectedValues := range expectedQuery { + resultValues, ok := resultQuery[key] + _ = assert.True(t, ok) && + assert.ElementsMatch(t, expectedValues, resultValues) } }) }