diff --git a/models/fixtures/TestGetUsedForUser/action_artifact.yaml b/models/fixtures/TestGetUsedForUser/action_artifact.yaml new file mode 100644 index 0000000000..db5392126d --- /dev/null +++ b/models/fixtures/TestGetUsedForUser/action_artifact.yaml @@ -0,0 +1,17 @@ +- + id: 1001 + run_id: 792 + runner_id: 1 + repo_id: 4 + owner_id: 1 + commit_sha: c2d72f548424103f01ee1dc02889c1e2bff816b0 + storage_path: "27/5/1730330775594233150.chunk" + file_size: 693147180559 + file_compressed_size: 693147180559 + content_encoding: "application/zip" + artifact_path: "big-file.zip" + artifact_name: "big-file" + status: 4 + created_unix: 1730330775 + updated_unix: 1730330775 + expired_unix: 1738106775 diff --git a/models/quota/main_test.go b/models/quota/main_test.go new file mode 100644 index 0000000000..ec0a0e0013 --- /dev/null +++ b/models/quota/main_test.go @@ -0,0 +1,19 @@ +// Copyright 2025 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: GPL-3.0-or-later + +package quota + +import ( + "testing" + + "forgejo.org/models/unittest" + + _ "forgejo.org/models" + _ "forgejo.org/models/actions" + _ "forgejo.org/models/activities" + _ "forgejo.org/models/forgefed" +) + +func TestMain(m *testing.M) { + unittest.MainTest(m) +} diff --git a/models/quota/used.go b/models/quota/used.go index 4a1bc84c0a..22815165f6 100644 --- a/models/quota/used.go +++ b/models/quota/used.go @@ -131,7 +131,8 @@ func createQueryFor(ctx context.Context, userID int64, q string) db.Engine { case "artifacts": session = session. Table("action_artifact"). - Join("INNER", "`repository`", "`action_artifact`.repo_id = `repository`.id") + Join("INNER", "`repository`", "`action_artifact`.repo_id = `repository`.id"). + Where("`action_artifact`.status != ?", action_model.ArtifactStatusExpired) case "packages": session = session. Table("package_version"). diff --git a/models/quota/used_test.go b/models/quota/used_test.go new file mode 100644 index 0000000000..82cc5b9bcc --- /dev/null +++ b/models/quota/used_test.go @@ -0,0 +1,23 @@ +// Copyright 2025 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: GPL-3.0-or-later + +package quota + +import ( + "testing" + + "forgejo.org/models/unittest" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestGetUsedForUser(t *testing.T) { + defer unittest.OverrideFixtures("models/fixtures/TestGetUsedForUser/")() + require.NoError(t, unittest.PrepareTestDatabase()) + + used, err := GetUsedForUser(t.Context(), 5) + require.NoError(t, err) + + assert.EqualValues(t, 4096, used.Size.Assets.Artifacts) +}