| package common |
|
|
| import ( |
| "fmt" |
| "testing" |
| "time" |
|
|
| "github.com/stretchr/testify/require" |
|
|
| ledgeraccountdb "github.com/openmeterio/openmeter/openmeter/ent/db/ledgeraccount" |
| "github.com/openmeterio/openmeter/openmeter/ledger" |
| ledgertestutils "github.com/openmeterio/openmeter/openmeter/ledger/testutils" |
| "github.com/openmeterio/openmeter/openmeter/testutils" |
| ) |
|
|
| func TestLedgerNamespaceHandlerIsSafeForRepeatedCreateNamespaceCalls(t *testing.T) { |
| testDB := testutils.InitPostgresDB(t, testutils.PostgresDBStateAtlasMigrated) |
| t.Cleanup(func() { |
| require.NoError(t, testDB.EntDriver.Close()) |
| require.NoError(t, testDB.PGDriver.Close()) |
| }) |
|
|
| deps, err := ledgertestutils.InitDeps(testDB.EntDriver.Client(), testutils.NewDiscardLogger(t)) |
| require.NoError(t, err) |
|
|
| handler := NewLedgerNamespaceHandler(deps.ResolversService) |
| namespace := fmt.Sprintf("startup-test-%d", time.Now().UnixNano()) |
|
|
| require.NoError(t, handler.CreateNamespace(t.Context(), namespace)) |
| require.NoError(t, handler.CreateNamespace(t.Context(), namespace)) |
|
|
| count, err := testDB.EntDriver.Client().LedgerAccount.Query(). |
| Where( |
| ledgeraccountdb.Namespace(namespace), |
| ledgeraccountdb.AccountTypeIn( |
| ledger.AccountTypeWash, |
| ledger.AccountTypeEarnings, |
| ledger.AccountTypeBrokerage, |
| ), |
| ). |
| Count(t.Context()) |
| require.NoError(t, err) |
| require.Equal(t, 3, count) |
| } |
|
|