...

Source file src/sigs.k8s.io/cli-utils/pkg/apply/task/printer_adapter_test.go

Documentation: sigs.k8s.io/cli-utils/pkg/apply/task

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package task
     5  
     6  import (
     7  	"bytes"
     8  	"sync"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
    13  	"sigs.k8s.io/cli-utils/pkg/apply/event"
    14  )
    15  
    16  func TestKubectlPrinterAdapter(t *testing.T) {
    17  	ch := make(chan event.Event)
    18  	buffer := bytes.Buffer{}
    19  	operation := "serverside-applied"
    20  
    21  	adapter := KubectlPrinterAdapter{
    22  		ch:        ch,
    23  		groupName: "test-0",
    24  	}
    25  
    26  	toPrinterFunc := adapter.toPrinterFunc()
    27  	resourcePrinter, err := toPrinterFunc(operation)
    28  	assert.NoError(t, err)
    29  
    30  	deployment := &unstructured.Unstructured{
    31  		Object: map[string]interface{}{
    32  			"apiVersion": "apps/v1",
    33  			"kind":       "Deployment",
    34  			"metadata": map[string]interface{}{
    35  				"name":      "name",
    36  				"namespace": "namespace",
    37  			},
    38  		},
    39  	}
    40  
    41  	// Need to run this in a separate gorutine since go channels
    42  	// are blocking.
    43  	var wg sync.WaitGroup
    44  	wg.Add(1)
    45  	go func() {
    46  		defer wg.Done()
    47  		err = resourcePrinter.PrintObj(deployment, &buffer)
    48  	}()
    49  	msg := <-ch
    50  	wg.Wait()
    51  
    52  	assert.NoError(t, err)
    53  	assert.Equal(t, event.ApplySuccessful, msg.ApplyEvent.Status)
    54  	assert.Equal(t, deployment, msg.ApplyEvent.Resource)
    55  }
    56  

View as plain text