55 lines
1.1 KiB
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)
|
|
}
|