Skip to content

Commit

Permalink
refactor + more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
scottmckendry committed Nov 10, 2023
1 parent fad9d6a commit 3efc482
Show file tree
Hide file tree
Showing 8 changed files with 327 additions and 61 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ jobs:
# This is specifically for generating PDFs - setting this variable means we don't have to run the server to provide the HTML
# response for wkhtmltopdf to create the PDF from. We're only testing the file is created and placed in the right directory,
# so the content doesn't really matter.
run: export BASE_URL=https://duckduckgo.com/?q= && go test -v
run: export BASE_URL=https://duckduckgo.com/?q= && go test -v -cover
28 changes: 14 additions & 14 deletions data.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

var dbUrl = "file:./db.sqlite3"
var Db *sql.DB
var db *sql.DB

type Dog struct {
ID int
Expand All @@ -36,9 +36,9 @@ func Init() error {
}

func connect() error {
Db, _ = sql.Open("libsql", dbUrl)
db, _ = sql.Open("libsql", dbUrl)

err := Db.Ping()
err := db.Ping()
if err != nil {
return fmt.Errorf("error connecting to database: %v", err)
}
Expand All @@ -47,7 +47,7 @@ func connect() error {
}

func createTables() error {
_, err := Db.Exec(`
_, err := db.Exec(`
CREATE TABLE IF NOT EXISTS dogs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT unique,
Expand All @@ -67,8 +67,8 @@ func createTables() error {
return nil
}

func GetDogs() ([]Dog, error) {
rows, err := Db.Query("SELECT * FROM dogs")
func getDogs() ([]Dog, error) {
rows, err := db.Query("SELECT * FROM dogs")
if err != nil {
return nil, fmt.Errorf("error getting dogs: %v", err)
}
Expand Down Expand Up @@ -97,9 +97,9 @@ func GetDogs() ([]Dog, error) {
return dogs, nil
}

func GetDog(id int) (Dog, error) {
func getDog(id int) (Dog, error) {
var dog Dog
err := Db.QueryRow("SELECT * FROM dogs WHERE id = ?", id).Scan(
err := db.QueryRow("SELECT * FROM dogs WHERE id = ?", id).Scan(
&dog.ID,
&dog.Name,
&dog.OwnerName,
Expand All @@ -117,8 +117,8 @@ func GetDog(id int) (Dog, error) {
return dog, nil
}

func AddDog(dog Dog) error {
_, err := Db.Exec(`
func addDog(dog Dog) error {
_, err := db.Exec(`
INSERT INTO dogs (
name,
ownerName,
Expand All @@ -137,8 +137,8 @@ func AddDog(dog Dog) error {
return nil
}

func UpdateDog(dog Dog) error {
_, err := Db.Exec(`
func updateDog(dog Dog) error {
_, err := db.Exec(`
UPDATE dogs SET
name = ?,
ownerName = ?,
Expand All @@ -157,8 +157,8 @@ func UpdateDog(dog Dog) error {
return nil
}

func DeleteDog(id int) error {
_, err := Db.Exec("DELETE FROM dogs WHERE id = ?", id)
func deleteDog(id int) error {
_, err := db.Exec("DELETE FROM dogs WHERE id = ?", id)
if err != nil {
return fmt.Errorf("error deleting dog: %v", err)
}
Expand Down
53 changes: 29 additions & 24 deletions data_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestInit(t *testing.T) {
t.Errorf("Init() error = %q", err)
}

if Db == nil {
if db == nil {
t.Errorf("Init() Db is nil")
}

Expand All @@ -46,7 +46,7 @@ func TestConnect(t *testing.T) {
t.Errorf("connect() error = %q", err)
}

if Db == nil {
if db == nil {
t.Errorf("connect() Db is nil")
}

Expand All @@ -70,7 +70,7 @@ func TestCreateTables(t *testing.T) {
t.Errorf("createTables() error = %q", err)
}

_, err = Db.Exec(`
_, err = db.Exec(`
INSERT INTO dogs (
name,
ownerName,
Expand Down Expand Up @@ -99,18 +99,18 @@ func TestCreateTables(t *testing.T) {
t.Cleanup(func() {
dbUrl = oldDbUrl
_ = connect()
Db.Exec("DROP TABLE dogs")
db.Exec("DROP TABLE dogs")
Init()
})
}

func TestAddDog(t *testing.T) {
err := AddDog(testDog)
err := addDog(testDog)
if err != nil {
t.Errorf("AddDog() error = %q", err)
}

dog, err := GetDog(1)
dog, err := getDog(1)
if err != nil {
t.Errorf("GetDog() error = %q", err)
}
Expand All @@ -125,7 +125,7 @@ func TestAddDog(t *testing.T) {
badDog := Dog{
Name: "Fido", // Column is unique
}
err = AddDog(badDog)
err = addDog(badDog)
if err == nil {
t.Errorf("no error returned when expected")
}
Expand All @@ -134,12 +134,12 @@ func TestAddDog(t *testing.T) {
func TestUpdateDog(t *testing.T) {
testDog.ID = 1
testDog.Name = "Fred"
err := UpdateDog(testDog)
err := updateDog(testDog)
if err != nil {
t.Errorf("UpdateDog() error = %q", err)
}

dog, err := GetDog(1)
dog, err := getDog(1)
if err != nil {
t.Errorf("GetDog() error = %q", err)
}
Expand All @@ -149,21 +149,21 @@ func TestUpdateDog(t *testing.T) {
}

// Force error
Db.Exec("DROP TABLE dogs")
err = UpdateDog(testDog)
db.Exec("DROP TABLE dogs")
err = updateDog(testDog)

if err == nil {
t.Errorf("no error returned when expected")
}

t.Cleanup(func() {
Init()
_ = AddDog(testDog)
_ = addDog(testDog)
})
}

func TestGetDogs(t *testing.T) {
dogs, err := GetDogs()
dogs, err := getDogs()
if err != nil {
t.Errorf("GetDogs() error = %q", err)
}
Expand All @@ -179,31 +179,31 @@ func TestGetDogs(t *testing.T) {
}

// Force scan error
Db.Exec("insert into dogs (name) values (NULL)")
_, err = GetDogs()
db.Exec("insert into dogs (name) values (NULL)")
_, err = getDogs()
if err == nil {
t.Errorf("no error returned when expected")
}

// Force query error
_, err = Db.Exec("drop table dogs;")
_, err = db.Exec("drop table dogs;")
if err != nil {
t.Errorf("error dropping table: %v", err)
}
_, err = GetDogs()
_, err = getDogs()
if err == nil {
t.Errorf("no error returned when expected")
}

t.Cleanup(func() {
Init()
_ = AddDog(testDog)
_ = addDog(testDog)
})

}

func TestGetDog(t *testing.T) {
dog, err := GetDog(1)
dog, err := getDog(1)
if err != nil {
t.Errorf("GetDog() error = %q", err)
}
Expand All @@ -214,26 +214,31 @@ func TestGetDog(t *testing.T) {
}

func TestDeleteDog(t *testing.T) {
err := DeleteDog(1)
err := deleteDog(1)
if err != nil {
t.Errorf("DeleteDog() error = %q", err)
}

_, err = GetDog(1)
_, err = getDog(1)
if err == nil {
t.Errorf("DeleteDog() failed to delete dog")
}

// Force error
Db.Exec("DROP TABLE dogs")
err = DeleteDog(1)
db.Exec("DROP TABLE dogs")
err = deleteDog(1)
if err == nil {
t.Errorf("no error returned when expected")
}

t.Cleanup(func() {
Init()
_ = addDog(testDog)
})
}

func createBadTable() error {
_, err := Db.Exec(`
_, err := db.Exec(`
CREATE TABLE dogs (
id integer PRIMARY KEY,
name text,
Expand Down
22 changes: 11 additions & 11 deletions handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

// Renders the index page.
func renderIndex(c *fiber.Ctx) error {
dogs, err := GetDogs()
dogs, err := getDogs()
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand All @@ -21,7 +21,7 @@ func renderIndex(c *fiber.Ctx) error {

// Renders the cards for all dogs.
func renderDogs(c *fiber.Ctx) error {
dogs, err := GetDogs()
dogs, err := getDogs()
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand All @@ -41,7 +41,7 @@ func renderEdit(c *fiber.Ctx) error {
if err != nil {
return c.Status(400).SendString(err.Error())
}
dog, err := GetDog(id)
dog, err := getDog(id)
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand All @@ -54,7 +54,7 @@ func renderInvoice(c *fiber.Ctx) error {
if err != nil {
return c.Status(400).SendString(err.Error())
}
dog, err := GetDog(id)
dog, err := getDog(id)
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand Down Expand Up @@ -88,7 +88,7 @@ func renderInvoicePdf(c *fiber.Ctx) error {
if err != nil {
return c.Status(400).SendString(err.Error())
}
dog, err := GetDog(id)
dog, err := getDog(id)
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand All @@ -105,11 +105,11 @@ func handleDogAdd(c *fiber.Ctx) error {
if err := c.BodyParser(dog); err != nil {
return c.Status(400).SendString(err.Error())
}
err := AddDog(*dog)
err := addDog(*dog)
if err != nil {
return c.Status(500).SendString(err.Error())
}
dogs, err := GetDogs()
dogs, err := getDogs()
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand All @@ -129,11 +129,11 @@ func handleDogUpdate(c *fiber.Ctx) error {
if err := c.BodyParser(dog); err != nil {
return c.Status(400).SendString(err.Error())
}
err = UpdateDog(*dog)
err = updateDog(*dog)
if err != nil {
return c.Status(500).SendString(err.Error())
}
dogs, err := GetDogs()
dogs, err := getDogs()
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand All @@ -148,11 +148,11 @@ func handleDogDelete(c *fiber.Ctx) error {
if err != nil {
return c.Status(400).SendString(err.Error())
}
err = DeleteDog(id)
err = deleteDog(id)
if err != nil {
return c.Status(500).SendString(err.Error())
}
dogs, err := GetDogs()
dogs, err := getDogs()
if err != nil {
return c.Status(500).SendString(err.Error())
}
Expand Down
Loading

0 comments on commit 3efc482

Please sign in to comment.