2019-08-15 17:46:21 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-08-15 17:46:21 +03:00
package timeutil
import (
2022-08-28 12:43:25 +03:00
"context"
2019-08-15 17:46:21 +03:00
"os"
"testing"
"time"
"code.gitea.io/gitea/modules/setting"
2021-01-26 18:36:53 +03:00
"code.gitea.io/gitea/modules/translation"
2019-08-15 17:46:21 +03:00
"github.com/stretchr/testify/assert"
)
var BaseDate time . Time
// time durations
const (
DayDur = 24 * time . Hour
WeekDur = 7 * DayDur
MonthDur = 30 * DayDur
YearDur = 12 * MonthDur
)
func TestMain ( m * testing . M ) {
2021-01-26 18:36:53 +03:00
setting . StaticRootPath = "../../"
setting . Names = [ ] string { "english" }
setting . Langs = [ ] string { "en-US" }
2019-08-15 17:46:21 +03:00
// setup
2022-08-28 12:43:25 +03:00
translation . InitLocales ( context . Background ( ) )
2019-08-15 17:46:21 +03:00
BaseDate = time . Date ( 2000 , time . January , 1 , 0 , 0 , 0 , 0 , time . UTC )
// run the tests
retVal := m . Run ( )
os . Exit ( retVal )
}
func TestTimeSincePro ( t * testing . T ) {
2022-06-26 17:19:22 +03:00
assert . Equal ( t , "now" , timeSincePro ( BaseDate , BaseDate , translation . NewLocale ( "en-US" ) ) )
2019-08-15 17:46:21 +03:00
// test that a difference of `diff` yields the expected string
test := func ( expected string , diff time . Duration ) {
2022-06-26 17:19:22 +03:00
actual := timeSincePro ( BaseDate , BaseDate . Add ( diff ) , translation . NewLocale ( "en-US" ) )
2019-08-15 17:46:21 +03:00
assert . Equal ( t , expected , actual )
2022-06-26 17:19:22 +03:00
assert . Equal ( t , "future" , timeSincePro ( BaseDate . Add ( diff ) , BaseDate , translation . NewLocale ( "en-US" ) ) )
2019-08-15 17:46:21 +03:00
}
test ( "1 second" , time . Second )
test ( "2 seconds" , 2 * time . Second )
test ( "1 minute" , time . Minute )
test ( "1 minute, 1 second" , time . Minute + time . Second )
test ( "1 minute, 59 seconds" , time . Minute + 59 * time . Second )
test ( "2 minutes" , 2 * time . Minute )
test ( "1 hour" , time . Hour )
test ( "1 hour, 1 second" , time . Hour + time . Second )
test ( "1 hour, 59 minutes, 59 seconds" , time . Hour + 59 * time . Minute + 59 * time . Second )
test ( "2 hours" , 2 * time . Hour )
test ( "1 day" , DayDur )
test ( "1 day, 23 hours, 59 minutes, 59 seconds" ,
DayDur + 23 * time . Hour + 59 * time . Minute + 59 * time . Second )
test ( "2 days" , 2 * DayDur )
test ( "1 week" , WeekDur )
test ( "2 weeks" , 2 * WeekDur )
test ( "1 month" , MonthDur )
test ( "3 months" , 3 * MonthDur )
test ( "1 year" , YearDur )
test ( "2 years, 3 months, 1 week, 2 days, 4 hours, 12 minutes, 17 seconds" ,
2 * YearDur + 3 * MonthDur + WeekDur + 2 * DayDur + 4 * time . Hour +
12 * time . Minute + 17 * time . Second )
}
func TestMinutesToFriendly ( t * testing . T ) {
// test that a number of minutes yields the expected string
test := func ( expected string , minutes int ) {
2022-06-26 17:19:22 +03:00
actual := MinutesToFriendly ( minutes , translation . NewLocale ( "en-US" ) )
2019-08-15 17:46:21 +03:00
assert . Equal ( t , expected , actual )
}
test ( "1 minute" , 1 )
test ( "2 minutes" , 2 )
test ( "1 hour" , 60 )
test ( "1 hour, 1 minute" , 61 )
test ( "1 hour, 2 minutes" , 62 )
test ( "2 hours" , 120 )
}