Fixed advance by one date bug by treating any out of order posts as a date bump.
the build was successful
the build was successful
This commit is contained in:
@@ -83,9 +83,12 @@ func MircPost(line string, date time.Time, prev models.Post) (models.Post, error
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Determine timestamp from parsed data and previous post.
|
// Determine timestamp from parsed data and previous post.
|
||||||
|
if !prev.Time.IsZero() {
|
||||||
|
date = prev.Time
|
||||||
|
}
|
||||||
ts := time.Date(date.Year(), date.Month(), date.Day(), tsUnits[0], tsUnits[1], tsUnits[2], 0, date.Location())
|
ts := time.Date(date.Year(), date.Month(), date.Day(), tsUnits[0], tsUnits[1], tsUnits[2], 0, date.Location())
|
||||||
if !prev.Time.IsZero() && prev.Time.Sub(ts) > 30*time.Minute {
|
if ts.Before(prev.Time) {
|
||||||
ts = time.Date(prev.Time.Year(), prev.Time.Month(), prev.Time.Day()+1, tsUnits[0], tsUnits[1], tsUnits[2], 0, date.Location())
|
ts = ts.Add(time.Hour * 24)
|
||||||
}
|
}
|
||||||
|
|
||||||
if line[tsEndIndex+2] == '*' {
|
if line[tsEndIndex+2] == '*' {
|
||||||
|
|||||||
@@ -92,7 +92,6 @@ func TestMircPostNextDay(t *testing.T) {
|
|||||||
Time time.Time
|
Time time.Time
|
||||||
}{
|
}{
|
||||||
{Prev: parseDate(t, "2019-01-12 12:00:00"), TS: "12:01", Time: parseDate(t, "2019-01-12 12:01:00")},
|
{Prev: parseDate(t, "2019-01-12 12:00:00"), TS: "12:01", Time: parseDate(t, "2019-01-12 12:01:00")},
|
||||||
{Prev: parseDate(t, "2019-01-12 12:00:00"), TS: "11:53:13", Time: parseDate(t, "2019-01-12 11:53:13")},
|
|
||||||
{Prev: parseDate(t, "2019-04-08 23:51:59"), TS: "00:09", Time: parseDate(t, "2019-04-09 00:09:00")},
|
{Prev: parseDate(t, "2019-04-08 23:51:59"), TS: "00:09", Time: parseDate(t, "2019-04-09 00:09:00")},
|
||||||
{Prev: parseDate(t, "2019-01-12 12:00:00"), TS: "11:29:59", Time: parseDate(t, "2019-01-13 11:29:59")},
|
{Prev: parseDate(t, "2019-01-12 12:00:00"), TS: "11:29:59", Time: parseDate(t, "2019-01-13 11:29:59")},
|
||||||
}
|
}
|
||||||
@@ -111,6 +110,41 @@ func TestMircPostNextDay(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMircPostDayPerPostBug(t *testing.T) {
|
||||||
|
startDate := parseDate(t, "2019-07-20 23:25:00")
|
||||||
|
table := []struct {
|
||||||
|
TS string
|
||||||
|
Time time.Time
|
||||||
|
}{
|
||||||
|
{TS: "23:25", Time: parseDate(t, "2019-07-20 23:25:00")},
|
||||||
|
{TS: "23:45", Time: parseDate(t, "2019-07-20 23:45:00")},
|
||||||
|
{TS: "23:59", Time: parseDate(t, "2019-07-20 23:59:00")},
|
||||||
|
{TS: "00:00", Time: parseDate(t, "2019-07-21 00:00:00")},
|
||||||
|
{TS: "00:03", Time: parseDate(t, "2019-07-21 00:03:00")},
|
||||||
|
{TS: "00:06", Time: parseDate(t, "2019-07-21 00:06:00")},
|
||||||
|
{TS: "12:00", Time: parseDate(t, "2019-07-21 12:00:00")},
|
||||||
|
{TS: "22:00", Time: parseDate(t, "2019-07-21 22:00:00")},
|
||||||
|
{TS: "23:55", Time: parseDate(t, "2019-07-21 23:55:00")},
|
||||||
|
{TS: "00:05", Time: parseDate(t, "2019-07-22 00:05:00")},
|
||||||
|
}
|
||||||
|
|
||||||
|
prev := startDate
|
||||||
|
for i, row := range table {
|
||||||
|
t.Run(fmt.Sprintf("Row_%d", i), func(t *testing.T) {
|
||||||
|
input := fmt.Sprintf("[%s] * Test post content.", row.TS)
|
||||||
|
|
||||||
|
post, err := parsers.MircPost(input, startDate, models.Post{Time: prev})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("Could not parse post:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
prev = post.Time
|
||||||
|
|
||||||
|
assert.Equal(t, row.Time, post.Time)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestMircLog(t *testing.T) {
|
func TestMircLog(t *testing.T) {
|
||||||
parsed, err := parsers.MircLog(testLog, parseDate(t, "2018-05-11 00:00:00"), false)
|
parsed, err := parsers.MircLog(testLog, parseDate(t, "2018-05-11 00:00:00"), false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user