package resourcemanager

import (
	"context"
	"testing"

	"github.com/stretchr/testify/assert"
	corev1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/api/resource"
)

func Test_PVC(t *testing.T) {
	pvcName := "test-pvc"
	ns := "test-ns"
	err := pvcRW.Create(context.TODO(), ns, pvcName, "1Gi")
	assert.NoError(t, err)
	pvc, err := pvcRW.Get(context.TODO(), ns, pvcName)
	assert.NoError(t, err)
	assert.NotEmpty(t, pvc)
	request, err := resource.ParseQuantity("2Gi")
	assert.NoError(t, err)
	pvc.Spec.Resources.Requests[corev1.ResourceStorage] = request
	err = pvcRW.Update(context.TODO(), ns, pvc)
	assert.NoError(t, err)
	pvc, err = pvcRW.Get(context.TODO(), ns, pvcName)
	assert.NoError(t, err)
	quantity := pvc.Spec.Resources.Requests[corev1.ResourceStorage]
	assert.Equal(t, "2Gi", quantity.String())

	pvc, err = pvcRW.Get(context.TODO(), "wrong", pvcName)
	assert.Error(t, err)
	assert.Empty(t, pvc)
	pvc, err = pvcRW.Delete(context.TODO(), ns, pvcName)
	assert.NoError(t, err)
	quantity = pvc.Spec.Resources.Requests[corev1.ResourceStorage]
	assert.Equal(t, "2Gi", quantity.String())

	pvc, err = pvcRW.Delete(context.TODO(), ns, "pvcName")
	assert.Error(t, err)

	pvc, err = pvcRW.Get(context.TODO(), ns, pvcName)
	assert.Error(t, err)
}
