go-build/pkg/sdk/diff_test.go
Virgil 7aa4e5486d chore(ax): finish v0.8.0 polish pass
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 17:41:53 +00:00

101 lines
1.9 KiB
Go

package sdk
import (
"testing"
"dappco.re/go/core/build/internal/ax"
)
func TestDiff_NoBreaking_Good(t *testing.T) {
tmpDir := t.TempDir()
baseSpec := `openapi: "3.0.0"
info:
title: Test API
version: "1.0.0"
paths:
/health:
get:
operationId: getHealth
responses:
"200":
description: OK
`
revSpec := `openapi: "3.0.0"
info:
title: Test API
version: "1.1.0"
paths:
/health:
get:
operationId: getHealth
responses:
"200":
description: OK
/status:
get:
operationId: getStatus
responses:
"200":
description: OK
`
basePath := ax.Join(tmpDir, "base.yaml")
revPath := ax.Join(tmpDir, "rev.yaml")
_ = ax.WriteFile(basePath, []byte(baseSpec), 0644)
_ = ax.WriteFile(revPath, []byte(revSpec), 0644)
result, err := Diff(basePath, revPath)
if err != nil {
t.Fatalf("Diff failed: %v", err)
}
if result.Breaking {
t.Error("expected no breaking changes for adding endpoint")
}
}
func TestDiff_Breaking_Good(t *testing.T) {
tmpDir := t.TempDir()
baseSpec := `openapi: "3.0.0"
info:
title: Test API
version: "1.0.0"
paths:
/health:
get:
operationId: getHealth
responses:
"200":
description: OK
/users:
get:
operationId: getUsers
responses:
"200":
description: OK
`
revSpec := `openapi: "3.0.0"
info:
title: Test API
version: "2.0.0"
paths:
/health:
get:
operationId: getHealth
responses:
"200":
description: OK
`
basePath := ax.Join(tmpDir, "base.yaml")
revPath := ax.Join(tmpDir, "rev.yaml")
_ = ax.WriteFile(basePath, []byte(baseSpec), 0644)
_ = ax.WriteFile(revPath, []byte(revSpec), 0644)
result, err := Diff(basePath, revPath)
if err != nil {
t.Fatalf("Diff failed: %v", err)
}
if !result.Breaking {
t.Error("expected breaking change for removed endpoint")
}
}