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`)) }