70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
package dev
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"dappco.re/go/core/io"
|
|
)
|
|
|
|
func TestRunTestGen_Good(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
originalWD, err := os.Getwd()
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() {
|
|
_ = os.Chdir(originalWD)
|
|
})
|
|
require.NoError(t, os.Chdir(tmpDir))
|
|
|
|
serviceDir := filepath.Join(tmpDir, "pkg", "demo")
|
|
require.NoError(t, io.Local.EnsureDir(serviceDir))
|
|
require.NoError(t, io.Local.Write(filepath.Join(serviceDir, "demo.go"), `package demo
|
|
|
|
type Example struct{}
|
|
|
|
const Answer = 42
|
|
|
|
var Value = Example{}
|
|
|
|
func Run() {}
|
|
`))
|
|
|
|
require.NoError(t, runTestGen())
|
|
|
|
generatedPath := filepath.Join(tmpDir, "demo", "demo_test.go")
|
|
content, err := io.Local.Read(generatedPath)
|
|
require.NoError(t, err)
|
|
|
|
require.Contains(t, content, `// Code generated by "core dev api test-gen"; DO NOT EDIT.`)
|
|
require.Contains(t, content, `package demo`)
|
|
require.Contains(t, content, `impl "forge.lthn.ai/core/cli/demo"`)
|
|
require.Contains(t, content, `type _ = impl.Example`)
|
|
require.Contains(t, content, `const _ = impl.Answer`)
|
|
require.Contains(t, content, `var _ = impl.Value`)
|
|
require.Contains(t, content, `var _ = impl.Run`)
|
|
}
|
|
|
|
func TestGeneratePublicAPITestFile_Good(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
require.NoError(t, generatePublicAPITestFile(
|
|
filepath.Join(tmpDir, "demo"),
|
|
filepath.Join(tmpDir, "demo", "demo_test.go"),
|
|
"demo",
|
|
[]symbolInfo{
|
|
{Name: "Example", Kind: "type"},
|
|
{Name: "Answer", Kind: "const"},
|
|
},
|
|
))
|
|
|
|
content, err := io.Local.Read(filepath.Join(tmpDir, "demo", "demo_test.go"))
|
|
require.NoError(t, err)
|
|
|
|
require.True(t, strings.Contains(content, `type _ = impl.Example`))
|
|
require.True(t, strings.Contains(content, `const _ = impl.Answer`))
|
|
}
|