Update go.mod module declaration, all require lines, and .go import paths from forge.lthn.ai to dappco.re. Dependencies updated: core v0.5.0, log v0.1.0, io v0.2.0. Replace directives added for local module resolution. forge.lthn.ai/core/cli and go-inference retained at old paths (not yet migrated). Co-Authored-By: Virgil <virgil@lethean.io>
115 lines
3.1 KiB
Go
115 lines
3.1 KiB
Go
// SPDX-Licence-Identifier: EUPL-1.2
|
|
|
|
package api
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"dappco.re/go/core/build/pkg/build"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBuildProvider_Good_Identity(t *testing.T) {
|
|
p := NewProvider(".", nil)
|
|
|
|
assert.Equal(t, "build", p.Name())
|
|
assert.Equal(t, "/api/v1/build", p.BasePath())
|
|
}
|
|
|
|
func TestBuildProvider_Good_Element(t *testing.T) {
|
|
p := NewProvider(".", nil)
|
|
el := p.Element()
|
|
|
|
assert.Equal(t, "core-build-panel", el.Tag)
|
|
assert.Equal(t, "/assets/core-build.js", el.Source)
|
|
}
|
|
|
|
func TestBuildProvider_Good_Channels(t *testing.T) {
|
|
p := NewProvider(".", nil)
|
|
channels := p.Channels()
|
|
|
|
assert.Contains(t, channels, "build.started")
|
|
assert.Contains(t, channels, "build.complete")
|
|
assert.Contains(t, channels, "build.failed")
|
|
assert.Contains(t, channels, "release.started")
|
|
assert.Contains(t, channels, "release.complete")
|
|
assert.Contains(t, channels, "sdk.generated")
|
|
assert.Len(t, channels, 6)
|
|
}
|
|
|
|
func TestBuildProvider_Good_Describe(t *testing.T) {
|
|
p := NewProvider(".", nil)
|
|
routes := p.Describe()
|
|
|
|
// Should have 9 endpoint descriptions
|
|
assert.Len(t, routes, 9)
|
|
|
|
// Verify key routes exist
|
|
paths := make(map[string]string)
|
|
for _, r := range routes {
|
|
paths[r.Path] = r.Method
|
|
}
|
|
|
|
assert.Equal(t, "GET", paths["/config"])
|
|
assert.Equal(t, "GET", paths["/discover"])
|
|
assert.Equal(t, "POST", paths["/build"])
|
|
assert.Equal(t, "GET", paths["/artifacts"])
|
|
assert.Equal(t, "GET", paths["/release/version"])
|
|
assert.Equal(t, "GET", paths["/release/changelog"])
|
|
assert.Equal(t, "POST", paths["/release"])
|
|
assert.Equal(t, "GET", paths["/sdk/diff"])
|
|
assert.Equal(t, "POST", paths["/sdk/generate"])
|
|
}
|
|
|
|
func TestBuildProvider_Good_DefaultProjectDir(t *testing.T) {
|
|
p := NewProvider("", nil)
|
|
assert.Equal(t, ".", p.projectDir)
|
|
}
|
|
|
|
func TestBuildProvider_Good_CustomProjectDir(t *testing.T) {
|
|
p := NewProvider("/tmp/myproject", nil)
|
|
assert.Equal(t, "/tmp/myproject", p.projectDir)
|
|
}
|
|
|
|
func TestBuildProvider_Good_NilHub(t *testing.T) {
|
|
p := NewProvider(".", nil)
|
|
// emitEvent should not panic with nil hub
|
|
p.emitEvent("build.started", map[string]any{"test": true})
|
|
}
|
|
|
|
func TestGetBuilder_Good_SupportedTypes(t *testing.T) {
|
|
b, err := getBuilder(build.ProjectTypeGo)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "go", b.Name())
|
|
|
|
b, err = getBuilder(build.ProjectTypeWails)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "wails", b.Name())
|
|
}
|
|
|
|
func TestGetBuilder_Bad_UnsupportedType(t *testing.T) {
|
|
_, err := getBuilder(build.ProjectType("unknown"))
|
|
assert.ErrorIs(t, err, os.ErrNotExist)
|
|
}
|
|
|
|
func TestBuildProvider_Good_ResolveDir(t *testing.T) {
|
|
p := NewProvider("/tmp", nil)
|
|
dir, err := p.resolveDir()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "/tmp", dir)
|
|
}
|
|
|
|
func TestBuildProvider_Good_ResolveDirRelative(t *testing.T) {
|
|
p := NewProvider(".", nil)
|
|
dir, err := p.resolveDir()
|
|
require.NoError(t, err)
|
|
// Should return an absolute path
|
|
assert.True(t, len(dir) > 1 && dir[0] == '/')
|
|
}
|
|
|
|
func TestBuildProvider_Good_MediumSet(t *testing.T) {
|
|
p := NewProvider(".", nil)
|
|
assert.NotNil(t, p.medium, "medium should be set to io.Local")
|
|
}
|