summaryrefslogtreecommitdiffstats
path: root/models/unit_tests.go
diff options
context:
space:
mode:
authorEthan Koenig <etk39@cornell.edu>2017-05-20 04:48:22 -0400
committerLunny Xiao <xiaolunwen@gmail.com>2017-05-20 16:48:22 +0800
commitcf02cd7ba0c94165743660cf30f0cbb5a73a385e (patch)
tree6f09dce7c705041df1e042750137e379b0af66dc /models/unit_tests.go
parent85a73965256411c36ecc050eeb7967d3c8ef20d5 (diff)
downloadgitea-cf02cd7ba0c94165743660cf30f0cbb5a73a385e.tar.gz
gitea-cf02cd7ba0c94165743660cf30f0cbb5a73a385e.zip
Fix and test for delete user (#1713)
* Fix and test for delete user * Run updates in batches * Unit test
Diffstat (limited to 'models/unit_tests.go')
-rw-r--r--models/unit_tests.go92
1 files changed, 92 insertions, 0 deletions
diff --git a/models/unit_tests.go b/models/unit_tests.go
new file mode 100644
index 0000000000..44b2e2c637
--- /dev/null
+++ b/models/unit_tests.go
@@ -0,0 +1,92 @@
+// Copyright 2016 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "testing"
+
+ "github.com/go-xorm/core"
+ "github.com/go-xorm/xorm"
+ _ "github.com/mattn/go-sqlite3" // for the test engine
+ "github.com/stretchr/testify/assert"
+ "gopkg.in/testfixtures.v2"
+)
+
+// NonexistentID an ID that will never exist
+const NonexistentID = 9223372036854775807
+
+// CreateTestEngine create an xorm engine for testing
+func CreateTestEngine() error {
+ var err error
+ x, err = xorm.NewEngine("sqlite3", "file::memory:?cache=shared")
+ if err != nil {
+ return err
+ }
+ x.SetMapper(core.GonicMapper{})
+ if err = x.StoreEngine("InnoDB").Sync2(tables...); err != nil {
+ return err
+ }
+
+ return InitFixtures(&testfixtures.SQLite{}, "fixtures/")
+}
+
+// TestFixturesAreConsistent assert that test fixtures are consistent
+func TestFixturesAreConsistent(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ CheckConsistencyForAll(t)
+}
+
+// PrepareTestDatabase load test fixtures into test database
+func PrepareTestDatabase() error {
+ return LoadFixtures()
+}
+
+func loadBeanIfExists(bean interface{}, conditions ...interface{}) (bool, error) {
+ sess := x.NewSession()
+ defer sess.Close()
+
+ for _, cond := range conditions {
+ sess = sess.Where(cond)
+ }
+ return sess.Get(bean)
+}
+
+// BeanExists for testing, check if a bean exists
+func BeanExists(t *testing.T, bean interface{}, conditions ...interface{}) bool {
+ exists, err := loadBeanIfExists(bean, conditions...)
+ assert.NoError(t, err)
+ return exists
+}
+
+// AssertExistsAndLoadBean assert that a bean exists and load it from the test
+// database
+func AssertExistsAndLoadBean(t *testing.T, bean interface{}, conditions ...interface{}) interface{} {
+ exists, err := loadBeanIfExists(bean, conditions...)
+ assert.NoError(t, err)
+ assert.True(t, exists,
+ "Expected to find %+v (of type %T, with conditions %+v), but did not",
+ bean, bean, conditions)
+ return bean
+}
+
+// AssertNotExistsBean assert that a bean does not exist in the test database
+func AssertNotExistsBean(t *testing.T, bean interface{}, conditions ...interface{}) {
+ exists, err := loadBeanIfExists(bean, conditions...)
+ assert.NoError(t, err)
+ assert.False(t, exists)
+}
+
+// AssertSuccessfulInsert assert that beans is successfully inserted
+func AssertSuccessfulInsert(t *testing.T, beans ...interface{}) {
+ _, err := x.Insert(beans...)
+ assert.NoError(t, err)
+}
+
+// AssertCount assert the count of a bean
+func AssertCount(t *testing.T, bean interface{}, expected interface{}) {
+ actual, err := x.Count(bean)
+ assert.NoError(t, err)
+ assert.EqualValues(t, expected, actual)
+}