Skip to content

Commit

Permalink
fix(kanban): reset done and default bucket when the bucket itself is …
Browse files Browse the repository at this point in the history
…deleted

Resolves #234
  • Loading branch information
kolaente committed Mar 12, 2024
1 parent e1c972d commit 5b2b7f7
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 7 deletions.
30 changes: 23 additions & 7 deletions pkg/models/kanban.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ func (b *Bucket) Update(s *xorm.Session, _ web.Auth) (err error) {
// @Failure 404 {object} web.HTTPError "The bucket does not exist."
// @Failure 500 {object} models.Message "Internal error"
// @Router /projects/{projectID}/buckets/{bucketID} [delete]
func (b *Bucket) Delete(s *xorm.Session, _ web.Auth) (err error) {
func (b *Bucket) Delete(s *xorm.Session, a web.Auth) (err error) {

// Prevent removing the last bucket
total, err := s.Where("project_id = ?", b.ProjectID).Count(&Bucket{})
Expand All @@ -324,17 +324,27 @@ func (b *Bucket) Delete(s *xorm.Session, _ web.Auth) (err error) {
}
}

// Remove the bucket itself
_, err = s.Where("id = ?", b.ID).Delete(&Bucket{})
if err != nil {
return
}

// Get the default bucket
p, err := GetProjectSimpleByID(s, b.ProjectID)
if err != nil {
return
}
var updateProject bool
if b.ID == p.DefaultBucketID {
p.DefaultBucketID = 0
updateProject = true
}
if b.ID == p.DoneBucketID {
p.DoneBucketID = 0
updateProject = true
}
if updateProject {
err = p.Update(s, a)
if err != nil {
return
}
}

defaultBucketID, err := getDefaultBucketID(s, p)
if err != nil {
return err
Expand All @@ -345,5 +355,11 @@ func (b *Bucket) Delete(s *xorm.Session, _ web.Auth) (err error) {
Where("bucket_id = ?", b.ID).
Cols("bucket_id").
Update(&Task{BucketID: defaultBucketID})
if err != nil {
return
}

// Remove the bucket itself
_, err = s.Where("id = ?", b.ID).Delete(&Bucket{})
return
}
17 changes: 17 additions & 0 deletions pkg/models/kanban_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,23 @@ func TestBucket_Delete(t *testing.T) {
"project_id": 18,
}, false)
})
t.Run("done bucket should be reset", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
s := db.NewSession()
defer s.Close()

b := &Bucket{
ID: 3,
ProjectID: 1,
}
err := b.Delete(s, user)
require.NoError(t, err)

db.AssertMissing(t, "projects", map[string]interface{}{
"id": 1,
"done_bucket_id": 3,
})
})
}

func TestBucket_Update(t *testing.T) {
Expand Down

0 comments on commit 5b2b7f7

Please sign in to comment.