fix(kanban): don't prevent setting a different bucket as done bucket
continuous-integration/drone/push Build is passing Details

Resolves vikunja/frontend#3373
This commit is contained in:
kolaente 2023-09-01 16:18:59 +02:00
parent 769b4f8d66
commit edbfc06a41
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 20 additions and 7 deletions

View File

@ -293,10 +293,14 @@ func (b *Bucket) Update(s *xorm.Session, _ web.Auth) (err error) {
}
if doneBucket != nil && doneBucket.IsDoneBucket && b.IsDoneBucket && doneBucket.ID != b.ID {
return &ErrOnlyOneDoneBucketPerProject{
BucketID: b.ID,
ProjectID: b.ProjectID,
DoneBucketID: doneBucket.ID,
// When the current bucket will be the new done bucket, the old one should not be the done bucket anymore
doneBucket.IsDoneBucket = false
_, err = s.
Where("id = ?", doneBucket.ID).
Cols("is_done_bucket").
Update(doneBucket)
if err != nil {
return
}
}

View File

@ -217,7 +217,7 @@ func TestBucket_Update(t *testing.T) {
testAndAssertBucketUpdate(t, b, s)
})
t.Run("only one done bucket per project", func(t *testing.T) {
t.Run("old done bucket should be unset", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
s := db.NewSession()
defer s.Close()
@ -229,7 +229,16 @@ func TestBucket_Update(t *testing.T) {
}
err := b.Update(s, &user.User{ID: 1})
assert.Error(t, err)
assert.True(t, IsErrOnlyOneDoneBucketPerProject(err))
assert.NoError(t, err)
db.AssertExists(t, "buckets", map[string]interface{}{
"id": 1,
"project_id": 1,
"is_done_bucket": true,
}, false)
db.AssertExists(t, "buckets", map[string]interface{}{
"id": 3,
"project_id": 1,
"is_done_bucket": false,
}, false)
})
}