54 lines
1.2 KiB
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()
|
|
}
|