2021-04-30 12:08:46 -06:00
|
|
|
// Copyright 2021 Gitea. 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"
|
|
|
|
|
2021-09-19 05:49:59 -06:00
|
|
|
"code.gitea.io/gitea/models/db"
|
2021-11-12 07:36:47 -07:00
|
|
|
"code.gitea.io/gitea/models/unittest"
|
2022-05-10 07:05:34 -06:00
|
|
|
"code.gitea.io/gitea/modules/setting"
|
2021-11-17 05:34:35 -07:00
|
|
|
|
2021-04-30 12:08:46 -06:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDeleteOrphanedObjects(t *testing.T) {
|
2021-11-12 07:36:47 -07:00
|
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
2021-04-30 12:08:46 -06:00
|
|
|
|
2021-09-23 09:45:36 -06:00
|
|
|
countBefore, err := db.GetEngine(db.DefaultContext).Count(&PullRequest{})
|
2021-04-30 12:08:46 -06:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2021-09-23 09:45:36 -06:00
|
|
|
_, err = db.GetEngine(db.DefaultContext).Insert(&PullRequest{IssueID: 1000}, &PullRequest{IssueID: 1001}, &PullRequest{IssueID: 1003})
|
2021-04-30 12:08:46 -06:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
orphaned, err := CountOrphanedObjects("pull_request", "issue", "pull_request.issue_id=issue.id")
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, 3, orphaned)
|
|
|
|
|
|
|
|
err = DeleteOrphanedObjects("pull_request", "issue", "pull_request.issue_id=issue.id")
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2021-09-23 09:45:36 -06:00
|
|
|
countAfter, err := db.GetEngine(db.DefaultContext).Count(&PullRequest{})
|
2021-04-30 12:08:46 -06:00
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, countBefore, countAfter)
|
|
|
|
}
|
2022-05-10 07:05:34 -06:00
|
|
|
|
|
|
|
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{})
|
|
|
|
}
|