mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-01-07 09:17:26 -08:00
147 lines
4.3 KiB
Go
147 lines
4.3 KiB
Go
package segments
|
|
|
|
import (
|
|
"fmt"
|
|
"oh-my-posh/environment"
|
|
"oh-my-posh/mock"
|
|
"oh-my-posh/properties"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestCdsSegment(t *testing.T) {
|
|
cases := []struct {
|
|
Case string
|
|
ExpectedString string
|
|
ExpectedEnabled bool
|
|
File string
|
|
Template string
|
|
Version string
|
|
PackageJSON string
|
|
DisplayMode string
|
|
}{
|
|
{
|
|
Case: "1) cds 5.5.0 - file .cdsrc.json present",
|
|
ExpectedString: "5.5.0",
|
|
ExpectedEnabled: true,
|
|
File: ".cdsrc.json",
|
|
Version: "@sap/cds: 5.5.0\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
DisplayMode: DisplayModeFiles,
|
|
},
|
|
{
|
|
Case: "2) cds 5.5.1 - file some.cds",
|
|
ExpectedString: "5.5.1",
|
|
ExpectedEnabled: true,
|
|
File: "some.cds",
|
|
Version: "@sap/cds: 5.5.1\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
DisplayMode: DisplayModeFiles,
|
|
},
|
|
{
|
|
Case: "3) cds 5.5.2 - no files",
|
|
ExpectedString: "",
|
|
ExpectedEnabled: false,
|
|
DisplayMode: DisplayModeFiles,
|
|
},
|
|
{
|
|
Case: "4) cds 5.5.3 - package.json dependency",
|
|
ExpectedString: "5.5.3",
|
|
ExpectedEnabled: true,
|
|
Version: "@sap/cds: 5.5.3\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
PackageJSON: "{ \"name\": \"my-app\",\"dependencies\": { \"@sap/cds\": \"^5\" } }",
|
|
DisplayMode: DisplayModeContext,
|
|
},
|
|
{
|
|
Case: "4) cds 5.5.4 - package.json dependency, major + minor",
|
|
ExpectedString: "5.5",
|
|
ExpectedEnabled: true,
|
|
Template: "{{ .Major }}.{{ .Minor }}",
|
|
Version: "@sap/cds: 5.5.4\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
PackageJSON: "{ \"name\": \"my-app\",\"dependencies\": { \"@sap/cds\": \"^5\" } }",
|
|
DisplayMode: DisplayModeContext,
|
|
},
|
|
{
|
|
Case: "5) cds 5.5.5 - package.json present, no dependency, no files",
|
|
ExpectedString: "",
|
|
ExpectedEnabled: false,
|
|
Version: "@sap/cds: 5.5.5\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
PackageJSON: "{ \"name\": \"my-app\",\"dependencies\": { \"@sap/some\": \"^5\" } }",
|
|
DisplayMode: DisplayModeContext,
|
|
},
|
|
{
|
|
Case: "6) cds 5.5.9 - display always",
|
|
ExpectedString: "5.5.9",
|
|
ExpectedEnabled: true,
|
|
Version: "@sap/cds: 5.5.9\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
PackageJSON: "{ \"name\": \"my-app\",\"dependencies\": { \"@sap/cds\": \"^5\" } }",
|
|
DisplayMode: DisplayModeAlways,
|
|
},
|
|
{
|
|
Case: "7) cds 5.5.9 - package.json, no dependencies section",
|
|
ExpectedString: "",
|
|
ExpectedEnabled: false,
|
|
Version: "@sap/cds: 5.5.9\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
PackageJSON: "{ \"name\": \"my-app\" }",
|
|
DisplayMode: DisplayModeContext,
|
|
},
|
|
{
|
|
Case: "8) cds 5.5.0 - file .cdsrc-private.json present",
|
|
ExpectedString: "5.5.0",
|
|
ExpectedEnabled: true,
|
|
File: ".cdsrc-private.json",
|
|
Version: "@sap/cds: 5.5.0\n@sap/cds-compiler: 2.7.0\n@sap/cds-dk: 4.5.3",
|
|
DisplayMode: DisplayModeFiles,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
var env = new(mock.MockedEnvironment)
|
|
env.On("HasCommand", "cds").Return(true)
|
|
env.On("RunCommand", "cds", []string{"--version"}).Return(tc.Version, nil)
|
|
env.On("Pwd").Return("/usr/home/dev/my-app")
|
|
env.On("Home").Return("/usr/home")
|
|
|
|
if tc.PackageJSON != "" {
|
|
env.On("HasFiles", "package.json").Return(true)
|
|
env.On("FileContent", "package.json").Return(tc.PackageJSON)
|
|
} else {
|
|
env.On("HasFiles", "package.json").Return(false)
|
|
}
|
|
|
|
cds := &Cds{}
|
|
|
|
props := properties.Map{
|
|
"display_mode": tc.DisplayMode,
|
|
}
|
|
|
|
env.On("TemplateCache").Return(&environment.TemplateCache{
|
|
Env: make(map[string]string),
|
|
})
|
|
|
|
if tc.Template == "" {
|
|
tc.Template = cds.Template()
|
|
}
|
|
|
|
if tc.DisplayMode == "" {
|
|
tc.DisplayMode = DisplayModeContext
|
|
}
|
|
|
|
cds.Init(props, env)
|
|
|
|
for _, f := range cds.language.extensions {
|
|
match, err := filepath.Match(f, tc.File)
|
|
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
env.On("HasFiles", f).Return(match)
|
|
}
|
|
|
|
failMsg := fmt.Sprintf("Failed in case: %s", tc.Case)
|
|
assert.Equal(t, tc.ExpectedEnabled, cds.Enabled(), failMsg)
|
|
assert.Equal(t, tc.ExpectedString, renderTemplate(env, tc.Template, cds), failMsg)
|
|
}
|
|
}
|