oh-my-posh/src/segments/quasar_test.go
2023-08-25 12:09:54 +02:00

87 lines
2.7 KiB
Go

package segments
import (
"fmt"
"path/filepath"
"testing"
"github.com/alecthomas/assert"
"github.com/jandedobbeleer/oh-my-posh/src/mock"
"github.com/jandedobbeleer/oh-my-posh/src/platform"
"github.com/jandedobbeleer/oh-my-posh/src/properties"
mock2 "github.com/stretchr/testify/mock"
)
func TestQuasar(t *testing.T) {
packageLockFile := `{
"name": "quasar-project",
"version": "0.0.1",
"lockfileVersion": 2,
"requires": true,
"dependencies": {
"@quasar/app-vite": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.4.3.tgz",
"integrity": "sha512-5iMs1sk6fyYTFoRVySwFXWL/PS23UEsdk+YSFejhXnSs5fVDmb2GQMguCHwDl3jPIHjZ7A+XKkb2iWx9pjiPXw==",
"dev": true
},
"vite": {
"version": "2.9.16",
"resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz",
"integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==",
"dev": true,
"requires": {
"esbuild": "^0.14.27",
"fsevents": "~2.3.2",
"postcss": "^8.4.13",
"resolve": "^1.22.0",
"rollup": ">=2.59.0 <2.78.0"
}
}
}
}`
cases := []struct {
Case string
ExpectedString string
Version string
HasPackageLockFile bool
FetchDependencies bool
}{
{Case: "@quasar/cli v2.2.1", ExpectedString: "\uea6a 2.2.1", Version: "@quasar/cli v2.2.1"},
{
Case: "@quasar/cli v2.2.1 with vite",
Version: "@quasar/cli v2.2.1",
HasPackageLockFile: true,
FetchDependencies: true,
ExpectedString: "\uea6a 2.2.1 \ueb29 2.9.16",
},
}
for _, tc := range cases {
env := new(mock.MockedEnvironment)
env.On("HasCommand", "quasar").Return(true)
env.On("RunCommand", "quasar", []string{"--version"}).Return(tc.Version, nil)
env.On("Pwd").Return("/usr/home/project")
env.On("Home").Return("/usr/home")
env.On("DebugF", mock2.Anything, mock2.Anything).Return(nil)
env.On("TemplateCache").Return(&platform.TemplateCache{
Env: make(map[string]string),
})
env.On("HasFilesInDir", "/usr/home/project", "package-lock.json").Return(tc.HasPackageLockFile)
fileInfo := &platform.FileInfo{ParentFolder: "/usr/home/project", IsDir: true}
env.On("HasParentFilePath", "quasar.config").Return(fileInfo, nil)
env.On("FileContent", filepath.Join(fileInfo.ParentFolder, "package-lock.json")).Return(packageLockFile)
props := properties.Map{
properties.FetchVersion: true,
FetchDependencies: tc.FetchDependencies,
}
quasar := &Quasar{}
quasar.Init(props, env)
assert.True(t, quasar.Enabled(), fmt.Sprintf("Failed in case: %s", tc.Case))
assert.Equal(t, tc.ExpectedString, renderTemplate(env, quasar.Template(), quasar), fmt.Sprintf("Failed in case: %s", tc.Case))
}
}