92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
|
package core
|
||
|
|
||
|
import (
|
||
|
"slices"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestEnvs(t *testing.T) {
|
||
|
db := EphemeralDb(t)
|
||
|
if err := AddSource(db, "_"); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
// Insert env
|
||
|
if err := SetEnvs(db, "_", []string{"ONE=hello"}); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
envs, err := GetEnvs(db, "_")
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
if len(envs) != 1 {
|
||
|
t.Fatal("expected 1 env")
|
||
|
}
|
||
|
if envs[0] != "ONE=hello" {
|
||
|
t.Fatalf("Expected ONE=hello, got %s", envs[0])
|
||
|
}
|
||
|
|
||
|
// Insert env with = in value
|
||
|
if err := SetEnvs(db, "_", []string{"TWO=world=true"}); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
envs, err = GetEnvs(db, "_")
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
if len(envs) != 2 {
|
||
|
t.Fatal("expected 2 envs")
|
||
|
}
|
||
|
slices.Sort(envs) // ONE > TWO
|
||
|
if envs[1] != "TWO=world=true" {
|
||
|
t.Fatalf("Expected TWO=world=true, got %s", envs[1])
|
||
|
}
|
||
|
|
||
|
// Replace env
|
||
|
if err := SetEnvs(db, "_", []string{"TWO=goodbye"}); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
envs, err = GetEnvs(db, "_")
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
if len(envs) != 2 {
|
||
|
t.Fatal("expected 2 envs")
|
||
|
}
|
||
|
slices.Sort(envs) // ONE > TWO
|
||
|
if envs[1] != "TWO=goodbye" {
|
||
|
t.Fatalf("Expected TWO=goodbye, got %s", envs[1])
|
||
|
}
|
||
|
|
||
|
// Insert is transactional on error
|
||
|
if err := SetEnvs(db, "_", []string{"THREE=crowd", "FOUR"}); err == nil {
|
||
|
t.Fatal("expected bad env insert to fail")
|
||
|
}
|
||
|
envs, err = GetEnvs(db, "_")
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
if len(envs) != 2 {
|
||
|
t.Fatal("expected 2 envs after failed insert")
|
||
|
}
|
||
|
slices.Sort(envs) // ONE > TWO
|
||
|
if envs[0] != "ONE=hello" || envs[1] != "TWO=goodbye" {
|
||
|
t.Fatalf("Expected ONE=hello and TWO=goodbye, got %v", envs)
|
||
|
}
|
||
|
|
||
|
// Delete env
|
||
|
if err := SetEnvs(db, "_", []string{"ONE="}); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
envs, err = GetEnvs(db, "_")
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
if len(envs) != 1 {
|
||
|
t.Fatal("expected 1 env after deletion")
|
||
|
}
|
||
|
if envs[0] != "TWO=goodbye" {
|
||
|
t.Fatalf("Expected TWO=goodbye, got %s", envs[0])
|
||
|
}
|
||
|
}
|