package binding

import (
	"testing"

	"github.com/gin-gonic/gin"
	"github.com/stretchr/testify/require"
)

func TestWorkflowBindingRoutesExposeCompleteReversibleLifecycle(t *testing.T) {
	gin.SetMode(gin.TestMode)
	router := gin.New()
	RegisterRoutes(router, Dependencies{Service: &fakeBindingService{}})

	got := make([]string, 0)
	for _, route := range router.Routes() {
		got = append(got, route.Method+" "+route.Path)
	}
	require.ElementsMatch(t, []string{
		"GET /api/v1/workspaces/:workspaceId/workflow/bindings",
		"POST /api/v1/workspaces/:workspaceId/workflow/bindings",
		"POST /api/v1/workspaces/:workspaceId/workflow/bindings:validate",
		"GET /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId",
		"PATCH /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId",
		"POST /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId/disable",
		"POST /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId/archive",
		"POST /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId/restore",
		"POST /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId/revisions",
		"GET /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId/revisions",
		"GET /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId/revisions/:revision",
		"POST /api/v1/workspaces/:workspaceId/workflow/bindings/:bindingId/revisions/:revision/activate",
	}, got)
	for _, route := range got {
		require.NotContains(t, route, "DELETE")
	}
}
