update duration jbytes
All checks were successful
Go Action / goaction (pull_request) Successful in 58s
All checks were successful
Go Action / goaction (pull_request) Successful in 58s
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package value
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"gitoa.ru/go-4devs/config"
|
||||
@@ -45,7 +47,17 @@ func (s JBytes) ParseBool() (bool, error) {
|
||||
}
|
||||
|
||||
func (s JBytes) ParseDuration() (time.Duration, error) {
|
||||
return JParce[time.Duration](s.Bytes())
|
||||
jdata, jerr := JParce[time.Duration](s.Bytes())
|
||||
if jerr == nil {
|
||||
return jdata, nil
|
||||
}
|
||||
|
||||
ustr, serr := s.ParseString()
|
||||
if serr != nil {
|
||||
return 0, errors.Join(jerr, fmt.Errorf("parse duration:%w", serr))
|
||||
}
|
||||
|
||||
return ParseDuration(ustr)
|
||||
}
|
||||
|
||||
func (s JBytes) ParseTime() (time.Time, error) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package value_test
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gitoa.ru/go-4devs/config"
|
||||
"gitoa.ru/go-4devs/config/test/require"
|
||||
@@ -40,3 +41,34 @@ func TestJBytes_Unmarshal(t *testing.T) {
|
||||
require.ErrorIs(t, sta.Unmarshal(ac), config.ErrInvalidValue)
|
||||
require.ErrorIs(t, sta.Unmarshal(&ac), config.ErrInvalidValue)
|
||||
}
|
||||
|
||||
func TestJBytes_Duration(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
ex := 42 * time.Minute
|
||||
data, err := json.Marshal("42m")
|
||||
require.NoError(t, err)
|
||||
|
||||
valueDuration := value.JBytes(data)
|
||||
|
||||
var exp time.Duration
|
||||
|
||||
require.ErrorIs(t, valueDuration.Unmarshal(&exp), config.ErrInvalidValue)
|
||||
|
||||
pdur, perr := valueDuration.ParseDuration()
|
||||
require.NoError(t, perr)
|
||||
require.Equal(t, pdur, ex)
|
||||
|
||||
jdata, jerr := json.Marshal(ex)
|
||||
require.NoError(t, jerr)
|
||||
|
||||
jDuration := value.JBytes(jdata)
|
||||
|
||||
var jexp time.Duration
|
||||
require.NoError(t, jDuration.Unmarshal(&jexp))
|
||||
require.Equal(t, jexp, ex)
|
||||
|
||||
jpdur, jperr := jDuration.ParseDuration()
|
||||
require.NoError(t, jperr)
|
||||
require.Equal(t, jpdur, ex)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user