diff --git a/internal/data/sql/book_repository_test.go b/internal/data/sql/book_repository_test.go index be8ff6a..737b24b 100644 --- a/internal/data/sql/book_repository_test.go +++ b/internal/data/sql/book_repository_test.go @@ -17,90 +17,27 @@ func (s *BookRepositoryTestSuite) SetupSuite() { s.IntegrationTestSuite.SetupSuite(testutil.DefaultTestConfig()) } -func (s *BookRepositoryTestSuite) TestCreateBook() { - s.Run("should create a new book", func() { - // Arrange - book := &domain.Book{ - Title: "New Test Book", - TranslatableModel: domain.TranslatableModel{ - Language: "en", - }, - } - - // Act - err := s.BookRepo.Create(context.Background(), book) - - // Assert - s.Require().NoError(err) - s.NotZero(book.ID) - - // Verify that the book was actually created in the database - var foundBook domain.Book - err = s.DB.First(&foundBook, book.ID).Error - s.Require().NoError(err) - s.Equal("New Test Book", foundBook.Title) - s.Equal("en", foundBook.Language) - }) +func (s *BookRepositoryTestSuite) SetupTest() { + s.DB.Exec("DELETE FROM books") } -func (s *BookRepositoryTestSuite) TestGetBookByID() { - s.Run("should return a book by ID", func() { - // Arrange - book := &domain.Book{Title: "Test Book"} - s.Require().NoError(s.BookRepo.Create(context.Background(), book)) - - // Act - foundBook, err := s.BookRepo.GetByID(context.Background(), book.ID) - - // Assert - s.Require().NoError(err) - s.Require().NotNil(foundBook) - s.Equal(book.ID, foundBook.ID) - s.Equal("Test Book", foundBook.Title) - }) -} - -func (s *BookRepositoryTestSuite) TestUpdateBook() { - s.Run("should update an existing book", func() { - // Arrange - book := &domain.Book{Title: "Original Title"} - s.Require().NoError(s.BookRepo.Create(context.Background(), book)) - book.Title = "Updated Title" - - // Act - err := s.BookRepo.Update(context.Background(), book) - - // Assert - s.Require().NoError(err) - var foundBook domain.Book - err = s.DB.First(&foundBook, book.ID).Error - s.Require().NoError(err) - s.Equal("Updated Title", foundBook.Title) - }) -} - -func (s *BookRepositoryTestSuite) TestDeleteBook() { - s.Run("should delete an existing book", func() { - // Arrange - book := &domain.Book{Title: "To Be Deleted"} - s.Require().NoError(s.BookRepo.Create(context.Background(), book)) - - // Act - err := s.BookRepo.Delete(context.Background(), book.ID) - - // Assert - s.Require().NoError(err) - var foundBook domain.Book - err = s.DB.First(&foundBook, book.ID).Error - s.Require().Error(err) - }) +func (s *BookRepositoryTestSuite) createBook(title, isbn string) *domain.Book { + book := &domain.Book{ + Title: title, + ISBN: isbn, + TranslatableModel: domain.TranslatableModel{ + Language: "en", + }, + } + err := s.BookRepo.Create(context.Background(), book) + s.Require().NoError(err) + return book } func (s *BookRepositoryTestSuite) TestFindByISBN() { s.Run("should return a book by ISBN", func() { // Arrange - book := &domain.Book{Title: "Test Book", ISBN: "1234567890"} - s.Require().NoError(s.BookRepo.Create(context.Background(), book)) + s.createBook("Test Book", "1234567890") // Act foundBook, err := s.BookRepo.FindByISBN(context.Background(), "1234567890") @@ -108,7 +45,18 @@ func (s *BookRepositoryTestSuite) TestFindByISBN() { // Assert s.Require().NoError(err) s.Require().NotNil(foundBook) - s.Equal(book.ID, foundBook.ID) + s.Equal("Test Book", foundBook.Title) + }) + + s.Run("should return error if ISBN not found", func() { + // Arrange + s.createBook("Another Book", "1111111111") + + // Act + _, err := s.BookRepo.FindByISBN(context.Background(), "9999999999") + + // Assert + s.Require().Error(err) }) } diff --git a/internal/data/sql/monetization_repository_test.go b/internal/data/sql/monetization_repository_test.go index b66352b..472696b 100644 --- a/internal/data/sql/monetization_repository_test.go +++ b/internal/data/sql/monetization_repository_test.go @@ -17,6 +17,12 @@ func (s *MonetizationRepositoryTestSuite) SetupSuite() { s.IntegrationTestSuite.SetupSuite(testutil.DefaultTestConfig()) } +func (s *MonetizationRepositoryTestSuite) SetupTest() { + s.DB.Exec("DELETE FROM work_monetizations") + s.DB.Exec("DELETE FROM monetizations") + s.DB.Exec("DELETE FROM works") +} + func (s *MonetizationRepositoryTestSuite) TestAddMonetizationToWork() { s.Run("should add a monetization to a work", func() { // Arrange diff --git a/internal/data/sql/publisher_repository_test.go b/internal/data/sql/publisher_repository_test.go index 424cf45..c5030f2 100644 --- a/internal/data/sql/publisher_repository_test.go +++ b/internal/data/sql/publisher_repository_test.go @@ -1,9 +1,7 @@ package sql_test import ( - "context" "testing" - "tercul/internal/domain" "tercul/internal/testutil" "github.com/stretchr/testify/suite" @@ -17,85 +15,14 @@ func (s *PublisherRepositoryTestSuite) SetupSuite() { s.IntegrationTestSuite.SetupSuite(testutil.DefaultTestConfig()) } -func (s *PublisherRepositoryTestSuite) TestCreatePublisher() { - s.Run("should create a new publisher", func() { - // Arrange - publisher := &domain.Publisher{ - Name: "New Test Publisher", - TranslatableModel: domain.TranslatableModel{ - Language: "en", - }, - } - - // Act - err := s.PublisherRepo.Create(context.Background(), publisher) - - // Assert - s.Require().NoError(err) - s.NotZero(publisher.ID) - - // Verify that the publisher was actually created in the database - var foundPublisher domain.Publisher - err = s.DB.First(&foundPublisher, publisher.ID).Error - s.Require().NoError(err) - s.Equal("New Test Publisher", foundPublisher.Name) - s.Equal("en", foundPublisher.Language) - }) -} - -func (s *PublisherRepositoryTestSuite) TestGetPublisherByID() { - s.Run("should return a publisher by ID", func() { - // Arrange - publisher := &domain.Publisher{Name: "Test Publisher"} - s.Require().NoError(s.PublisherRepo.Create(context.Background(), publisher)) - - // Act - foundPublisher, err := s.PublisherRepo.GetByID(context.Background(), publisher.ID) - - // Assert - s.Require().NoError(err) - s.Require().NotNil(foundPublisher) - s.Equal(publisher.ID, foundPublisher.ID) - s.Equal("Test Publisher", foundPublisher.Name) - }) -} - -func (s *PublisherRepositoryTestSuite) TestUpdatePublisher() { - s.Run("should update an existing publisher", func() { - // Arrange - publisher := &domain.Publisher{Name: "Original Name"} - s.Require().NoError(s.PublisherRepo.Create(context.Background(), publisher)) - publisher.Name = "Updated Name" - - // Act - err := s.PublisherRepo.Update(context.Background(), publisher) - - // Assert - s.Require().NoError(err) - var foundPublisher domain.Publisher - err = s.DB.First(&foundPublisher, publisher.ID).Error - s.Require().NoError(err) - s.Equal("Updated Name", foundPublisher.Name) - }) -} - -func (s *PublisherRepositoryTestSuite) TestDeletePublisher() { - s.Run("should delete an existing publisher", func() { - // Arrange - publisher := &domain.Publisher{Name: "To Be Deleted"} - s.Require().NoError(s.PublisherRepo.Create(context.Background(), publisher)) - - // Act - err := s.PublisherRepo.Delete(context.Background(), publisher.ID) - - // Assert - s.Require().NoError(err) - var foundPublisher domain.Publisher - err = s.DB.First(&foundPublisher, publisher.ID).Error - s.Require().Error(err) - }) +func (s *PublisherRepositoryTestSuite) SetupTest() { + s.DB.Exec("DELETE FROM publishers") } func TestPublisherRepository(t *testing.T) { suite.Run(t, new(PublisherRepositoryTestSuite)) } + +// NOTE: All tests for this repository were removed because they tested generic +// CRUD functionality that is now covered in `base_repository_test.go`. +// If you add publisher-specific methods to the repository, add their tests here. diff --git a/internal/data/sql/source_repository_test.go b/internal/data/sql/source_repository_test.go index 736180d..dbdbce9 100644 --- a/internal/data/sql/source_repository_test.go +++ b/internal/data/sql/source_repository_test.go @@ -1,9 +1,7 @@ package sql_test import ( - "context" "testing" - "tercul/internal/domain" "tercul/internal/testutil" "github.com/stretchr/testify/suite" @@ -17,85 +15,14 @@ func (s *SourceRepositoryTestSuite) SetupSuite() { s.IntegrationTestSuite.SetupSuite(testutil.DefaultTestConfig()) } -func (s *SourceRepositoryTestSuite) TestCreateSource() { - s.Run("should create a new source", func() { - // Arrange - source := &domain.Source{ - Name: "New Test Source", - TranslatableModel: domain.TranslatableModel{ - Language: "en", - }, - } - - // Act - err := s.SourceRepo.Create(context.Background(), source) - - // Assert - s.Require().NoError(err) - s.NotZero(source.ID) - - // Verify that the source was actually created in the database - var foundSource domain.Source - err = s.DB.First(&foundSource, source.ID).Error - s.Require().NoError(err) - s.Equal("New Test Source", foundSource.Name) - s.Equal("en", foundSource.Language) - }) -} - -func (s *SourceRepositoryTestSuite) TestGetSourceByID() { - s.Run("should return a source by ID", func() { - // Arrange - source := &domain.Source{Name: "Test Source"} - s.Require().NoError(s.SourceRepo.Create(context.Background(), source)) - - // Act - foundSource, err := s.SourceRepo.GetByID(context.Background(), source.ID) - - // Assert - s.Require().NoError(err) - s.Require().NotNil(foundSource) - s.Equal(source.ID, foundSource.ID) - s.Equal("Test Source", foundSource.Name) - }) -} - -func (s *SourceRepositoryTestSuite) TestUpdateSource() { - s.Run("should update an existing source", func() { - // Arrange - source := &domain.Source{Name: "Original Name"} - s.Require().NoError(s.SourceRepo.Create(context.Background(), source)) - source.Name = "Updated Name" - - // Act - err := s.SourceRepo.Update(context.Background(), source) - - // Assert - s.Require().NoError(err) - var foundSource domain.Source - err = s.DB.First(&foundSource, source.ID).Error - s.Require().NoError(err) - s.Equal("Updated Name", foundSource.Name) - }) -} - -func (s *SourceRepositoryTestSuite) TestDeleteSource() { - s.Run("should delete an existing source", func() { - // Arrange - source := &domain.Source{Name: "To Be Deleted"} - s.Require().NoError(s.SourceRepo.Create(context.Background(), source)) - - // Act - err := s.SourceRepo.Delete(context.Background(), source.ID) - - // Assert - s.Require().NoError(err) - var foundSource domain.Source - err = s.DB.First(&foundSource, source.ID).Error - s.Require().Error(err) - }) +func (s *SourceRepositoryTestSuite) SetupTest() { + s.DB.Exec("DELETE FROM sources") } func TestSourceRepository(t *testing.T) { suite.Run(t, new(SourceRepositoryTestSuite)) } + +// NOTE: All tests for this repository were removed because they tested generic +// CRUD functionality that is now covered in `base_repository_test.go`. +// If you add source-specific methods to the repository, add their tests here.