#1416: Step 2b Use Reminders in updateDone and migrations
Some checks failed
continuous-integration/drone/pr Build is failing
Some checks failed
continuous-integration/drone/pr Build is failing
This commit is contained in:
parent
85267d26bb
commit
4a41a8a6ca
|
@ -1352,14 +1352,14 @@ func setTaskDatesDefault(oldTask, newTask *Task) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newTask.ReminderDates = oldTask.ReminderDates
|
newTask.Reminders = oldTask.Reminders
|
||||||
// When repeating from the current date, all reminders should keep their difference to each other.
|
// When repeating from the current date, all reminders should keep their difference to each other.
|
||||||
// To make this easier, we sort them first because we can then rely on the fact the first is the smallest
|
// To make this easier, we sort them first because we can then rely on the fact the first is the smallest
|
||||||
if len(oldTask.ReminderDates) > 0 {
|
if len(oldTask.Reminders) > 0 {
|
||||||
for in, r := range oldTask.ReminderDates {
|
for in, r := range oldTask.Reminders {
|
||||||
newTask.ReminderDates[in] = r.Add(repeatDuration)
|
newTask.Reminders[in].Reminder = r.Reminder.Add(repeatDuration)
|
||||||
for !newTask.ReminderDates[in].After(now) {
|
for !newTask.Reminders[in].Reminder.After(now) {
|
||||||
newTask.ReminderDates[in] = newTask.ReminderDates[in].Add(repeatDuration)
|
newTask.Reminders[in].Reminder = newTask.Reminders[in].Reminder.Add(repeatDuration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1387,10 +1387,10 @@ func setTaskDatesMonthRepeat(oldTask, newTask *Task) {
|
||||||
newTask.DueDate = addOneMonthToDate(oldTask.DueDate)
|
newTask.DueDate = addOneMonthToDate(oldTask.DueDate)
|
||||||
}
|
}
|
||||||
|
|
||||||
newTask.ReminderDates = oldTask.ReminderDates
|
newTask.Reminders = oldTask.Reminders
|
||||||
if len(oldTask.ReminderDates) > 0 {
|
if len(oldTask.Reminders) > 0 {
|
||||||
for in, r := range oldTask.ReminderDates {
|
for in, r := range oldTask.Reminders {
|
||||||
newTask.ReminderDates[in] = addOneMonthToDate(r)
|
newTask.Reminders[in].Reminder = addOneMonthToDate(r.Reminder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1426,17 +1426,17 @@ func setTaskDatesFromCurrentDateRepeat(oldTask, newTask *Task) {
|
||||||
newTask.DueDate = now.Add(repeatDuration)
|
newTask.DueDate = now.Add(repeatDuration)
|
||||||
}
|
}
|
||||||
|
|
||||||
newTask.ReminderDates = oldTask.ReminderDates
|
newTask.Reminders = oldTask.Reminders
|
||||||
// When repeating from the current date, all reminders should keep their difference to each other.
|
// When repeating from the current date, all reminders should keep their difference to each other.
|
||||||
// To make this easier, we sort them first because we can then rely on the fact the first is the smallest
|
// To make this easier, we sort them first because we can then rely on the fact the first is the smallest
|
||||||
if len(oldTask.ReminderDates) > 0 {
|
if len(oldTask.Reminders) > 0 {
|
||||||
sort.Slice(oldTask.ReminderDates, func(i, j int) bool {
|
sort.Slice(oldTask.Reminders, func(i, j int) bool {
|
||||||
return oldTask.ReminderDates[i].Unix() < oldTask.ReminderDates[j].Unix()
|
return oldTask.Reminders[i].Reminder.Unix() < oldTask.Reminders[j].Reminder.Unix()
|
||||||
})
|
})
|
||||||
first := oldTask.ReminderDates[0]
|
first := oldTask.Reminders[0].Reminder
|
||||||
for in, r := range oldTask.ReminderDates {
|
for in, r := range oldTask.Reminders {
|
||||||
diff := r.Sub(first)
|
diff := r.Reminder.Sub(first)
|
||||||
newTask.ReminderDates[in] = now.Add(repeatDuration + diff)
|
newTask.Reminders[in].Reminder = now.Add(repeatDuration + diff)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1543,9 +1543,10 @@ func (t *Task) updateReminders(s *xorm.Session, reminders []*TaskReminder) (err
|
||||||
|
|
||||||
// Loop through all reminders and add them
|
// Loop through all reminders and add them
|
||||||
for _, r := range reminderMap {
|
for _, r := range reminderMap {
|
||||||
_, err = s.Insert(&TaskReminder{TaskID: t.ID, Reminder: r.Reminder})
|
taskReminder := &TaskReminder{TaskID: t.ID, Reminder: r.Reminder}
|
||||||
t.Reminders = append(t.Reminders, &r)
|
_, err = s.Insert(taskReminder)
|
||||||
t.ReminderDates = append(t.ReminderDates, r.Reminder)
|
t.Reminders = append(t.Reminders, taskReminder)
|
||||||
|
t.ReminderDates = append(t.ReminderDates, taskReminder.Reminder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,9 +516,13 @@ func TestUpdateDone(t *testing.T) {
|
||||||
oldTask := &Task{
|
oldTask := &Task{
|
||||||
Done: false,
|
Done: false,
|
||||||
RepeatAfter: 8600,
|
RepeatAfter: 8600,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*TaskReminder{
|
||||||
time.Unix(1550000000, 0),
|
{
|
||||||
time.Unix(1555000000, 0),
|
Reminder: time.Unix(1550000000, 0),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Reminder: time.Unix(1555000000, 0),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
newTask := &Task{
|
newTask := &Task{
|
||||||
|
@ -535,9 +539,9 @@ func TestUpdateDone(t *testing.T) {
|
||||||
expected2 = expected2.Add(time.Duration(oldTask.RepeatAfter) * time.Second)
|
expected2 = expected2.Add(time.Duration(oldTask.RepeatAfter) * time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.Len(t, newTask.ReminderDates, 2)
|
assert.Len(t, newTask.Reminders, 2)
|
||||||
assert.Equal(t, expected1, newTask.ReminderDates[0])
|
assert.Equal(t, expected1, newTask.Reminders[0].Reminder)
|
||||||
assert.Equal(t, expected2, newTask.ReminderDates[1])
|
assert.Equal(t, expected2, newTask.Reminders[1].Reminder)
|
||||||
assert.False(t, newTask.Done)
|
assert.False(t, newTask.Done)
|
||||||
})
|
})
|
||||||
t.Run("update start date", func(t *testing.T) {
|
t.Run("update start date", func(t *testing.T) {
|
||||||
|
@ -614,22 +618,25 @@ func TestUpdateDone(t *testing.T) {
|
||||||
Done: false,
|
Done: false,
|
||||||
RepeatAfter: 8600,
|
RepeatAfter: 8600,
|
||||||
RepeatMode: TaskRepeatModeFromCurrentDate,
|
RepeatMode: TaskRepeatModeFromCurrentDate,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*TaskReminder{
|
||||||
time.Unix(1550000000, 0),
|
{
|
||||||
time.Unix(1555000000, 0),
|
Reminder: time.Unix(1550000000, 0),
|
||||||
},
|
},
|
||||||
}
|
{
|
||||||
|
Reminder: time.Unix(1555000000, 0),
|
||||||
|
},
|
||||||
|
}}
|
||||||
newTask := &Task{
|
newTask := &Task{
|
||||||
Done: true,
|
Done: true,
|
||||||
}
|
}
|
||||||
updateDone(oldTask, newTask)
|
updateDone(oldTask, newTask)
|
||||||
|
|
||||||
diff := oldTask.ReminderDates[1].Sub(oldTask.ReminderDates[0])
|
diff := oldTask.Reminders[1].Reminder.Sub(oldTask.Reminders[0].Reminder)
|
||||||
|
|
||||||
assert.Len(t, newTask.ReminderDates, 2)
|
assert.Len(t, newTask.Reminders, 2)
|
||||||
// Only comparing unix timestamps because time.Time use nanoseconds which can't ever possibly have the same value
|
// Only comparing unix timestamps because time.Time use nanoseconds which can't ever possibly have the same value
|
||||||
assert.Equal(t, time.Now().Add(time.Duration(oldTask.RepeatAfter)*time.Second).Unix(), newTask.ReminderDates[0].Unix())
|
assert.Equal(t, time.Now().Add(time.Duration(oldTask.RepeatAfter)*time.Second).Unix(), newTask.Reminders[0].Reminder.Unix())
|
||||||
assert.Equal(t, time.Now().Add(diff+time.Duration(oldTask.RepeatAfter)*time.Second).Unix(), newTask.ReminderDates[1].Unix())
|
assert.Equal(t, time.Now().Add(diff+time.Duration(oldTask.RepeatAfter)*time.Second).Unix(), newTask.Reminders[1].Reminder.Unix())
|
||||||
assert.False(t, newTask.Done)
|
assert.False(t, newTask.Done)
|
||||||
})
|
})
|
||||||
t.Run("start date", func(t *testing.T) {
|
t.Run("start date", func(t *testing.T) {
|
||||||
|
@ -707,23 +714,28 @@ func TestUpdateDone(t *testing.T) {
|
||||||
oldTask := &Task{
|
oldTask := &Task{
|
||||||
Done: false,
|
Done: false,
|
||||||
RepeatMode: TaskRepeatModeMonth,
|
RepeatMode: TaskRepeatModeMonth,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*TaskReminder{
|
||||||
time.Unix(1550000000, 0),
|
{
|
||||||
time.Unix(1555000000, 0),
|
Reminder: time.Unix(1550000000, 0),
|
||||||
},
|
},
|
||||||
}
|
{
|
||||||
|
Reminder: time.Unix(1555000000, 0),
|
||||||
|
},
|
||||||
|
}}
|
||||||
newTask := &Task{
|
newTask := &Task{
|
||||||
Done: true,
|
Done: true,
|
||||||
}
|
}
|
||||||
oldReminders := make([]time.Time, len(oldTask.ReminderDates))
|
oldReminders := make([]time.Time, len(oldTask.Reminders))
|
||||||
copy(oldReminders, oldTask.ReminderDates)
|
for i, r := range newTask.Reminders {
|
||||||
|
oldReminders[i] = r.Reminder
|
||||||
|
}
|
||||||
|
|
||||||
updateDone(oldTask, newTask)
|
updateDone(oldTask, newTask)
|
||||||
|
|
||||||
assert.Len(t, newTask.ReminderDates, len(oldReminders))
|
assert.Len(t, newTask.Reminders, len(oldReminders))
|
||||||
for i, r := range newTask.ReminderDates {
|
for i, r := range newTask.Reminders {
|
||||||
assert.True(t, r.After(oldReminders[i]))
|
assert.True(t, r.Reminder.After(oldReminders[i]))
|
||||||
assert.NotEqual(t, oldReminders[i].Month(), r.Month())
|
assert.NotEqual(t, oldReminders[i].Month(), r.Reminder.Month())
|
||||||
}
|
}
|
||||||
assert.False(t, newTask.Done)
|
assert.False(t, newTask.Done)
|
||||||
})
|
})
|
||||||
|
|
|
@ -329,7 +329,9 @@ func convertMicrosoftTodoData(todoData []*list) (vikunjsStructure []*models.Name
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
task.ReminderDates = []time.Time{reminder}
|
task.Reminders = []*models.TaskReminder{
|
||||||
|
{Reminder: reminder},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Due Date
|
// Due Date
|
||||||
|
|
|
@ -141,8 +141,10 @@ func TestConverting(t *testing.T) {
|
||||||
{
|
{
|
||||||
Task: models.Task{
|
Task: models.Task{
|
||||||
Title: "Task 5",
|
Title: "Task 5",
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*models.TaskReminder{
|
||||||
testtimeTime,
|
{
|
||||||
|
Reminder: testtimeTime,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -471,7 +471,10 @@ func convertTodoistToVikunja(sync *sync, doneItems map[string]*doneItem) (fullVi
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks[r.ItemID].ReminderDates = append(tasks[r.ItemID].ReminderDates, date.In(config.GetTimeZone()))
|
tasks[r.ItemID].Reminders = append(tasks[r.ItemID].Reminders, &models.TaskReminder{
|
||||||
|
Reminder: date.In(config.GetTimeZone()),
|
||||||
|
},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return []*models.NamespaceWithListsAndTasks{
|
return []*models.NamespaceWithListsAndTasks{
|
||||||
|
|
|
@ -388,9 +388,9 @@ func TestConvertTodoistToVikunja(t *testing.T) {
|
||||||
Description: "Lorem Ipsum dolor sit amet",
|
Description: "Lorem Ipsum dolor sit amet",
|
||||||
Done: false,
|
Done: false,
|
||||||
Created: time1,
|
Created: time1,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*models.TaskReminder{
|
||||||
time.Date(2020, time.June, 15, 23, 59, 0, 0, time.UTC).In(config.GetTimeZone()),
|
{Reminder: time.Date(2020, time.June, 15, 23, 59, 0, 0, time.UTC).In(config.GetTimeZone())},
|
||||||
time.Date(2020, time.June, 16, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
{Reminder: time.Date(2020, time.June, 16, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone())},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -407,8 +407,8 @@ func TestConvertTodoistToVikunja(t *testing.T) {
|
||||||
Title: "Task400000002",
|
Title: "Task400000002",
|
||||||
Done: false,
|
Done: false,
|
||||||
Created: time1,
|
Created: time1,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*models.TaskReminder{
|
||||||
time.Date(2020, time.July, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
{Reminder: time.Date(2020, time.July, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone())},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -421,8 +421,8 @@ func TestConvertTodoistToVikunja(t *testing.T) {
|
||||||
Created: time1,
|
Created: time1,
|
||||||
DoneAt: time3,
|
DoneAt: time3,
|
||||||
Labels: vikunjaLabels,
|
Labels: vikunjaLabels,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*models.TaskReminder{
|
||||||
time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
{Reminder: time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone())},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -441,8 +441,8 @@ func TestConvertTodoistToVikunja(t *testing.T) {
|
||||||
DueDate: dueTime,
|
DueDate: dueTime,
|
||||||
Created: time1,
|
Created: time1,
|
||||||
DoneAt: time3,
|
DoneAt: time3,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*models.TaskReminder{
|
||||||
time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
{Reminder: time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone())},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -531,8 +531,8 @@ func TestConvertTodoistToVikunja(t *testing.T) {
|
||||||
Title: "Task400000009",
|
Title: "Task400000009",
|
||||||
Done: false,
|
Done: false,
|
||||||
Created: time1,
|
Created: time1,
|
||||||
ReminderDates: []time.Time{
|
Reminders: []*models.TaskReminder{
|
||||||
time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
{Reminder: time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone())},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue
Block a user