From 32f3f034ebd047915bfe0dc8971f5545626a11ff Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Tue, 6 Oct 2026 00:16:03 +0200 Subject: [PATCH] add tests for repository --- kontor-gin/internal/handlers/media_actor.go | 20 ++++++++++ kontor-gin/internal/main_test.go | 11 ++++++ kontor-gin/internal/repository/media_actor.go | 20 ++++++++++ kontor-gin/internal/router/router.go | 2 + kontor-gin/internal/service/media_actor.go | 10 +++++ .../tests/testutils/db_test_helper.go | 37 +++++++++++++++++++ 6 files changed, 100 insertions(+) create mode 100644 kontor-gin/internal/main_test.go create mode 100644 kontor-gin/internal/tests/testutils/db_test_helper.go diff --git a/kontor-gin/internal/handlers/media_actor.go b/kontor-gin/internal/handlers/media_actor.go index c970024..e135ed8 100644 --- a/kontor-gin/internal/handlers/media_actor.go +++ b/kontor-gin/internal/handlers/media_actor.go @@ -33,6 +33,26 @@ func (handler *MediaActorHandler) List(c *gin.Context) { c.JSON(http.StatusOK, dtos) } +func (handler *MediaActorHandler) Get(c *gin.Context) { + id := c.Param("id") + actor, err := handler.Service.Get(c.Request.Context(), id) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "sport not found"}) + return + } + c.JSON(http.StatusOK, actor) +} + +func (handler *MediaActorHandler) Delete(c *gin.Context) { + id := c.Param("id") + err := handler.Service.Delete(c.Request.Context(), id) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "sport not found"}) + return + } + c.JSON(http.StatusOK, gin.H{"ok": "true"}) +} + func (handler *MediaActorHandler) ListPage(c *gin.Context) { session := sessions.Default(c) user := session.Get(globals.UserKey) diff --git a/kontor-gin/internal/main_test.go b/kontor-gin/internal/main_test.go new file mode 100644 index 0000000..e84d3ff --- /dev/null +++ b/kontor-gin/internal/main_test.go @@ -0,0 +1,11 @@ +package internal + +import ( + "testing" + + "kontor-api-gin/internal/test/testutils" +) + +func TestMain(m *testing.M) { + testutils.InitializeTestSuite(m) +} diff --git a/kontor-gin/internal/repository/media_actor.go b/kontor-gin/internal/repository/media_actor.go index dd1f86a..fa1433b 100644 --- a/kontor-gin/internal/repository/media_actor.go +++ b/kontor-gin/internal/repository/media_actor.go @@ -25,3 +25,23 @@ func (repository *MediaActorRepository) FindAll(context context.Context) ([]mode return actors, nil } + +func (repository *MediaActorRepository) GetById(context context.Context, id string) (models.MediaActor, error) { + var actor = models.MediaActor{ID: id} + slog.Info("MediaActorRepository#GetById", "id", id) + result := repository.db.First(&actor) + if result.Error != nil { + slog.Info("SportRepository#GetById", "error", result.Error.Error()) + } + return actor, result.Error +} + +func (repository *MediaActorRepository) Delete(context context.Context, id string) error { + var actor = models.MediaActor{ID: id} + slog.Info("MediaActorRepository#Delete", "id", id) + result := repository.db.Delete(&actor) + if result.Error != nil { + slog.Info("SportRepository#Delete", "error", result.Error.Error()) + } + return result.Error +} diff --git a/kontor-gin/internal/router/router.go b/kontor-gin/internal/router/router.go index fabf600..882eaa3 100644 --- a/kontor-gin/internal/router/router.go +++ b/kontor-gin/internal/router/router.go @@ -105,6 +105,8 @@ func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, com secured.GET("media/videos", media.MediaVideoHandler.List) secured.GET("media/lofis", media.MediaLoFiHandler.List) secured.GET("media/actors", media.MediaActorHandler.List) + secured.GET("media/actors/:id", media.MediaActorHandler.Get) + secured.DELETE("media/actors/:id", media.MediaActorHandler.Delete) secured.GET("media/actorfiles", media.MediaActorFileHandler.List) } return router diff --git a/kontor-gin/internal/service/media_actor.go b/kontor-gin/internal/service/media_actor.go index dd3717d..a550e7d 100644 --- a/kontor-gin/internal/service/media_actor.go +++ b/kontor-gin/internal/service/media_actor.go @@ -20,3 +20,13 @@ func (service *MediaActorService) List(context context.Context) ([]models.MediaA slog.Info("MediaActorService#List") return service.repository.FindAll(context) } + +func (service *MediaActorService) Get(context context.Context, id string) (models.MediaActor, error) { + slog.Info("MediaActorService#Get") + return service.repository.GetById(context, id) +} + +func (service *MediaActorService) Delete(context context.Context, id string) error { + slog.Info("MediaActorService#Delete") + return service.repository.Delete(context, id) +} diff --git a/kontor-gin/internal/tests/testutils/db_test_helper.go b/kontor-gin/internal/tests/testutils/db_test_helper.go new file mode 100644 index 0000000..f451654 --- /dev/null +++ b/kontor-gin/internal/tests/testutils/db_test_helper.go @@ -0,0 +1,37 @@ +package testutils + +import ( + "os" + "testing" +) + +func SetupTestDatabase() { + +} + +func PatchDatabase() { + +} + +func TearDownTestDatabase() { + +} + +func UnpatchDatabase() { + +} + +func InitializeTestSuite(m *testing.M) { + // Initialize the test database + SetupTestDatabase() + // Patch the global database.DB to use the TestDB + PatchDatabase() + // Run all tests + code := m.Run() + // Teardown the database connection + TearDownTestDatabase() + // Unpatch the database + UnpatchDatabase() + // Exit with the test run status code + os.Exit(code) +}