Files
kubevela/references/cli/show_test.go
Jianbo Sun dd222ac876 refactor cli/dashboard/apiserver to reference folder (#1084)
* refactor cli/dashboard/apiserver to reference folder

* address comments
2021-02-23 13:03:38 +08:00

190 lines
4.4 KiB
Go

package cli
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/crossplane/crossplane-runtime/pkg/test"
"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
"github.com/oam-dev/kubevela/apis/types"
"github.com/oam-dev/kubevela/references/plugins"
)
const BaseDir = "testdata"
var TestDir = filepath.Join(BaseDir, "show")
func TestCreateTestDir(t *testing.T) {
if _, err := os.Stat(TestDir); err != nil && os.IsNotExist(err) {
err := os.MkdirAll(TestDir, 0750)
assert.NoError(t, err)
}
}
func TestGenerateSideBar(t *testing.T) {
workloadName := "workload1"
traitName := "trait1"
cases := map[string]struct {
reason string
capabilities []types.Capability
want error
}{
"WorkloadTypeAndTraitCapability": {
reason: "valid capabilities",
capabilities: []types.Capability{
{
Name: workloadName,
Type: types.TypeWorkload,
},
{
Name: traitName,
Type: types.TypeTrait,
},
},
want: nil,
},
}
for name, tc := range cases {
t.Run(name, func(t *testing.T) {
got := generateSideBar(tc.capabilities, TestDir)
if diff := cmp.Diff(tc.want, got, test.EquateErrors()); diff != "" {
t.Errorf("\n%s\ngenerateSideBar(...): -want error, +got error:\n%s", tc.reason, diff)
}
data, err := ioutil.ReadFile(filepath.Clean(filepath.Join(TestDir, SideBar)))
assert.NoError(t, err)
for _, c := range tc.capabilities {
assert.Contains(t, string(data), c.Name)
}
})
}
}
func TestGenerateNavBar(t *testing.T) {
assert.NoError(t, generateNavBar(TestDir))
_, err := os.Stat(filepath.Clean(filepath.Join(TestDir, NavBar)))
assert.NoError(t, err)
}
func TestGenerateIndexHTML(t *testing.T) {
assert.NoError(t, generateIndexHTML(TestDir))
_, err := os.Stat(filepath.Clean(filepath.Join(TestDir, IndexHTML)))
assert.NoError(t, err)
}
func TestGenerateCustomCSS(t *testing.T) {
assert.NoError(t, generateCustomCSS(TestDir))
_, err := os.Stat(filepath.Clean(filepath.Join(TestDir, CSS)))
assert.NoError(t, err)
}
func TestGenerateREADME(t *testing.T) {
workloadName := "workload1"
traitName := "trait1"
cases := map[string]struct {
reason string
capabilities []types.Capability
want error
}{
"WorkloadTypeAndTraitCapability": {
reason: "valid capabilities",
capabilities: []types.Capability{
{
Name: workloadName,
Type: types.TypeWorkload,
},
{
Name: traitName,
Type: types.TypeTrait,
},
},
want: nil,
},
}
for name, tc := range cases {
t.Run(name, func(t *testing.T) {
got := generateREADME(tc.capabilities, TestDir)
if diff := cmp.Diff(tc.want, got, test.EquateErrors()); diff != "" {
t.Errorf("\n%s\ngenerateREADME(...): -want error, +got error:\n%s", tc.reason, diff)
}
data, err := ioutil.ReadFile(filepath.Clean(filepath.Join(TestDir, README)))
assert.NoError(t, err)
for _, c := range tc.capabilities {
switch c.Type {
case types.TypeWorkload:
assert.Contains(t, string(data), fmt.Sprintf(" - [%s](%s/%s.md)\n", c.Name, plugins.WorkloadTypePath, c.Name))
case types.TypeTrait:
assert.Contains(t, string(data), fmt.Sprintf(" - [%s](%s/%s.md)\n", c.Name, plugins.TraitPath, c.Name))
}
}
})
}
}
func TestGetWorkloadAndTraits(t *testing.T) {
type want struct {
workloads []string
traits []string
}
workloadName := "workload1"
traitName := "trait1"
scopeName := "scope1"
cases := map[string]struct {
reason string
capabilities []types.Capability
want want
}{
"WorkloadTypeAndTraitCapability": {
reason: "valid capabilities",
capabilities: []types.Capability{
{
Name: workloadName,
Type: types.TypeWorkload,
},
{
Name: traitName,
Type: types.TypeTrait,
},
},
want: want{
workloads: []string{workloadName},
traits: []string{traitName},
},
},
"ScopeTypeCapability": {
reason: "invalid capabilities",
capabilities: []types.Capability{
{
Name: scopeName,
Type: types.TypeScope,
},
},
want: want{
workloads: nil,
traits: nil,
},
},
}
for name, tc := range cases {
t.Run(name, func(t *testing.T) {
gotWorkloads, gotTraits := getWorkloadsAndTraits(tc.capabilities)
assert.Equal(t, tc.want, want{workloads: gotWorkloads, traits: gotTraits})
})
}
}
func TestDeleteTestDir(t *testing.T) {
if _, err := os.Stat(BaseDir); err == nil {
err := os.RemoveAll(BaseDir)
assert.NoError(t, err)
}
}