package appbox

import (
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
)

func Test_isNotReadyAPPBox(t *testing.T) {
	cases := []struct {
		name     string
		peering  *v1alpha1.APPBox
		expected bool
	}{
		{
			name: "not ready",
			peering: &v1alpha1.APPBox{
				Status: v1alpha1.APPBoxStatus{
					Phase: v1alpha1.APPBoxPhaseCreating,
				},
			},
			expected: true,
		},
		{
			name: "ready",
			peering: &v1alpha1.APPBox{
				Status: v1alpha1.APPBoxStatus{
					Phase: v1alpha1.APPBoxPhaseActive,
				},
			},
			expected: false,
		},
		{
			name: "deleting",
			peering: &v1alpha1.APPBox{
				Status: v1alpha1.APPBoxStatus{
					Phase: v1alpha1.APPBoxPhaseDeleting,
				},
			},
			expected: false,
		},
		{
			name: "empty",
			peering: &v1alpha1.APPBox{
				Status: v1alpha1.APPBoxStatus{
					Phase: "",
				},
			},
			expected: true,
		},
		{
			name: "pending",
			peering: &v1alpha1.APPBox{
				Status: v1alpha1.APPBoxStatus{
					Phase: v1alpha1.APPBoxPhasePending,
				},
			},
			expected: true,
		},
	}

	for _, tc := range cases {
		t.Run(tc.name, func(t *testing.T) {
			assert.Equal(t, tc.expected, isNotReadyAPPBox(tc.peering))
		})
	}
}
