#1416: Step 2b Use Reminders in updateDone and migrations
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/pr Build is failing
Details
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.
|
||||
// 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 {
|
||||
for in, r := range oldTask.ReminderDates {
|
||||
newTask.ReminderDates[in] = r.Add(repeatDuration)
|
||||
for !newTask.ReminderDates[in].After(now) {
|
||||
newTask.ReminderDates[in] = newTask.ReminderDates[in].Add(repeatDuration)
|
||||
if len(oldTask.Reminders) > 0 {
|
||||
for in, r := range oldTask.Reminders {
|
||||
newTask.Reminders[in].Reminder = r.Reminder.Add(repeatDuration)
|
||||
for !newTask.Reminders[in].Reminder.After(now) {
|
||||
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.ReminderDates = oldTask.ReminderDates
|
||||
if len(oldTask.ReminderDates) > 0 {
|
||||
for in, r := range oldTask.ReminderDates {
|
||||
newTask.ReminderDates[in] = addOneMonthToDate(r)
|
||||
newTask.Reminders = oldTask.Reminders
|
||||
if len(oldTask.Reminders) > 0 {
|
||||
for in, r := range oldTask.Reminders {
|
||||
newTask.Reminders[in].Reminder = addOneMonthToDate(r.Reminder)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1426,17 +1426,17 @@ func setTaskDatesFromCurrentDateRepeat(oldTask, newTask *Task) {
|
|||
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.
|
||||
// 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 {
|
||||
sort.Slice(oldTask.ReminderDates, func(i, j int) bool {
|
||||
return oldTask.ReminderDates[i].Unix() < oldTask.ReminderDates[j].Unix()
|
||||
if len(oldTask.Reminders) > 0 {
|
||||
sort.Slice(oldTask.Reminders, func(i, j int) bool {
|
||||
return oldTask.Reminders[i].Reminder.Unix() < oldTask.Reminders[j].Reminder.Unix()
|
||||
})
|
||||
first := oldTask.ReminderDates[0]
|
||||
for in, r := range oldTask.ReminderDates {
|
||||
diff := r.Sub(first)
|
||||
newTask.ReminderDates[in] = now.Add(repeatDuration + diff)
|
||||
first := oldTask.Reminders[0].Reminder
|
||||
for in, r := range oldTask.Reminders {
|
||||
diff := r.Reminder.Sub(first)
|
||||
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
|
||||
for _, r := range reminderMap {
|
||||
_, err = s.Insert(&TaskReminder{TaskID: t.ID, Reminder: r.Reminder})
|
||||
t.Reminders = append(t.Reminders, &r)
|
||||
t.ReminderDates = append(t.ReminderDates, r.Reminder)
|
||||
taskReminder := &TaskReminder{TaskID: t.ID, Reminder: r.Reminder}
|
||||
_, err = s.Insert(taskReminder)
|
||||
t.Reminders = append(t.Reminders, taskReminder)
|
||||
t.ReminderDates = append(t.ReminderDates, taskReminder.Reminder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -516,9 +516,13 @@ func TestUpdateDone(t *testing.T) {
|
|||
oldTask := &Task{
|
||||
Done: false,
|
||||
RepeatAfter: 8600,
|
||||
ReminderDates: []time.Time{
|
||||
time.Unix(1550000000, 0),
|
||||
time.Unix(1555000000, 0),
|
||||
Reminders: []*TaskReminder{
|
||||
{
|
||||
Reminder: time.Unix(1550000000, 0),
|
||||
},
|
||||
{
|
||||
Reminder: time.Unix(1555000000, 0),
|
||||
},
|
||||
},
|
||||
}
|
||||
newTask := &Task{
|
||||
|
@ -535,9 +539,9 @@ func TestUpdateDone(t *testing.T) {
|
|||
expected2 = expected2.Add(time.Duration(oldTask.RepeatAfter) * time.Second)
|
||||
}
|
||||
|
||||
assert.Len(t, newTask.ReminderDates, 2)
|
||||
assert.Equal(t, expected1, newTask.ReminderDates[0])
|
||||
assert.Equal(t, expected2, newTask.ReminderDates[1])
|
||||
assert.Len(t, newTask.Reminders, 2)
|
||||
assert.Equal(t, expected1, newTask.Reminders[0].Reminder)
|
||||
assert.Equal(t, expected2, newTask.Reminders[1].Reminder)
|
||||
assert.False(t, newTask.Done)
|
||||
})
|
||||
t.Run("update start date", func(t *testing.T) {
|
||||
|
@ -614,22 +618,25 @@ func TestUpdateDone(t *testing.T) {
|
|||
Done: false,
|
||||
RepeatAfter: 8600,
|
||||
RepeatMode: TaskRepeatModeFromCurrentDate,
|
||||
ReminderDates: []time.Time{
|
||||
time.Unix(1550000000, 0),
|
||||
time.Unix(1555000000, 0),
|
||||
},
|
||||
}
|
||||
Reminders: []*TaskReminder{
|
||||
{
|
||||
Reminder: time.Unix(1550000000, 0),
|
||||
},
|
||||
{
|
||||
Reminder: time.Unix(1555000000, 0),
|
||||
},
|
||||
}}
|
||||
newTask := &Task{
|
||||
Done: true,
|
||||
}
|
||||
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
|
||||
assert.Equal(t, time.Now().Add(time.Duration(oldTask.RepeatAfter)*time.Second).Unix(), newTask.ReminderDates[0].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(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.Reminders[1].Reminder.Unix())
|
||||
assert.False(t, newTask.Done)
|
||||
})
|
||||
t.Run("start date", func(t *testing.T) {
|
||||
|
@ -707,23 +714,28 @@ func TestUpdateDone(t *testing.T) {
|
|||
oldTask := &Task{
|
||||
Done: false,
|
||||
RepeatMode: TaskRepeatModeMonth,
|
||||
ReminderDates: []time.Time{
|
||||
time.Unix(1550000000, 0),
|
||||
time.Unix(1555000000, 0),
|
||||
},
|
||||
}
|
||||
Reminders: []*TaskReminder{
|
||||
{
|
||||
Reminder: time.Unix(1550000000, 0),
|
||||
},
|
||||
{
|
||||
Reminder: time.Unix(1555000000, 0),
|
||||
},
|
||||
}}
|
||||
newTask := &Task{
|
||||
Done: true,
|
||||
}
|
||||
oldReminders := make([]time.Time, len(oldTask.ReminderDates))
|
||||
copy(oldReminders, oldTask.ReminderDates)
|
||||
oldReminders := make([]time.Time, len(oldTask.Reminders))
|
||||
for i, r := range newTask.Reminders {
|
||||
oldReminders[i] = r.Reminder
|
||||
}
|
||||
|
||||
updateDone(oldTask, newTask)
|
||||
|
||||
assert.Len(t, newTask.ReminderDates, len(oldReminders))
|
||||
for i, r := range newTask.ReminderDates {
|
||||
assert.True(t, r.After(oldReminders[i]))
|
||||
assert.NotEqual(t, oldReminders[i].Month(), r.Month())
|
||||
assert.Len(t, newTask.Reminders, len(oldReminders))
|
||||
for i, r := range newTask.Reminders {
|
||||
assert.True(t, r.Reminder.After(oldReminders[i]))
|
||||
assert.NotEqual(t, oldReminders[i].Month(), r.Reminder.Month())
|
||||
}
|
||||
assert.False(t, newTask.Done)
|
||||
})
|
||||
|
|
|
@ -329,7 +329,9 @@ func convertMicrosoftTodoData(todoData []*list) (vikunjsStructure []*models.Name
|
|||
return nil, err
|
||||
}
|
||||
|
||||
task.ReminderDates = []time.Time{reminder}
|
||||
task.Reminders = []*models.TaskReminder{
|
||||
{Reminder: reminder},
|
||||
}
|
||||
}
|
||||
|
||||
// Due Date
|
||||
|
|
|
@ -141,8 +141,10 @@ func TestConverting(t *testing.T) {
|
|||
{
|
||||
Task: models.Task{
|
||||
Title: "Task 5",
|
||||
ReminderDates: []time.Time{
|
||||
testtimeTime,
|
||||
Reminders: []*models.TaskReminder{
|
||||
{
|
||||
Reminder: testtimeTime,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -471,7 +471,10 @@ func convertTodoistToVikunja(sync *sync, doneItems map[string]*doneItem) (fullVi
|
|||
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{
|
||||
|
|
|
@ -388,9 +388,9 @@ func TestConvertTodoistToVikunja(t *testing.T) {
|
|||
Description: "Lorem Ipsum dolor sit amet",
|
||||
Done: false,
|
||||
Created: time1,
|
||||
ReminderDates: []time.Time{
|
||||
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()),
|
||||
Reminders: []*models.TaskReminder{
|
||||
{Reminder: time.Date(2020, time.June, 15, 23, 59, 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",
|
||||
Done: false,
|
||||
Created: time1,
|
||||
ReminderDates: []time.Time{
|
||||
time.Date(2020, time.July, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
||||
Reminders: []*models.TaskReminder{
|
||||
{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,
|
||||
DoneAt: time3,
|
||||
Labels: vikunjaLabels,
|
||||
ReminderDates: []time.Time{
|
||||
time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
||||
Reminders: []*models.TaskReminder{
|
||||
{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,
|
||||
Created: time1,
|
||||
DoneAt: time3,
|
||||
ReminderDates: []time.Time{
|
||||
time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
||||
Reminders: []*models.TaskReminder{
|
||||
{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",
|
||||
Done: false,
|
||||
Created: time1,
|
||||
ReminderDates: []time.Time{
|
||||
time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone()),
|
||||
Reminders: []*models.TaskReminder{
|
||||
{Reminder: time.Date(2020, time.June, 15, 7, 0, 0, 0, time.UTC).In(config.GetTimeZone())},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue