Selaa lähdekoodia

fixed unit tests

aeth 3 päivää sitten
vanhempi
sitoutus
8caa327e32

+ 11 - 0
pkg/controller/controller.go

@@ -1,7 +1,9 @@
 package controller
 
 import (
+	"io"
 	"io/fs"
+	"os"
 
 	"git.aetherial.dev/aeth/keiji/pkg/auth"
 	"git.aetherial.dev/aeth/keiji/pkg/storage"
@@ -13,6 +15,7 @@ type Controller struct {
 	Cache      *auth.AuthCache
 	AuthSource auth.Source
 	FileIO     fs.FS
+	log        io.Writer
 }
 
 func NewController(domain string, database storage.DocumentIO, files fs.FS, authSrc auth.Source) *Controller {
@@ -22,5 +25,13 @@ func NewController(domain string, database storage.DocumentIO, files fs.FS, auth
 		Domain:     domain,
 		database:   database,
 		FileIO:     files,
+		log:        os.Stdout,
 	}
 }
+
+func (c Controller) LogMsg(msg ...string) {
+	for i := range msg {
+		c.log.Write([]byte(msg[i]))
+	}
+	c.log.Write([]byte("\n"))
+}

+ 3 - 1
pkg/controller/html_handlers.go

@@ -2,6 +2,7 @@ package controller
 
 import (
 	"html/template"
+	"math/rand"
 	"net/http"
 
 	"git.aetherial.dev/aeth/keiji/pkg/storage"
@@ -76,7 +77,8 @@ func (c *Controller) ServeHome(ctx *gin.Context) {
 			Body: "Under construction. Sry :(",
 		}
 	} else {
-		content = home[0]
+		index := rand.Intn(len(home))
+		content = home[index]
 	}
 	ctx.HTML(http.StatusOK, "home", gin.H{
 		"navigation": gin.H{

+ 20 - 9
pkg/storage/storage.go

@@ -229,15 +229,18 @@ func (s *SQLiteRepo) GetDropdownElements() []LinkPair {
 Retrieve a dropdown element by its text name on the UI
 */
 func (s *SQLiteRepo) GetMenuItemByName(link, text string) (LinkPair, bool) {
+	fmt.Printf("From GetMenuItemByName: Link: %s Text: %s\n", link, text)
 	rows := s.db.QueryRow("SELECT * FROM menu WHERE link = ? AND text = ?", link, text)
 	var item LinkPair
 	var id int
-	if err := rows.Scan(&id, &item.Link, &item.Text); err != nil {
+	err := rows.Scan(&id, &item.Link, &item.Text)
+	if err != nil {
 		if errors.Is(err, sql.ErrNoRows) {
 			return item, false
+		} else {
+			return item, false
 		}
 	}
-	log.Printf("%+v\n", item)
 	return item, true
 
 }
@@ -247,11 +250,13 @@ func (s *SQLiteRepo) GetAdminTableEntry(displayName, link, category string) (Tab
 	rows := s.db.QueryRow("SELECT * FROM admin WHERE display_name = ? AND link = ? AND category = ?", displayName, link, category)
 	var item TableData
 	var id int
-	if err := rows.Scan(&id, &item.DisplayName, &item.Link, &category); err != nil {
+	err := rows.Scan(&id, &item.DisplayName, &item.Link, &category)
+	if err != nil {
 		if errors.Is(err, sql.ErrNoRows) {
 			return item, false
 		}
-		log.Fatal(err)
+		log.Printf("Error getting admin table entry: %s", err.Error())
+		return item, false
 	}
 	return item, true
 
@@ -262,11 +267,13 @@ func (s *SQLiteRepo) GetNavbarLink(link, redirect string) (NavBarItem, bool) {
 	rows := s.db.QueryRow("SELECT * FROM navbar WHERE link = ? AND redirect = ?", link, redirect)
 	var item NavBarItem
 	var id int
-	if err := rows.Scan(&id, &item.Png, &item.Link, &item.Redirect); err != nil {
+	err := rows.Scan(&id, &item.Png, &item.Link, &item.Redirect)
+	if err != nil {
 		if errors.Is(err, sql.ErrNoRows) {
 			return item, false
 		}
-		log.Fatal(err)
+		log.Printf("Error scanning for item: %s", err.Error())
+		return item, false
 	}
 	return item, true
 
@@ -277,11 +284,13 @@ func (s *SQLiteRepo) GetAsset(name string) (Asset, bool) {
 	rows := s.db.QueryRow("SELECT * FROM assets WHERE name = ?", name)
 	var item Asset
 	var id int
-	if err := rows.Scan(&id, &item.Name, &item.Data); err != nil {
+	err := rows.Scan(&id, &item.Name, &item.Data)
+	if err != nil {
 		if errors.Is(err, sql.ErrNoRows) {
 			return item, false
 		}
-		log.Fatal(err)
+		log.Printf("Error getting asset: %s", err.Error())
+		return item, false
 	}
 	return item, true
 
@@ -512,8 +521,10 @@ func (s *SQLiteRepo) AddMenuItem(item LinkPair) error {
 	if err != nil {
 		return err
 	}
-	_, found := s.GetMenuItemByName(item.Link, item.Text)
+	fmt.Printf("from AddMenuItem: %+v\n", item)
+	foundItem, found := s.GetMenuItemByName(item.Link, item.Text)
 	if found {
+		fmt.Printf("from error in AddMenuItem: %+v\n", foundItem)
 		tx.Rollback()
 		return ErrDuplicate
 	}

+ 19 - 13
pkg/storage/storage_test.go

@@ -566,11 +566,17 @@ func TestAddMenuItem(t *testing.T) {
 				// assert.Equal(expected, actual)
 				assert.Equal(t, tc.err, err)
 			}
-			rows := testDb.db.QueryRow("SELECT * FROM menu WHERE link = ? AND text = ?", tc.input[i].Link, tc.input[i].Text)
-			var got LinkPair
-			var id int
-			if err := rows.Scan(&id, &got.Link, &got.Text); err != nil {
-				t.Errorf("failed: %s", err.Error())
+			rows, err := testDb.db.Query("SELECT * FROM menu")
+			var got []LinkPair
+			defer rows.Close()
+			for rows.Next() {
+				var item LinkPair
+				var id int
+				err = rows.Scan(&id, &item.Link, &item.Text)
+				if err != nil {
+					t.Errorf("failed: %s", err.Error())
+				}
+				got = append(got, item)
 			}
 			assert.Equal(t, tc.input, got)
 		}
@@ -581,13 +587,13 @@ func TestAddNavbarItem(t *testing.T) {
 		input []NavBarItem
 		err   error
 	}
-	testDb, db := newTestDb(t.TempDir(), true)
+	testDb, _ := newTestDb(t.TempDir(), true)
 	for _, tc := range []testcase{
 		{
 			input: []NavBarItem{
 				{
-					Redirect: "",
-					Link:     "",
+					Redirect: "http://whatever.com",
+					Link:     "api/stuff/picture.jpeg",
 					Png:      []byte(""),
 				},
 			},
@@ -600,7 +606,7 @@ func TestAddNavbarItem(t *testing.T) {
 			}
 
 		}
-		rows, err := db.Query("SELECT * FROM navbar")
+		rows, err := testDb.db.Query("SELECT * FROM navbar")
 		var got []NavBarItem
 		defer rows.Close()
 		for rows.Next() {
@@ -621,7 +627,7 @@ func TestAddAsset(t *testing.T) {
 		input []Asset
 		err   error
 	}
-	testDb, db := newTestDb(t.TempDir(), true)
+	testDb, _ := newTestDb(t.TempDir(), true)
 	for _, tc := range []testcase{
 		{
 			input: []Asset{
@@ -639,7 +645,7 @@ func TestAddAsset(t *testing.T) {
 			}
 
 		}
-		rows, err := db.Query("SELECT * FROM assets")
+		rows, err := testDb.db.Query("SELECT * FROM assets")
 		var assets []Asset
 		defer rows.Close()
 		for rows.Next() {
@@ -699,7 +705,7 @@ func TestAddAdminTableEntry(t *testing.T) {
 		input AdminPage
 		err   error
 	}
-	testDb, db := newTestDb(t.TempDir(), true)
+	testDb, _ := newTestDb(t.TempDir(), true)
 	for _, tc := range []testcase{
 		{
 			input: AdminPage{
@@ -723,7 +729,7 @@ func TestAddAdminTableEntry(t *testing.T) {
 				}
 			}
 		}
-		rows, err := db.Query("SELECT * FROM admin")
+		rows, err := testDb.db.Query("SELECT * FROM admin")
 		got := AdminPage{Tables: map[string][]TableData{}}
 		defer rows.Close()
 		for rows.Next() {