| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package repository
- import (
- "context"
- "regexp"
- "strings"
- "testing"
- "time"
- sqlmock "github.com/DATA-DOG/go-sqlmock"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/stretchr/testify/require"
- )
- func TestBuildContentModerationLogWhere_BlockedIncludesAllBlockActions(t *testing.T) {
- where, args := buildContentModerationLogWhere(service.ContentModerationLogFilter{Result: "blocked"})
- require.Empty(t, args)
- sql := strings.Join(where, " AND ")
- require.Contains(t, sql, "l.action IN ('block', 'keyword_block', 'hash_block')")
- require.NotContains(t, sql, "l.action = 'block'")
- }
- func TestContentModerationRepositoryCountFlaggedByUserSince_ExcludesHashBlock(t *testing.T) {
- db, mock, err := sqlmock.New()
- require.NoError(t, err)
- defer func() { _ = db.Close() }()
- repo := NewContentModerationRepository(db)
- since := time.Now().Add(-time.Hour)
- mock.ExpectQuery(regexp.QuoteMeta("AND action <> 'hash_block'")).
- WithArgs(int64(1001), since, false).
- WillReturnRows(sqlmock.NewRows([]string{"count"}).AddRow(2))
- count, err := repo.CountFlaggedByUserSince(context.Background(), 1001, since, false)
- require.NoError(t, err)
- require.Equal(t, 2, count)
- require.NoError(t, mock.ExpectationsWereMet())
- }
- func TestContentModerationRepositoryCountFlaggedByUserSince_ExcludesCyberPolicyWhenRequested(t *testing.T) {
- db, mock, err := sqlmock.New()
- require.NoError(t, err)
- defer func() { _ = db.Close() }()
- repo := NewContentModerationRepository(db)
- since := time.Now().Add(-time.Hour)
- mock.ExpectQuery(regexp.QuoteMeta("AND ($3::bool IS FALSE OR action <> 'cyber_policy')")).
- WithArgs(int64(1001), since, true).
- WillReturnRows(sqlmock.NewRows([]string{"count"}).AddRow(3))
- count, err := repo.CountFlaggedByUserSince(context.Background(), 1001, since, true)
- require.NoError(t, err)
- require.Equal(t, 3, count)
- require.NoError(t, mock.ExpectationsWereMet())
- }
|