github.com/cloudfoundry/cli@v7.1.0+incompatible/util/ui/table_test.go (about)

     1  package ui_test
     2  
     3  import (
     4  	"strings"
     5  
     6  	"code.cloudfoundry.org/cli/util/configv3"
     7  	. "code.cloudfoundry.org/cli/util/ui"
     8  	"code.cloudfoundry.org/cli/util/ui/uifakes"
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  	. "github.com/onsi/gomega/gbytes"
    12  )
    13  
    14  var _ = Describe("Table", func() {
    15  	var (
    16  		ui         *UI
    17  		fakeConfig *uifakes.FakeConfig
    18  		out        *Buffer
    19  		errBuff    *Buffer
    20  	)
    21  
    22  	BeforeEach(func() {
    23  		fakeConfig = new(uifakes.FakeConfig)
    24  		fakeConfig.ColorEnabledReturns(configv3.ColorEnabled)
    25  
    26  		var err error
    27  		ui, err = NewUI(fakeConfig)
    28  		Expect(err).NotTo(HaveOccurred())
    29  
    30  		out = NewBuffer()
    31  		ui.Out = out
    32  		ui.OutForInteration = out
    33  		errBuff = NewBuffer()
    34  		ui.Err = errBuff
    35  	})
    36  
    37  	Describe("DisplayKeyValueTable", func() {
    38  		JustBeforeEach(func() {
    39  			ui.DisplayKeyValueTable(" ",
    40  				[][]string{
    41  					{"wut0:", ""},
    42  					{"wut1:", "hi hi"},
    43  					nil,
    44  					[]string{},
    45  					{"wut2:", strings.Repeat("a", 9)},
    46  					{"wut3:", "hi hi " + strings.Repeat("a", 9)},
    47  					{"wut4:", strings.Repeat("a", 15) + " " + strings.Repeat("b", 15)},
    48  				},
    49  				2)
    50  		})
    51  
    52  		Context("in a TTY", func() {
    53  			BeforeEach(func() {
    54  				ui.IsTTY = true
    55  				ui.TerminalWidth = 20
    56  			})
    57  
    58  			It("displays a table with the last column wrapping according to width", func() {
    59  				Expect(out).To(Say(" wut0:  \n"))
    60  				Expect(out).To(Say(" wut1:  hi hi\n"))
    61  				Expect(out).To(Say(" wut2:  %s\n", strings.Repeat("a", 9)))
    62  				Expect(out).To(Say(" wut3:  hi hi\n"))
    63  				Expect(out).To(Say("        %s\n", strings.Repeat("a", 9)))
    64  				Expect(out).To(Say(" wut4:  %s\n", strings.Repeat("a", 15)))
    65  				Expect(out).To(Say("        %s\n", strings.Repeat("b", 15)))
    66  			})
    67  		})
    68  	})
    69  
    70  	Describe("DisplayTableWithHeader", func() {
    71  		It("makes the first row bold", func() {
    72  			ui.DisplayTableWithHeader(" ",
    73  				[][]string{
    74  					{"", "header1", "header2", "header3"},
    75  					{"#0", "data1", "data2", "data3"},
    76  				},
    77  				2)
    78  			Expect(out).To(Say("    \x1b\\[1mheader1\x1b\\[0m")) // Makes sure empty values are not bolded
    79  			Expect(out).To(Say("\x1b\\[1mheader2\x1b\\[0m"))
    80  			Expect(out).To(Say("\x1b\\[1mheader3\x1b\\[0m"))
    81  			Expect(out).To(Say("#0  data1    data2    data3"))
    82  		})
    83  	})
    84  })