oh-my-posh/src/segments/sitecore_test.go
Bohdan Dorokhin 6e9d072b5f
feat(sitecore): support CLI context switching
BREAKING CHANGE: you will need to migrate your current sitecore segment template
 in case you have a custom one. Have a look at the documentation to see what changed.
2023-06-08 07:40:05 +02:00

163 lines
4.2 KiB
Go

package segments
import (
"path"
"testing"
"github.com/jandedobbeleer/oh-my-posh/src/mock"
"github.com/jandedobbeleer/oh-my-posh/src/properties"
"github.com/stretchr/testify/assert"
)
func TestSitecoreSegment(t *testing.T) {
cases := []struct {
Case string
ExpectedString string
ExpectedEnabled bool
SitecoreFileExists bool
UserFileExists bool
UserFileContent string
DisplayDefault bool
}{
{Case: "Disabled, no sitecore.json file and user.json file", ExpectedString: "", ExpectedEnabled: false, SitecoreFileExists: false, UserFileExists: false},
{Case: "Disabled, only sitecore.json file exists", ExpectedString: "", ExpectedEnabled: false, SitecoreFileExists: true, UserFileExists: false},
{Case: "Disabled, only user.json file exists", ExpectedString: "", ExpectedEnabled: false, SitecoreFileExists: false, UserFileExists: true},
{
Case: "Disabled, user.json is empty",
ExpectedString: "",
ExpectedEnabled: false,
SitecoreFileExists: true,
UserFileExists: true,
UserFileContent: "",
},
{
Case: "Disabled, user.json contains non-json text",
ExpectedString: "",
ExpectedEnabled: false,
SitecoreFileExists: true,
UserFileExists: true,
UserFileContent: testUserJSONNotJSONFormat,
},
{
Case: "Disabled with default endpoint",
ExpectedString: "default",
ExpectedEnabled: false,
SitecoreFileExists: true,
UserFileExists: true,
UserFileContent: testUserJSONOnlyDefaultEnv,
DisplayDefault: false,
},
{
Case: "Enabled, user.json initial state",
ExpectedString: "default",
ExpectedEnabled: true,
SitecoreFileExists: true,
UserFileExists: true,
UserFileContent: testUserJSONDefaultEmpty,
DisplayDefault: true,
},
{
Case: "Enabled, user.json with custom default endpoint and without endpoints",
ExpectedString: "MySuperEnv",
ExpectedEnabled: true,
SitecoreFileExists: true,
UserFileExists: true,
UserFileContent: testUserJSONCustomDefaultEnvWithoutEndpoints,
},
{
Case: "Enabled, user.json with custom default endpoint and configured endpoints",
ExpectedString: "myEnv (https://host.com)",
ExpectedEnabled: true,
SitecoreFileExists: true,
UserFileExists: true,
UserFileContent: testUserJSONCustomDefaultEnv,
},
{
Case: "Enabled, user.json with custom default endpoint and empty host",
ExpectedString: "envWithEmptyHost",
ExpectedEnabled: true,
SitecoreFileExists: true,
UserFileExists: true,
UserFileContent: testUserJSONCustomDefaultEnvAndEmptyHost,
},
}
for _, tc := range cases {
env := new(mock.MockedEnvironment)
env.On("HasFiles", "sitecore.json").Return(tc.SitecoreFileExists)
env.On("HasFiles", path.Join(".sitecore", "user.json")).Return(tc.UserFileExists)
env.On("FileContent", path.Join(".sitecore", "user.json")).Return(tc.UserFileContent)
props := properties.Map{
properties.DisplayDefault: tc.DisplayDefault,
}
sitecore := &Sitecore{}
sitecore.Init(props, env)
assert.Equal(t, tc.ExpectedEnabled, sitecore.Enabled(), tc.Case)
assert.Equal(t, tc.ExpectedString, renderTemplate(env, sitecore.Template(), sitecore), tc.Case)
}
}
var testUserJSONDefaultEmpty = `
{
"endpoints": {}
}`
var testUserJSONCustomDefaultEnvWithoutEndpoints = `
{
"endpoints": {},
"defaultEndpoint": "MySuperEnv"
}`
var testUserJSONCustomDefaultEnv = `
{
"endpoints": {
"myEnv": {
"host": "https://host.com"
}
},
"defaultEndpoint": "myEnv"
}`
var testUserJSONCustomDefaultEnvAndEmptyHost = `
{
"endpoints": {
"myEnv": {
"host": ""
}
},
"defaultEndpoint": "envWithEmptyHost"
}`
var testUserJSONNotJSONFormat = `
---
doe: "a deer, a female deer"
ray: "a drop of golden sun"
pi: 3.14159
xmas: true
french-hens: 3
calling-birds:
- huey
- dewey
- louie
- fred
xmas-fifth-day:
calling-birds: four
french-hens: 3
golden-rings: 5
partridges:
count: 1
location: "a pear tree"
turtle-doves: two`
var testUserJSONOnlyDefaultEnv = `
{
"endpoints": {
"default": {
"host": "https://host.com"
}
}
}`