forgejo/services/moderation/reporting_test.go
nachtjasmin 8ee4a7d658 chore: ensure consistent import aliasing for services and models (#10253)
To make sure that the code stays maintainable, I added the `importas` linter to ensure that the imports for models and services stay consistent.

I realised that this might be needed after finding some discrepancies between singular/plural naming, and, especially in the case of the `forgejo.org/services/context` package, multiple different aliases like `gitea_ctx`, `app_context` and `forgejo_context`. I decided for `app_context`, as that seems to be the most commonly used naming.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/10253
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: nachtjasmin <nachtjasmin@posteo.de>
Co-committed-by: nachtjasmin <nachtjasmin@posteo.de>
2025-11-30 17:00:57 +01:00

97 lines
3.8 KiB
Go

// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package moderation
import (
"testing"
"time"
"forgejo.org/models/db"
moderation_model "forgejo.org/models/moderation"
"forgejo.org/models/unittest"
"forgejo.org/modules/timeutil"
"github.com/stretchr/testify/require"
)
func TestRemoveResolvedReportsWhenNoTimeSet(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
// reportAge needs to be an int64 to match what timeutil.Day expects so we cast the value
reportAge := int64(20)
resolvedReport := &moderation_model.AbuseReport{
Status: moderation_model.ReportStatusTypeHandled,
ReporterID: 1, ContentType: moderation_model.ReportedContentTypeRepository,
ContentID: 2, Category: moderation_model.AbuseCategoryTypeOther,
CreatedUnix: timeutil.TimeStampNow(),
ResolvedUnix: timeutil.TimeStamp(time.Now().Unix() - timeutil.Day*reportAge),
}
_, err := db.GetEngine(db.DefaultContext).NoAutoTime().Insert(resolvedReport)
require.NoError(t, err)
// No reports should be deleted when the default time to keep is 0
err = RemoveResolvedReports(db.DefaultContext, time.Second*0)
require.NoError(t, err)
unittest.AssertExistsIf(t, true, resolvedReport)
}
func TestRemoveResolvedReportsWhenMatchTimeSet(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
// keepReportsFor needs to an int64 to match what timeutil.Day expects so we cast the value
keepReportsFor := int64(4)
resolvedReport := &moderation_model.AbuseReport{
Status: moderation_model.ReportStatusTypeHandled,
ReporterID: 1, ContentType: moderation_model.ReportedContentTypeRepository,
ContentID: 2, Category: moderation_model.AbuseCategoryTypeOther,
CreatedUnix: timeutil.TimeStampNow(),
ResolvedUnix: timeutil.TimeStamp(time.Now().Unix() - timeutil.Day*keepReportsFor),
}
_, err := db.GetEngine(db.DefaultContext).NoAutoTime().Insert(resolvedReport)
require.NoError(t, err)
// Report should be deleted when older than the default time to keep
err = RemoveResolvedReports(db.DefaultContext, time.Second*4)
require.NoError(t, err)
unittest.AssertExistsIf(t, false, resolvedReport)
}
func TestRemoveResolvedReportsWhenTimeSetButReportNew(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
resolvedReport := &moderation_model.AbuseReport{
Status: moderation_model.ReportStatusTypeHandled,
ReporterID: 1, ContentType: moderation_model.ReportedContentTypeRepository,
ContentID: 2, Category: moderation_model.AbuseCategoryTypeOther,
CreatedUnix: timeutil.TimeStampNow(),
ResolvedUnix: timeutil.TimeStampNow(),
}
_, err := db.GetEngine(db.DefaultContext).NoAutoTime().Insert(resolvedReport)
require.NoError(t, err)
// Report should not be deleted when newer than the default time to keep
err = RemoveResolvedReports(db.DefaultContext, time.Second*4)
require.NoError(t, err)
unittest.AssertExistsIf(t, true, resolvedReport)
}
func TestDoesNotRemoveOpenReports(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
// keepReportsFor needs to an int64 to match what timeutil.Day expects so we cast the value
keepReportsFor := int64(4)
resolvedReport := &moderation_model.AbuseReport{
Status: moderation_model.ReportStatusTypeOpen,
ReporterID: 1, ContentType: moderation_model.ReportedContentTypeRepository,
ContentID: 2, Category: moderation_model.AbuseCategoryTypeOther,
CreatedUnix: timeutil.TimeStampNow(),
ResolvedUnix: timeutil.TimeStamp(time.Now().Unix() - timeutil.Day*keepReportsFor),
}
_, err := db.GetEngine(db.DefaultContext).NoAutoTime().Insert(resolvedReport)
require.NoError(t, err)
// Report should not be deleted when open
// and older than the default time to keep
err = RemoveResolvedReports(db.DefaultContext, time.Second*4)
require.NoError(t, err)
unittest.AssertExistsIf(t, true, resolvedReport)
}