Files
kubevela/references/cli/top/model/stack_test.go
Siege Lion 4d3ef75601 Feat: Add a new CLI command: vela top which can display system information and resource status in UI form (#4556)
* Feat: UI sketch init

Signed-off-by: HanMengnan <1448189829@qq.com>

* Feat: Resource data load finish

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: optimize code struct

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: add test case and fix some bugs
1. add test case to package model
2. fix a bug of ListClusters
3. optimize code structure

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: fix go.mod package version

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: fix some bugs and optimize code structure

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: fix irregular code and add comments

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: supplement test cases and fix bugs

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: move the `vela status --ui` command out and add it as a new command `vela top`

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: fix package import sequence and go.mod

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: add copyright header

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: update description and example of command `vela top`

Signed-off-by: HanMengnan <1448189829@qq.com>

* Fix: convert color variables to const variables

Signed-off-by: HanMengnan <1448189829@qq.com>
2022-08-09 10:56:22 +08:00

59 lines
1.5 KiB
Go

/*
Copyright 2022 The KubeVela Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package model
import (
"testing"
"github.com/rivo/tview"
"github.com/stretchr/testify/assert"
)
type mockListener struct{}
func (l *mockListener) StackPop(_ Component, _ Component) {}
func (l *mockListener) StackPush(_ Component) {}
type mockComponent struct {
tview.Primitive
}
func (c *mockComponent) Init() {}
func (c *mockComponent) Name() string {
return ""
}
func (c *mockComponent) Start() {}
func (c *mockComponent) Stop() {}
func (c *mockComponent) Hint() []MenuHint {
return []MenuHint{}
}
func TestStack(t *testing.T) {
stack := NewStack()
assert.Equal(t, stack.Empty(), true)
l := &mockListener{}
stack.AddListener(l)
c := &mockComponent{}
stack.PushComponent(c)
assert.Equal(t, stack.IsLastComponent(), true)
assert.Equal(t, stack.TopComponent(), c)
stack.PopComponent()
assert.Equal(t, stack.Empty(), true)
stack.RemoveListener(l)
assert.Equal(t, len(stack.listeners), 0)
}