tercul-backend/internal/app/work/main_test.go
google-labs-jules[bot] 49e2bdd9ac feat: Refactor localization, auth, copyright, and monetization domains
This change introduces a major architectural refactoring of the application, with a focus on improving testability, decoupling, and observability.

The following domains have been successfully refactored:
- `localization`: Wrote a full suite of unit tests and added logging.
- `auth`: Introduced a `JWTManager` interface, wrote comprehensive unit tests, and added logging.
- `copyright`: Separated integration tests, wrote a full suite of unit tests, and added logging.
- `monetization`: Wrote a full suite of unit tests and added logging.
- `search`: Refactored the Weaviate client usage by creating a wrapper to improve testability, and achieved 100% test coverage.

For each of these domains, 100% test coverage has been achieved for the refactored code.

The refactoring of the `work` domain is currently in progress. Unit tests have been written for the commands and queries, but there is a persistent build issue with the query tests that needs to be resolved. The error indicates that the query methods are undefined, despite appearing to be correctly defined and called.
2025-09-06 15:15:10 +00:00

93 lines
3.0 KiB
Go

package work
import (
"context"
"tercul/internal/domain"
)
type mockWorkRepository struct {
domain.WorkRepository
createFunc func(ctx context.Context, work *domain.Work) error
updateFunc func(ctx context.Context, work *domain.Work) error
deleteFunc func(ctx context.Context, id uint) error
getByIDFunc func(ctx context.Context, id uint) (*domain.Work, error)
listFunc func(ctx context.Context, page, pageSize int) (*domain.PaginatedResult[domain.Work], error)
getWithTranslationsFunc func(ctx context.Context, id uint) (*domain.Work, error)
findByTitleFunc func(ctx context.Context, title string) ([]domain.Work, error)
findByAuthorFunc func(ctx context.Context, authorID uint) ([]domain.Work, error)
findByCategoryFunc func(ctx context.Context, categoryID uint) ([]domain.Work, error)
findByLanguageFunc func(ctx context.Context, language string, page, pageSize int) (*domain.PaginatedResult[domain.Work], error)
}
func (m *mockWorkRepository) Create(ctx context.Context, work *domain.Work) error {
if m.createFunc != nil {
return m.createFunc(ctx, work)
}
return nil
}
func (m *mockWorkRepository) Update(ctx context.Context, work *domain.Work) error {
if m.updateFunc != nil {
return m.updateFunc(ctx, work)
}
return nil
}
func (m *mockWorkRepository) Delete(ctx context.Context, id uint) error {
if m.deleteFunc != nil {
return m.deleteFunc(ctx, id)
}
return nil
}
func (m *mockWorkRepository) GetByID(ctx context.Context, id uint) (*domain.Work, error) {
if m.getByIDFunc != nil {
return m.getByIDFunc(ctx, id)
}
return nil, nil
}
func (m *mockWorkRepository) List(ctx context.Context, page, pageSize int) (*domain.PaginatedResult[domain.Work], error) {
if m.listFunc != nil {
return m.listFunc(ctx, page, pageSize)
}
return nil, nil
}
func (m *mockWorkRepository) GetWithTranslations(ctx context.Context, id uint) (*domain.Work, error) {
if m.getWithTranslationsFunc != nil {
return m.getWithTranslationsFunc(ctx, id)
}
return nil, nil
}
func (m *mockWorkRepository) FindByTitle(ctx context.Context, title string) ([]domain.Work, error) {
if m.findByTitleFunc != nil {
return m.findByTitleFunc(ctx, title)
}
return nil, nil
}
func (m *mockWorkRepository) FindByAuthor(ctx context.Context, authorID uint) ([]domain.Work, error) {
if m.findByAuthorFunc != nil {
return m.findByAuthorFunc(ctx, authorID)
}
return nil, nil
}
func (m *mockWorkRepository) FindByCategory(ctx context.Context, categoryID uint) ([]domain.Work, error) {
if m.findByCategoryFunc != nil {
return m.findByCategoryFunc(ctx, categoryID)
}
return nil, nil
}
func (m *mockWorkRepository) FindByLanguage(ctx context.Context, language string, page, pageSize int) (*domain.PaginatedResult[domain.Work], error) {
if m.findByLanguageFunc != nil {
return m.findByLanguageFunc(ctx, language, page, pageSize)
}
return nil, nil
}
type mockAnalyzer struct {
analyzeWorkFunc func(ctx context.Context, workID uint) error
}
func (m *mockAnalyzer) AnalyzeWork(ctx context.Context, workID uint) error {
if m.analyzeWorkFunc != nil {
return m.analyzeWorkFunc(ctx, workID)
}
return nil
}