85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
package db_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/go-test/deep"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
. "recipe_book/pkg/db"
|
|
)
|
|
|
|
func TestFoodSaveAndLoad(t *testing.T) {
|
|
assert := assert.New(t)
|
|
db := get_test_db()
|
|
food := Food{
|
|
Name: "some food",
|
|
Cals: 1.0,
|
|
Carbs: 2.0,
|
|
Protein: 3.0,
|
|
Fat: 4.0,
|
|
Sugar: 5.0,
|
|
Alcohol: 6.0,
|
|
Water: 7.0,
|
|
Potassium: 8.0,
|
|
Calcium: 9.0,
|
|
Sodium: 10.0,
|
|
Magnesium: 11.0,
|
|
Phosphorus: 12.0,
|
|
Iron: 13.0,
|
|
Zinc: 14.0,
|
|
Mass: 15.0,
|
|
Price: 16.0,
|
|
Density: 17.0,
|
|
CookRatio: 18.0,
|
|
}
|
|
assert.Equal(food.ID, FoodID(0))
|
|
db.SaveFood(&food)
|
|
assert.NotEqual(food.ID, FoodID(0))
|
|
new_food, err := db.GetFoodByID(food.ID)
|
|
assert.NoError(err)
|
|
if diff := deep.Equal(food, new_food); diff != nil {
|
|
t.Error(diff)
|
|
}
|
|
|
|
// Modify it
|
|
food.Name = "another food"
|
|
food.Cals = food.Cals + 9.2
|
|
food.Carbs = food.Carbs + 9.2
|
|
food.Protein = food.Protein + 9.2
|
|
food.Fat = food.Fat + 9.2
|
|
food.Sugar = food.Sugar + 9.2
|
|
food.Alcohol = food.Alcohol + 9.2
|
|
food.Water = food.Water + 9.2
|
|
food.Potassium = food.Potassium + 9.2
|
|
food.Calcium = food.Calcium + 9.2
|
|
food.Sodium = food.Sodium + 9.2
|
|
food.Phosphorus = food.Phosphorus + 9.2
|
|
food.Iron = food.Iron + 9.2
|
|
food.Zinc = food.Zinc + 9.2
|
|
food.Mass = food.Mass + 9.2
|
|
food.Price = food.Price + 9.2
|
|
food.Density = food.Density + 9.2
|
|
food.CookRatio = food.CookRatio + 9.2
|
|
|
|
// Save it and reload it
|
|
db.SaveFood(&food)
|
|
new_food, err = db.GetFoodByID(food.ID)
|
|
assert.NoError(err)
|
|
if diff := deep.Equal(food, new_food); diff != nil {
|
|
t.Error(diff)
|
|
}
|
|
}
|
|
|
|
// Should list all the base foods (i.e., ones that aren't recipes)
|
|
func TestListAllBaseFoods(t *testing.T) {
|
|
assert := assert.New(t)
|
|
db := get_test_db()
|
|
|
|
base_foods := db.GetAllBaseFoods()
|
|
assert.True(len(base_foods) >= 100)
|
|
for _, f := range base_foods {
|
|
assert.NotContains([]FoodID{10000, 10001}, f.ID, f) // Computed foods have ID >= 10000 in seed data
|
|
}
|
|
}
|