44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package flag
|
|
|
|
import "testing"
|
|
|
|
func TestEvaluate_GlobalEnabled(t *testing.T) {
|
|
f := Flag{Key: "k", Enabled: true}
|
|
if !evaluate(f, "irgendein-tenant") {
|
|
t.Fatal("global aktiviertes flag sollte fuer jeden tenant true liefern")
|
|
}
|
|
}
|
|
|
|
// Akzeptanzkriterium 1 + Pruefung 2: Zielgruppen-Strategie.
|
|
func TestEvaluate_TargetTenantStrategy(t *testing.T) {
|
|
f := Flag{Key: "k", Enabled: false, TargetTenantSlugs: []string{"acme"}}
|
|
if !evaluate(f, "acme") {
|
|
t.Fatal("erwartet true fuer tenant in zielgruppe")
|
|
}
|
|
if evaluate(f, "globex") {
|
|
t.Fatal("erwartet false fuer tenant ausserhalb der zielgruppe")
|
|
}
|
|
}
|
|
|
|
func TestEvaluate_RolloutPercentageBoundaries(t *testing.T) {
|
|
full := Flag{Key: "k", RolloutPercentage: 100}
|
|
if !evaluate(full, "beliebiger-tenant-1") || !evaluate(full, "beliebiger-tenant-2") {
|
|
t.Fatal("100% rollout sollte immer true liefern")
|
|
}
|
|
|
|
none := Flag{Key: "k", RolloutPercentage: 0}
|
|
if evaluate(none, "beliebiger-tenant") {
|
|
t.Fatal("0% rollout ohne enabled/zielgruppe sollte false liefern")
|
|
}
|
|
}
|
|
|
|
func TestEvaluate_RolloutIsDeterministicPerTenant(t *testing.T) {
|
|
f := Flag{Key: "k", RolloutPercentage: 50}
|
|
first := evaluate(f, "stabiler-tenant")
|
|
for i := 0; i < 5; i++ {
|
|
if evaluate(f, "stabiler-tenant") != first {
|
|
t.Fatal("rollout-auswertung sollte fuer denselben tenant/key stabil sein")
|
|
}
|
|
}
|
|
}
|