summaryrefslogtreecommitdiffstats
path: root/models/action_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/action_test.go')
-rw-r--r--models/action_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/models/action_test.go b/models/action_test.go
index fb8a6c2686..2d46bd3e80 100644
--- a/models/action_test.go
+++ b/models/action_test.go
@@ -228,3 +228,46 @@ func TestGetFeedsCorrupted(t *testing.T) {
assert.NoError(t, err)
assert.Len(t, actions, 0)
}
+
+func TestConsistencyUpdateAction(t *testing.T) {
+ if !setting.Database.UseSQLite3 {
+ t.Skip("Test is only for SQLite database.")
+ }
+ assert.NoError(t, unittest.PrepareTestDatabase())
+ id := 8
+ unittest.AssertExistsAndLoadBean(t, &Action{
+ ID: int64(id),
+ })
+ _, err := db.GetEngine(db.DefaultContext).Exec(`UPDATE action SET created_unix = "" WHERE id = ?`, id)
+ assert.NoError(t, err)
+ actions := make([]*Action, 0, 1)
+ //
+ // XORM returns an error when created_unix is a string
+ //
+ err = db.GetEngine(db.DefaultContext).Where("id = ?", id).Find(&actions)
+ if assert.Error(t, err) {
+ assert.Contains(t, err.Error(), "type string to a int64: invalid syntax")
+ }
+ //
+ // Get rid of incorrectly set created_unix
+ //
+ count, err := CountActionCreatedUnixString()
+ assert.NoError(t, err)
+ assert.EqualValues(t, 1, count)
+ count, err = FixActionCreatedUnixString()
+ assert.NoError(t, err)
+ assert.EqualValues(t, 1, count)
+
+ count, err = CountActionCreatedUnixString()
+ assert.NoError(t, err)
+ assert.EqualValues(t, 0, count)
+ count, err = FixActionCreatedUnixString()
+ assert.NoError(t, err)
+ assert.EqualValues(t, 0, count)
+
+ //
+ // XORM must be happy now
+ //
+ assert.NoError(t, db.GetEngine(db.DefaultContext).Where("id = ?", id).Find(&actions))
+ unittest.CheckConsistencyFor(t, &Action{})
+}