tercul-backend/internal/adapters/graphql/analytics_service_mock_test.go
google-labs-jules[bot] f675c98e80 Fix: Correct authorization logic in integration tests
The integration tests for admin-only mutations were failing due to an authorization issue. The root cause was that the JWT token used in the tests did not reflect the user's admin role, which was being set directly in the database.

This commit fixes the issue by:
1.  Updating the `CreateAuthenticatedUser` test helper to generate a new JWT token after a user's role is changed. This ensures the token contains the correct, up-to-date role.
2.  Removing all uses of `auth.ContextWithAdminUser` from the integration tests, making the JWT token the single source of truth for authorization.

This change also removes unused imports and variables that were causing build failures after the refactoring. All integration tests now pass.
2025-10-04 23:48:44 +00:00

77 lines
2.5 KiB
Go

package graphql_test
import (
"context"
"tercul/internal/domain"
"tercul/internal/domain/work"
"time"
"github.com/stretchr/testify/mock"
)
// mockAnalyticsService is a mock implementation of the AnalyticsService interface.
type mockAnalyticsService struct {
mock.Mock
}
func (m *mockAnalyticsService) IncrementWorkCounter(ctx context.Context, workID uint, field string, value int) error {
args := m.Called(ctx, workID, field, value)
return args.Error(0)
}
func (m *mockAnalyticsService) IncrementTranslationCounter(ctx context.Context, translationID uint, field string, value int) error {
args := m.Called(ctx, translationID, field, value)
return args.Error(0)
}
func (m *mockAnalyticsService) UpdateWorkStats(ctx context.Context, workID uint, stats work.WorkStats) error {
args := m.Called(ctx, workID, stats)
return args.Error(0)
}
func (m *mockAnalyticsService) UpdateTranslationStats(ctx context.Context, translationID uint, stats domain.TranslationStats) error {
args := m.Called(ctx, translationID, stats)
return args.Error(0)
}
func (m *mockAnalyticsService) GetOrCreateWorkStats(ctx context.Context, workID uint) (*work.WorkStats, error) {
args := m.Called(ctx, workID)
if args.Get(0) == nil {
return nil, args.Error(1)
}
return args.Get(0).(*work.WorkStats), args.Error(1)
}
func (m *mockAnalyticsService) GetOrCreateTranslationStats(ctx context.Context, translationID uint) (*domain.TranslationStats, error) {
args := m.Called(ctx, translationID)
if args.Get(0) == nil {
return nil, args.Error(1)
}
return args.Get(0).(*domain.TranslationStats), args.Error(1)
}
func (m *mockAnalyticsService) GetOrCreateUserEngagement(ctx context.Context, userID uint, date time.Time) (*domain.UserEngagement, error) {
args := m.Called(ctx, userID, date)
if args.Get(0) == nil {
return nil, args.Error(1)
}
return args.Get(0).(*domain.UserEngagement), args.Error(1)
}
func (m *mockAnalyticsService) UpdateUserEngagement(ctx context.Context, userEngagement *domain.UserEngagement) error {
args := m.Called(ctx, userEngagement)
return args.Error(0)
}
func (m *mockAnalyticsService) UpdateTrendingWorks(ctx context.Context, timePeriod string, trending []*domain.Trending) error {
args := m.Called(ctx, timePeriod, trending)
return args.Error(0)
}
func (m *mockAnalyticsService) GetTrendingWorks(ctx context.Context, timePeriod string, limit int) ([]*work.Work, error) {
args := m.Called(ctx, timePeriod, limit)
if args.Get(0) == nil {
return nil, args.Error(1)
}
return args.Get(0).([]*work.Work), args.Error(1)
}