summaryrefslogtreecommitdiff
path: root/db/db_test.go
blob: ad8887a6dc39cbff0d27afea88211cc21b57ccb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package db

import (
	"log"
	"os"
	"slices"
	"testing"
)

func TestMain(m *testing.M) {
	err := InitializeDB()
	if err != nil {
		log.Fatalln("Failed to initialize database")
	}

	exitCode := m.Run()

	_ = CloseDB()
	os.Exit(exitCode)
}

func TestDatabase(t *testing.T) {
	var (
		service = "test"
		siteA   = "a.com"
		siteB   = "b.com"
		siteC   = "c.com"
	)
	instances := []string{siteA, siteB, siteC}
	err := SetInstances(service, instances)
	if err != nil {
		t.Fatalf("Failed to set instances: %v\n", err)
	}

	dbInstances, err := GetAllInstances(service)
	if err != nil {
		t.Fatalf("Failed to retrieve instances: %v\n", err)
	}

	for _, instance := range instances {
		idx := slices.Index(dbInstances, instance)
		if idx < 0 {
			t.Fatalf("Failed to find instance in list")
		}
	}

	firstInstance, err := GetInstance(service, "")
	if err != nil {
		t.Fatalf("Failed to fetch single instance: %v\n", err)
	}

	secondInstance, err := GetInstance(service, "")
	if err != nil {
		t.Fatalf("Failed to fetch single instance (second): %v\n", err)
	} else if firstInstance == secondInstance {
		t.Fatalf("Same instance was selected twice")
	}

	_ = CloseDB()
}