### Summary - Introduce a `kind` discriminator for Casting. Existing Casting without a kind field keep working, empty kind defaults to `Installation` - New `api/v1alpha1/installation/` subpackage with the Installation Casting, Spec types and holds its own JSON schema from its Go type: `installation/casting.schema.json` - New Machinery interface in `api/v1alpha1/machinery.go` exposes `Kind()` and `TrackableProperties()` so Dispatcher(Getv1alpha1 and Forge/Cast/Gauge) work across any kind without knowing its concrete type. - A root casting.schema.json lists every per-Kind schema to supports IDEs completion from one schema URL - cmd/foundryctl gen schemas reads a list of types from schemaTargets. Adding a kind means adding one entry. Related: https://github.com/SigNoz/platform-pod/issues/1970
24 lines
416 B
Go
24 lines
416 B
Go
package v1alpha1
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestMustResolveSchema(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("valid schema", func(t *testing.T) {
|
|
t.Parallel()
|
|
assert.NotNil(t, MustResolveSchema([]byte(`{"type": "object"}`)))
|
|
})
|
|
|
|
t.Run("invalid json panics", func(t *testing.T) {
|
|
t.Parallel()
|
|
assert.Panics(t, func() {
|
|
MustResolveSchema([]byte(`not json`))
|
|
})
|
|
})
|
|
}
|