backend: add: licencecontroller_test
This commit is contained in:
@@ -25,6 +25,7 @@ require (
|
|||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/kr/text v0.2.0 // indirect
|
github.com/kr/text v0.2.0 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
|
github.com/stretchr/objx v0.5.2 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
|||||||
94
go-backend/internal/controllers/licenceController_test.go
Normal file
94
go-backend/internal/controllers/licenceController_test.go
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"GoMembership/internal/models"
|
||||||
|
"GoMembership/internal/services"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/mock"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Mock Repository
|
||||||
|
type MockLicenceRepo struct {
|
||||||
|
mock.Mock
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockLicenceRepo) GetAllCategories() ([]models.Category, error) {
|
||||||
|
args := m.Called()
|
||||||
|
categories, _ := args.Get(0).([]models.Category) // Safe type assertion
|
||||||
|
return categories, args.Error(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *MockLicenceRepo) FindCategoriesByIDs(ids []uint) ([]models.Category, error) {
|
||||||
|
return []models.Category{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *MockLicenceRepo) FindCategoryByName(categoryName string) (models.Category, error) {
|
||||||
|
return models.Category{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetAllCategories_Success(t *testing.T) {
|
||||||
|
gin.SetMode(gin.TestMode)
|
||||||
|
|
||||||
|
// Mock repository
|
||||||
|
mockRepo := new(MockLicenceRepo)
|
||||||
|
expectedCategories := []models.Category{
|
||||||
|
{ID: 1, Name: "Category A"},
|
||||||
|
{ID: 2, Name: "Category B"},
|
||||||
|
}
|
||||||
|
mockRepo.On("GetAllCategories").Return(expectedCategories, nil)
|
||||||
|
|
||||||
|
// Create LicenceService with mocked repository
|
||||||
|
service := &services.LicenceService{Repo: mockRepo}
|
||||||
|
|
||||||
|
// Create controller with service
|
||||||
|
lc := &LicenceController{Service: *service}
|
||||||
|
|
||||||
|
// Setup router and request
|
||||||
|
router := gin.Default()
|
||||||
|
router.GET("/licence/categories", lc.GetAllCategories)
|
||||||
|
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
req, _ := http.NewRequest(http.MethodGet, "/licence/categories", nil)
|
||||||
|
router.ServeHTTP(w, req)
|
||||||
|
|
||||||
|
// Assertions
|
||||||
|
assert.Equal(t, http.StatusOK, w.Code)
|
||||||
|
assert.JSONEq(t, `{"licence_categories":[{"id":1,"category":"Category A"},{"id":2,"category":"Category B"}]}`, w.Body.String())
|
||||||
|
|
||||||
|
mockRepo.AssertExpectations(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetAllCategories_Error(t *testing.T) {
|
||||||
|
gin.SetMode(gin.TestMode)
|
||||||
|
|
||||||
|
// Mock repository
|
||||||
|
mockRepo := new(MockLicenceRepo)
|
||||||
|
mockRepo.On("GetAllCategories").Return(nil, errors.New("database error"))
|
||||||
|
|
||||||
|
// Create LicenceService with mocked repository
|
||||||
|
service := &services.LicenceService{Repo: mockRepo}
|
||||||
|
|
||||||
|
// Create controller with service
|
||||||
|
lc := &LicenceController{Service: *service}
|
||||||
|
|
||||||
|
// Setup router and request
|
||||||
|
router := gin.Default()
|
||||||
|
router.GET("/licence/categories", lc.GetAllCategories)
|
||||||
|
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
req, _ := http.NewRequest(http.MethodGet, "/licence/categories", nil)
|
||||||
|
router.ServeHTTP(w, req)
|
||||||
|
|
||||||
|
// Assertions
|
||||||
|
assert.Equal(t, http.StatusInternalServerError, w.Code)
|
||||||
|
assert.Contains(t, w.Body.String(), "server.error.internal_server_error")
|
||||||
|
|
||||||
|
mockRepo.AssertExpectations(t)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user