package apps

import (
	"fmt"
	"testing"

	"github.com/kataras/iris/v12"
)

func TestSwitchJoin(t *testing.T) {
	myapp := iris.New()
	customFilter := func(ctx iris.Context) bool {
		pass, _ := ctx.URLParamBool("filter")
		return pass
	}

	joinedCases := Join{
		SwitchCase{
			Filter: customFilter,
			App:    myapp,
		},
		Hosts{{Pattern: "^test.*$", Target: myapp}},
	}

	cases := []SwitchCase{
		{
			Filter: customFilter,
			App:    myapp,
		},
		{Filter: hostFilter("^test.*$"), App: myapp},
	}

	if expected, got := fmt.Sprintf("%#+v", cases), fmt.Sprintf("%#+v", joinedCases.GetSwitchCases()); expected != got {
		t.Fatalf("join does not match with the expected slice of cases, expected:\n%s\nbut got:\n%s", expected, got)
	}

}