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

54 lines
1.2 KiB
Go

package storm
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestCount(t *testing.T) {
dir, _ := ioutil.TempDir(os.TempDir(), "storm")
defer os.RemoveAll(dir)
db, _ := Open(filepath.Join(dir, "storm.db"))
for i := 0; i < 100; i++ {
w := 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(&w)
assert.NoError(t, err)
}
count, err := db.Count(&User{})
assert.NoError(t, err)
assert.Equal(t, 100, count)
w := User{Name: "John", ID: 101, Slug: fmt.Sprintf("John%d", 101), DateOfBirth: time.Now().Add(-time.Duration(101*10) * time.Minute)}
err = db.Save(&w)
assert.NoError(t, err)
count, err = db.Count(&User{})
assert.NoError(t, err)
assert.Equal(t, 101, count)
tx, err := db.Begin(true)
assert.NoError(t, err)
count, err = tx.Count(&User{})
assert.NoError(t, err)
assert.Equal(t, 101, count)
w = User{Name: "John", ID: 102, Slug: fmt.Sprintf("John%d", 102), DateOfBirth: time.Now().Add(-time.Duration(101*10) * time.Minute)}
err = tx.Save(&w)
assert.NoError(t, err)
count, err = tx.Count(&User{})
assert.NoError(t, err)
assert.Equal(t, 102, count)
tx.Commit()
}