package unstructured import ( "testing" "github.com/stretchr/testify/assert" "sigs.k8s.io/controller-runtime/pkg/client" "edge-infra.dev/pkg/k8s/object/fobject" v1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func obj() *v1.Deployment { return &v1.Deployment{ ObjectMeta: metav1.ObjectMeta{Name: "lovely-deploy", Namespace: "heaven"}, Spec: v1.DeploymentSpec{}, Status: v1.DeploymentStatus{ Replicas: 3, }, } } func TestToUnstructured(t *testing.T) { a := assert.New(t) o := obj() u, err := ToUnstructured(o) a.NoError(err) a.EqualValues(u.GroupVersionKind(), o.GroupVersionKind()) a.Equal(o.Name, u.GetName()) a.Equal(o.Namespace, u.GetNamespace()) } func TestToUnstructuredList(t *testing.T) { a := assert.New(t) o := obj() ul, err := ToUnstructuredList(o) a.NoError(err) u := ul.Items[0] a.NotNil(u) a.EqualValues(u.GroupVersionKind(), o.GroupVersionKind()) a.Equal(o.Name, u.GetName()) a.Equal(o.Namespace, u.GetNamespace()) } func TestUnmarshalField(t *testing.T) { a := assert.New(t) o := obj() u, err := ToUnstructured(o) a.NoError(err) replicas := 0 a.NoError(UnmarshalField(u, &replicas, "status", "replicas")) a.Equal(replicas, 3) } func TestToClientObjArray(t *testing.T) { objs := []client.Object{ &fobject.Fake{ TypeMeta: metav1.TypeMeta{Kind: "Fake"}, ObjectMeta: metav1.ObjectMeta{Name: "special-child", Namespace: "special-home"}, }, &fobject.Fake{ TypeMeta: metav1.TypeMeta{Kind: "Fake"}, ObjectMeta: metav1.ObjectMeta{Name: "specialer-child"}, }, } uobjs, err := ToUnstructuredArray(objs...) if err != nil { t.Error(err) } objs2 := ToClientObjArray(uobjs...) if len(objs2) != 2 { t.Error("incorrect length of result array", "expected", 2, "actual", len(objs2)) } if objs2 == nil { t.Error("result array is nil") } }