go-recipe-book/pkg/db/food_test.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
}
}