tbotd/vendor/src/github.com/asdine/storm/remove_test.go

55 lines
1.1 KiB
Go

package storm
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestRemove(t *testing.T) {
dir, _ := ioutil.TempDir(os.TempDir(), "storm")
defer os.RemoveAll(dir)
db, _ := Open(filepath.Join(dir, "storm.db"))
u1 := IndexedNameUser{ID: 10, Name: "John", age: 10}
err := db.Save(&u1)
assert.NoError(t, err)
err = db.Remove(&u1)
assert.NoError(t, err)
err = db.Remove(&u1)
assert.Equal(t, ErrNotFound, err)
u2 := IndexedNameUser{}
err = db.Get("IndexedNameUser", 10, &u2)
assert.Equal(t, ErrNotFound, err)
err = db.Remove(nil)
assert.Equal(t, ErrBadType, err)
var users []User
for i := 0; i < 10; i++ {
user := User{Name: "John", ID: i + 1, Slug: fmt.Sprintf("John%d", i+1), DateOfBirth: time.Now().Add(-time.Duration(i*10) * time.Minute)}
err := db.Save(&user)
assert.NoError(t, err)
users = append(users, user)
}
err = db.Remove(&users[0])
assert.NoError(t, err)
err = db.Remove(&users[1])
assert.NoError(t, err)
users = nil
err = db.All(&users)
assert.NoError(t, err)
assert.Len(t, users, 8)
assert.Equal(t, 3, users[0].ID)
}