package message

import (
	"errors"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestCreateAPPBoxReq_Validate(t *testing.T) {
	tests := []struct {
		name string
		req  *CreateAPPBoxReq
		err  error
	}{
		{
			name: "Valid request",
			req: &CreateAPPBoxReq{
				VPCID:     "vpc-123",
				TenantID:  "tenant-123",
				ProjectID: "project-123",
				Name:      "appbox-1",
				Namespace: "default",
			},
			err: nil,
		},
		{
			name: "Missing VPC ID",
			req: &CreateAPPBoxReq{
				TenantID:  "tenant-123",
				ProjectID: "project-123",
			},
			err: errors.New("vpc id is required"),
		},
		{
			name: "Missing Name",
			req: &CreateAPPBoxReq{
				VPCID:     "vpc-123",
				TenantID:  "tenant-123",
				ProjectID: "project-123",
			},
			err: errors.New("name is required"),
		},
		{
			name: "Missing Namespace",
			req: &CreateAPPBoxReq{
				VPCID:     "vpc-123",
				Name:      "appbox-1",
				TenantID:  "tenant-123",
				ProjectID: "project-123",
			},
			err: errors.New("namespace is required"),
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			err := tt.req.Validate()
			assert.Equal(t, tt.err, err)
		})
	}
}
