Tests: Membership controller

This commit is contained in:
Alex
2025-02-12 10:12:30 +01:00
parent 2fdb484451
commit 861d029ce5
7 changed files with 110 additions and 30 deletions

View File

@@ -6,7 +6,7 @@ import (
"net/http/httptest"
"testing"
"GoMembership/internal/config"
"GoMembership/internal/constants"
"GoMembership/internal/models"
"GoMembership/pkg/logger"
@@ -21,8 +21,29 @@ type RegisterSubscriptionTest struct {
Assert bool
}
type MockUserController struct {
UserController // Embed the UserController
}
func (m *MockUserController) ExtractUserFromContext(c *gin.Context) (*models.User, error) {
return &models.User{
ID: 1,
FirstName: "Admin",
LastName: "User",
Email: "admin@test.com",
RoleID: constants.Roles.Admin,
}, nil
}
func setupMockAuth() {
// Create and assign the mock controller
mockController := &MockUserController{}
Mc.UserController = mockController
}
func testMembershipController(t *testing.T) {
setupMockAuth()
tests := getSubscriptionData()
for _, tt := range tests {
logger.Error.Print("==============================================================")
@@ -68,8 +89,8 @@ func validateSubscription(assert bool, wantDBData map[string]interface{}) error
func getBaseSubscription() MembershipData {
return MembershipData{
APIKey: config.Auth.APIKEY,
Model: models.SubscriptionModel{
// APIKey: config.Auth.APIKEY,
Subscription: models.SubscriptionModel{
Name: "Premium",
Details: "A subscription detail",
MonthlyFee: 12.0,
@@ -91,7 +112,7 @@ func getSubscriptionData() []RegisterSubscriptionTest {
Assert: false,
Input: GenerateInputJSON(
customizeSubscription(func(subscription MembershipData) MembershipData {
subscription.Model.Details = ""
subscription.Subscription.Details = ""
return subscription
})),
},
@@ -102,7 +123,7 @@ func getSubscriptionData() []RegisterSubscriptionTest {
Assert: false,
Input: GenerateInputJSON(
customizeSubscription(func(subscription MembershipData) MembershipData {
subscription.Model.Name = ""
subscription.Subscription.Name = ""
return subscription
})),
},
@@ -112,7 +133,7 @@ func getSubscriptionData() []RegisterSubscriptionTest {
WantDBData: map[string]interface{}{"name": "Premium"},
Assert: false,
Input: GenerateInputJSON(customizeSubscription(func(sub MembershipData) MembershipData {
sub.Model.MonthlyFee = -10.0
sub.Subscription.MonthlyFee = -10.0
return sub
})),
},
@@ -122,7 +143,7 @@ func getSubscriptionData() []RegisterSubscriptionTest {
WantDBData: map[string]interface{}{"name": "Premium"},
Assert: false,
Input: GenerateInputJSON(customizeSubscription(func(sub MembershipData) MembershipData {
sub.Model.HourlyRate = -1.0
sub.Subscription.HourlyRate = -1.0
return sub
})),
},
@@ -133,9 +154,9 @@ func getSubscriptionData() []RegisterSubscriptionTest {
Assert: true,
Input: GenerateInputJSON(
customizeSubscription(func(subscription MembershipData) MembershipData {
subscription.Model.Conditions = "Some Condition"
subscription.Model.IncludedPerYear = 0
subscription.Model.IncludedPerMonth = 1
subscription.Subscription.Conditions = "Some Condition"
subscription.Subscription.IncludedPerYear = 0
subscription.Subscription.IncludedPerMonth = 1
return subscription
})),
},