...
1
16
17 package printers
18
19 import (
20 "fmt"
21 "reflect"
22 "testing"
23
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25 metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
26 "k8s.io/apimachinery/pkg/runtime"
27 "k8s.io/apimachinery/pkg/runtime/schema"
28 )
29
30 type TestPrintType struct {
31 Data string
32 }
33
34 func (obj *TestPrintType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
35 func (obj *TestPrintType) DeepCopyObject() runtime.Object {
36 if obj == nil {
37 return nil
38 }
39 clone := *obj
40 return &clone
41 }
42
43 func PrintCustomType(obj *TestPrintType, options GenerateOptions) ([]metav1beta1.TableRow, error) {
44 return []metav1beta1.TableRow{{Cells: []interface{}{obj.Data}}}, nil
45 }
46
47 func ErrorPrintHandler(obj *TestPrintType, options GenerateOptions) ([]metav1beta1.TableRow, error) {
48 return nil, fmt.Errorf("ErrorPrintHandler error")
49 }
50
51 func TestCustomTypePrinting(t *testing.T) {
52 columns := []metav1beta1.TableColumnDefinition{{Name: "Data"}}
53 generator := NewTableGenerator()
54 err := generator.TableHandler(columns, PrintCustomType)
55 if err != nil {
56 t.Fatalf("An error occurred when adds a print handler with a given set of columns: %#v", err)
57 }
58
59 obj := TestPrintType{"test object"}
60 table, err := generator.GenerateTable(&obj, GenerateOptions{})
61 if err != nil {
62 t.Fatalf("An error occurred generating the table for custom type: %#v", err)
63 }
64
65 expectedTable := &metav1.Table{
66 ColumnDefinitions: []metav1.TableColumnDefinition{{Name: "Data"}},
67 Rows: []metav1.TableRow{{Cells: []interface{}{"test object"}}},
68 }
69 if !reflect.DeepEqual(expectedTable, table) {
70 t.Errorf("Error generating table from custom type. Expected (%#v), got (%#v)", expectedTable, table)
71 }
72 }
73
74 func TestPrintHandlerError(t *testing.T) {
75 columns := []metav1beta1.TableColumnDefinition{{Name: "Data"}}
76 generator := NewTableGenerator()
77 err := generator.TableHandler(columns, ErrorPrintHandler)
78 if err != nil {
79 t.Fatalf("An error occurred when adds a print handler with a given set of columns: %#v", err)
80 }
81
82 obj := TestPrintType{"test object"}
83 _, err = generator.GenerateTable(&obj, GenerateOptions{})
84 if err == nil || err.Error() != "ErrorPrintHandler error" {
85 t.Errorf("Did not get the expected error: %#v", err)
86 }
87 }
88
View as plain text