fix(kanban): don't prevent setting a different bucket as done bucket

Resolves vikunja/frontend#3373
This commit is contained in:
kolaente 2023-09-01 16:18:59 +02:00
parent 63ca453a24
commit d83034ede6
Signed by untrusted user: 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 { if doneBucket != nil && doneBucket.IsDoneBucket && b.IsDoneBucket && doneBucket.ID != b.ID {
return &ErrOnlyOneDoneBucketPerProject{ // When the current bucket will be the new done bucket, the old one should not be the done bucket anymore
BucketID: b.ID, doneBucket.IsDoneBucket = false
ProjectID: b.ProjectID, _, err = s.
DoneBucketID: doneBucket.ID, 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) 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) db.LoadAndAssertFixtures(t)
s := db.NewSession() s := db.NewSession()
defer s.Close() defer s.Close()
@ -229,7 +229,16 @@ func TestBucket_Update(t *testing.T) {
} }
err := b.Update(s, &user.User{ID: 1}) err := b.Update(s, &user.User{ID: 1})
assert.Error(t, err) assert.NoError(t, err)
assert.True(t, IsErrOnlyOneDoneBucketPerProject(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)
}) })
} }