Fix moving repeating tasks to the done bucket

This commit is contained in:
kolaente 2021-04-15 16:36:24 +02:00
parent 2547de59ae
commit 6e5a9868f5
No known key found for this signature in database
GPG key ID: F40E70337AB24C9B
2 changed files with 25 additions and 3 deletions

View file

@ -954,14 +954,14 @@ func (t *Task) Update(s *xorm.Session, a web.Auth) (err error) {
"repeat_mode", "repeat_mode",
} }
// When a repeating task is marked as done, we update all deadlines and reminders and set it as undone
updateDone(&ot, t)
err = setTaskBucket(s, t, &ot, t.BucketID != ot.BucketID) err = setTaskBucket(s, t, &ot, t.BucketID != ot.BucketID)
if err != nil { if err != nil {
return err return err
} }
// When a repeating task is marked as done, we update all deadlines and reminders and set it as undone
updateDone(&ot, t)
// If the task is being moved between lists, make sure to move the bucket + index as well // If the task is being moved between lists, make sure to move the bucket + index as well
if t.ListID != 0 && ot.ListID != t.ListID { if t.ListID != 0 && ot.ListID != t.ListID {
latestTask := &Task{} latestTask := &Task{}

View file

@ -302,6 +302,28 @@ func TestTask_Update(t *testing.T) {
"bucket_id": 4, "bucket_id": 4,
}, false) }, false)
}) })
t.Run("repeating tasks should not be moved to the done bucket", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
s := db.NewSession()
defer s.Close()
task := &Task{
ID: 28,
Done: true,
}
err := task.Update(s, u)
assert.NoError(t, err)
err = s.Commit()
assert.NoError(t, err)
assert.False(t, task.Done)
assert.Equal(t, int64(1), task.BucketID)
db.AssertExists(t, "tasks", map[string]interface{}{
"id": 28,
"done": false,
"bucket_id": 1,
}, false)
})
} }
func TestTask_Delete(t *testing.T) { func TestTask_Delete(t *testing.T) {