diff --git a/internal/adapters/graphql/integration_test.go b/internal/adapters/graphql/integration_test.go index 58b1574..18520eb 100644 --- a/internal/adapters/graphql/integration_test.go +++ b/internal/adapters/graphql/integration_test.go @@ -31,15 +31,14 @@ type GraphQLResponse struct { // GraphQLIntegrationSuite is a test suite for GraphQL integration tests type GraphQLIntegrationSuite struct { - testutil.SimpleTestSuite + testutil.IntegrationTestSuite server *httptest.Server client *http.Client } // SetupSuite sets up the test suite func (s *GraphQLIntegrationSuite) SetupSuite() { - // Use the simple test utilities - s.SimpleTestSuite.SetupSuite() + s.IntegrationTestSuite.SetupSuite(testutil.DefaultTestConfig()) // Create GraphQL server with the test resolver resolver := s.GetResolver() @@ -54,12 +53,13 @@ func (s *GraphQLIntegrationSuite) SetupSuite() { // TearDownSuite tears down the test suite func (s *GraphQLIntegrationSuite) TearDownSuite() { + s.IntegrationTestSuite.TearDownSuite() s.server.Close() } // SetupTest sets up each test func (s *GraphQLIntegrationSuite) SetupTest() { - s.SimpleTestSuite.SetupTest() + s.IntegrationTestSuite.SetupTest() } // executeGraphQL executes a GraphQL query diff --git a/internal/app/app.go b/internal/app/app.go index e3c5a02..42799ea 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -31,4 +31,5 @@ type Application struct { PublisherRepo domain.PublisherRepository SourceRepo domain.SourceRepository MonetizationQueries *monetization.MonetizationQueries + MonetizationCommands *monetization.MonetizationCommands } diff --git a/internal/data/sql/work_repository.go b/internal/data/sql/work_repository.go index 88a2289..effd495 100644 --- a/internal/data/sql/work_repository.go +++ b/internal/data/sql/work_repository.go @@ -106,6 +106,7 @@ func (r *workRepository) FindByLanguage(ctx context.Context, language string, pa + // Delete removes a work and its associations func (r *workRepository) Delete(ctx context.Context, id uint) error { return r.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error { diff --git a/internal/testutil/integration_test_utils.go b/internal/testutil/integration_test_utils.go index ecbab82..6c0514e 100644 --- a/internal/testutil/integration_test_utils.go +++ b/internal/testutil/integration_test_utils.go @@ -15,7 +15,11 @@ import ( graph "tercul/internal/adapters/graphql" "tercul/internal/app/auth" auth_platform "tercul/internal/platform/auth" + "tercul/internal/app" + "tercul/internal/app/copyright" "tercul/internal/app/localization" + "tercul/internal/app/monetization" + "tercul/internal/app/search" "tercul/internal/app/work" "tercul/internal/data/sql" "tercul/internal/domain" @@ -318,8 +322,48 @@ func (s *IntegrationTestSuite) SetupTest() { // GetResolver returns a properly configured GraphQL resolver for testing func (s *IntegrationTestSuite) GetResolver() *graph.Resolver { + // Initialize repositories + workRepo := sql.NewWorkRepository(s.DB) + userRepo := sql.NewUserRepository(s.DB) + authorRepo := sql.NewAuthorRepository(s.DB) + translationRepo := sql.NewTranslationRepository(s.DB) + copyrightRepo := sql.NewCopyrightRepository(s.DB) + bookRepo := sql.NewBookRepository(s.DB) + publisherRepo := sql.NewPublisherRepository(s.DB) + sourceRepo := sql.NewSourceRepository(s.DB) + monetizationRepo := sql.NewMonetizationRepository(s.DB) + + // Initialize application services + workCommands := work.NewWorkCommands(workRepo, &MockAnalyzer{}) + workQueries := work.NewWorkQueries(workRepo) + + jwtManager := auth_platform.NewJWTManager() + authCommands := auth.NewAuthCommands(userRepo, jwtManager) + authQueries := auth.NewAuthQueries(userRepo, jwtManager) + + copyrightCommands := copyright.NewCopyrightCommands(copyrightRepo) + copyrightQueries := copyright.NewCopyrightQueries(copyrightRepo, workRepo, authorRepo, bookRepo, publisherRepo, sourceRepo) + + localizationService := localization.NewService(translationRepo) + + searchService := search.NewIndexService(localizationService, translationRepo) + + monetizationCommands := monetization.NewMonetizationCommands(monetizationRepo) + monetizationQueries := monetization.NewMonetizationQueries(monetizationRepo, workRepo, authorRepo, bookRepo, publisherRepo, sourceRepo) + return &graph.Resolver{ - // This needs to be updated to reflect the new resolver structure + App: &app.Application{ + WorkCommands: workCommands, + WorkQueries: workQueries, + AuthCommands: authCommands, + AuthQueries: authQueries, + CopyrightCommands: copyrightCommands, + CopyrightQueries: copyrightQueries, + Localization: localizationService, + Search: searchService, + MonetizationCommands: monetizationCommands, + MonetizationQueries: monetizationQueries, + }, } }