2023-04-25 22:48:30 +03:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
2024-11-03 00:04:53 +03:00
package templates
2023-04-25 22:48:30 +03:00
import (
"testing"
"time"
"code.gitea.io/gitea/modules/setting"
2024-01-02 22:09:18 +03:00
"code.gitea.io/gitea/modules/test"
2024-11-03 00:04:53 +03:00
"code.gitea.io/gitea/modules/timeutil"
2023-04-25 22:48:30 +03:00
"github.com/stretchr/testify/assert"
)
func TestDateTime ( t * testing . T ) {
2024-01-02 22:09:18 +03:00
testTz , _ := time . LoadLocation ( "America/New_York" )
defer test . MockVariableValue ( & setting . DefaultUILocation , testTz ) ( )
2024-11-03 00:04:53 +03:00
defer test . MockVariableValue ( & setting . IsInTesting , false ) ( )
2024-11-04 14:30:00 +03:00
du := NewDateUtils ( )
2023-04-25 22:48:30 +03:00
refTimeStr := "2018-01-01T00:00:00Z"
2024-03-13 01:37:02 +03:00
refDateStr := "2018-01-01"
2023-04-25 22:48:30 +03:00
refTime , _ := time . Parse ( time . RFC3339 , refTimeStr )
2024-11-03 00:04:53 +03:00
refTimeStamp := timeutil . TimeStamp ( refTime . Unix ( ) )
2023-04-25 22:48:30 +03:00
2024-11-03 00:04:53 +03:00
assert . EqualValues ( t , "-" , du . AbsoluteShort ( nil ) )
assert . EqualValues ( t , "-" , du . AbsoluteShort ( 0 ) )
assert . EqualValues ( t , "-" , du . AbsoluteShort ( time . Time { } ) )
assert . EqualValues ( t , "-" , du . AbsoluteShort ( timeutil . TimeStamp ( 0 ) ) )
2023-04-25 22:48:30 +03:00
2024-11-03 00:04:53 +03:00
actual := dateTimeLegacy ( "short" , "invalid" )
assert . EqualValues ( t , ` - ` , actual )
2023-04-25 22:48:30 +03:00
2024-11-03 00:04:53 +03:00
actual = dateTimeLegacy ( "short" , refTimeStr )
assert . EqualValues ( t , ` <absolute-date weekday="" year="numeric" month="short" day="numeric" date="2018-01-01T00:00:00Z">2018-01-01</absolute-date> ` , actual )
2023-04-25 22:48:30 +03:00
2024-11-03 00:04:53 +03:00
actual = du . AbsoluteShort ( refTime )
2024-03-15 05:05:31 +03:00
assert . EqualValues ( t , ` <absolute-date weekday="" year="numeric" month="short" day="numeric" date="2018-01-01T00:00:00Z">2018-01-01</absolute-date> ` , actual )
2024-03-13 01:37:02 +03:00
2024-11-03 00:04:53 +03:00
actual = dateTimeLegacy ( "short" , refDateStr )
assert . EqualValues ( t , ` <absolute-date weekday="" year="numeric" month="short" day="numeric" date="2018-01-01T00:00:00-05:00">2018-01-01</absolute-date> ` , actual )
2023-04-25 22:48:30 +03:00
2024-11-03 00:04:53 +03:00
actual = du . AbsoluteShort ( refTimeStamp )
2024-03-15 05:05:31 +03:00
assert . EqualValues ( t , ` <absolute-date weekday="" year="numeric" month="short" day="numeric" date="2017-12-31T19:00:00-05:00">2017-12-31</absolute-date> ` , actual )
2023-04-25 22:48:30 +03:00
2024-11-03 00:04:53 +03:00
actual = du . FullTime ( refTimeStamp )
2024-03-13 01:37:02 +03:00
assert . EqualValues ( t , ` <relative-time weekday="" year="numeric" format="datetime" month="short" day="numeric" hour="numeric" minute="numeric" second="numeric" data-tooltip-content data-tooltip-interactive="true" datetime="2017-12-31T19:00:00-05:00">2017-12-31 19:00:00 -05:00</relative-time> ` , actual )
2023-04-25 22:48:30 +03:00
}
2024-11-04 14:30:00 +03:00
func TestTimeSince ( t * testing . T ) {
testTz , _ := time . LoadLocation ( "America/New_York" )
defer test . MockVariableValue ( & setting . DefaultUILocation , testTz ) ( )
defer test . MockVariableValue ( & setting . IsInTesting , false ) ( )
du := NewDateUtils ( )
assert . EqualValues ( t , "-" , du . TimeSince ( nil ) )
refTimeStr := "2018-01-01T00:00:00Z"
refTime , _ := time . Parse ( time . RFC3339 , refTimeStr )
actual := du . TimeSince ( refTime )
assert . EqualValues ( t , ` <relative-time prefix="" tense="past" datetime="2018-01-01T00:00:00Z" data-tooltip-content data-tooltip-interactive="true">2018-01-01 00:00:00 +00:00</relative-time> ` , actual )
actual = timeSinceTo ( & refTime , time . Time { } )
assert . EqualValues ( t , ` <relative-time prefix="" tense="future" datetime="2018-01-01T00:00:00Z" data-tooltip-content data-tooltip-interactive="true">2018-01-01 00:00:00 +00:00</relative-time> ` , actual )
actual = timeSinceLegacy ( timeutil . TimeStampNano ( refTime . UnixNano ( ) ) , nil )
assert . EqualValues ( t , ` <relative-time prefix="" tense="past" datetime="2017-12-31T19:00:00-05:00" data-tooltip-content data-tooltip-interactive="true">2017-12-31 19:00:00 -05:00</relative-time> ` , actual )
}