aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2024-03-02 00:46:02 +0800
committerGitHub <noreply@github.com>2024-03-01 16:46:02 +0000
commit4b8293aa094e725b372329a19da687a6d1550069 (patch)
tree83be14d110992096e39dcfb171bf70e58941eeb0 /models
parent3b99066aa866e51e6a610716eaddfd1ea3645a67 (diff)
downloadgitea-4b8293aa094e725b372329a19da687a6d1550069.tar.gz
gitea-4b8293aa094e725b372329a19da687a6d1550069.zip
Fix issue & comment history bugs (#29525)
* Follow #17746: `HasIssueContentHistory` should use expr builder to make sure zero value (0) be respected. * Add "doer" check to make sure `canSoftDeleteContentHistory` only be called by sign-in users.
Diffstat (limited to 'models')
-rw-r--r--models/issues/content_history.go8
-rw-r--r--models/issues/content_history_test.go19
2 files changed, 21 insertions, 6 deletions
diff --git a/models/issues/content_history.go b/models/issues/content_history.go
index 8b00adda99..31c80d2cea 100644
--- a/models/issues/content_history.go
+++ b/models/issues/content_history.go
@@ -172,13 +172,9 @@ func FetchIssueContentHistoryList(dbCtx context.Context, issueID, commentID int6
// HasIssueContentHistory check if a ContentHistory entry exists
func HasIssueContentHistory(dbCtx context.Context, issueID, commentID int64) (bool, error) {
- exists, err := db.GetEngine(dbCtx).Cols("id").Exist(&ContentHistory{
- IssueID: issueID,
- CommentID: commentID,
- })
+ exists, err := db.GetEngine(dbCtx).Where(builder.Eq{"issue_id": issueID, "comment_id": commentID}).Exist(&ContentHistory{})
if err != nil {
- log.Error("can not fetch issue content history. err=%v", err)
- return false, err
+ return false, fmt.Errorf("can not check issue content history. err: %w", err)
}
return exists, err
}
diff --git a/models/issues/content_history_test.go b/models/issues/content_history_test.go
index 0ea1d0f7b2..1caa73a948 100644
--- a/models/issues/content_history_test.go
+++ b/models/issues/content_history_test.go
@@ -78,3 +78,22 @@ func TestContentHistory(t *testing.T) {
assert.EqualValues(t, 7, list2[1].HistoryID)
assert.EqualValues(t, 4, list2[2].HistoryID)
}
+
+func TestHasIssueContentHistoryForCommentOnly(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ _ = db.TruncateBeans(db.DefaultContext, &issues_model.ContentHistory{})
+
+ hasHistory1, _ := issues_model.HasIssueContentHistory(db.DefaultContext, 10, 0)
+ assert.False(t, hasHistory1)
+ hasHistory2, _ := issues_model.HasIssueContentHistory(db.DefaultContext, 10, 100)
+ assert.False(t, hasHistory2)
+
+ _ = issues_model.SaveIssueContentHistory(db.DefaultContext, 1, 10, 100, timeutil.TimeStampNow(), "c-a", true)
+ _ = issues_model.SaveIssueContentHistory(db.DefaultContext, 1, 10, 100, timeutil.TimeStampNow().Add(5), "c-b", false)
+
+ hasHistory1, _ = issues_model.HasIssueContentHistory(db.DefaultContext, 10, 0)
+ assert.False(t, hasHistory1)
+ hasHistory2, _ = issues_model.HasIssueContentHistory(db.DefaultContext, 10, 100)
+ assert.True(t, hasHistory2)
+}