diff --git a/internal/adapter/handlebars/handlebars_test.go b/internal/adapter/handlebars/handlebars_test.go index 373cd7a..ea6b8ca 100644 --- a/internal/adapter/handlebars/handlebars_test.go +++ b/internal/adapter/handlebars/handlebars_test.go @@ -243,6 +243,102 @@ func TestFormatDateHelper(t *testing.T) { testString(t, "{{format-date now 'elapsed'}}", context, "14 years ago") } +func TestFormatDateHelperElapsed(t *testing.T) { + cases := []struct { + elapsed time.Duration + want string + }{ + { + elapsed: -12 * time.Minute, + want: "not yet", + }, + { + elapsed: 23 * time.Second, + want: "just now", + }, + { + elapsed: 1 * time.Minute, + want: "1 minute ago", + }, + { + elapsed: 90 * time.Second, + want: "1 minute ago", + }, + { + elapsed: 17 * time.Minute, + want: "17 minutes ago", + }, + { + elapsed: time.Hour, + want: "1 hour ago", + }, + { + elapsed: 3 * time.Hour, + want: "3 hours ago", + }, + { + elapsed: 4 * 24 * time.Hour, + want: "4 days ago", + }, + { + elapsed: 7 * 24 * time.Hour, + want: "1 week ago", + }, + { + elapsed: 18 * 24 * time.Hour, + want: "3 weeks ago", + }, + { + elapsed: 30 * 24 * time.Hour, + want: "1 month ago", + }, + { + elapsed: 31 * 24 * time.Hour, + want: "2 months ago", + }, + { + elapsed: 45 * 24 * time.Hour, + want: "2 months ago", + }, + { + elapsed: 60 * 24 * time.Hour, + want: "2 months ago", + }, + { + elapsed: 90 * 24 * time.Hour, + want: "3 months ago", + }, + { + elapsed: 93 * 24 * time.Hour, + want: "4 months ago", + }, + { + elapsed: 180 * 24 * time.Hour, + want: "6 months ago", + }, + { + elapsed: 193 * 24 * time.Hour, + want: "7 months ago", + }, + { + elapsed: 365 * 24 * time.Hour, + want: "1 year ago", + }, + { + elapsed: 367 * 24 * time.Hour, + want: "2 years ago", + }, + } + + for _, tc := range cases { + t.Run(tc.want, func(t *testing.T) { + templateContext := map[string]interface{}{"now": time.Now().Add(-tc.elapsed)} + + testString(t, "{{format-date now 'elapsed'}}", templateContext, tc.want) + }) + } +} + func TestDateHelper(t *testing.T) { context := map[string]interface{}{"now": time.Date(2009, 11, 17, 20, 34, 58, 651387237, time.UTC)} testString(t, "{{format-date (date \"2009-11-17T20:34:58\") 'timestamp'}}", context, "200911172034")