Этот коммит содержится в:
Jesse Hallam
2019-02-25 12:07:45 -04:00
коммит произвёл GitHub
родитель 5b24c44e19
Коммит 72448d12a9
11 изменённых файлов: 25 добавлений и 666 удалений

Просмотреть файл

@@ -3,46 +3,20 @@
package timezones
import (
"encoding/json"
"io/ioutil"
"sync/atomic"
"github.com/mattermost/mattermost-server/utils/fileutils"
)
type Timezones struct {
supportedZones atomic.Value
supportedZones []string
}
func New(timezonesConfigFile string) *Timezones {
func New() *Timezones {
timezones := Timezones{}
if len(timezonesConfigFile) == 0 {
timezonesConfigFile = "timezones.json"
}
var supportedTimezones []string
// Attempt to get timezones from config. Failure results in defaults.
if timezoneFile := fileutils.FindConfigFile(timezonesConfigFile); timezoneFile == "" {
supportedTimezones = DefaultSupportedTimezones
} else if raw, err := ioutil.ReadFile(timezoneFile); err != nil {
supportedTimezones = DefaultSupportedTimezones
} else if err := json.Unmarshal(raw, &supportedTimezones); err != nil {
supportedTimezones = DefaultSupportedTimezones
}
timezones.supportedZones.Store(supportedTimezones)
timezones.supportedZones = DefaultSupportedTimezones
return &timezones
}
func (t *Timezones) GetSupported() []string {
if supportedZonesValue := t.supportedZones.Load(); supportedZonesValue != nil {
return supportedZonesValue.([]string)
}
return []string{}
return t.supportedZones
}
func DefaultUserTimezone() map[string]string {

Просмотреть файл

@@ -7,12 +7,27 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestTimezoneConfig(t *testing.T) {
tz1 := New("timezones.json")
tz1 := New()
assert.NotEmpty(t, tz1.GetSupported())
tz2 := New("timezones_file_does_not_exists.json")
assert.Equal(t, DefaultSupportedTimezones, tz2.GetSupported())
}
func TestDefaultUserTimezone(t *testing.T) {
defaultTimezone := DefaultUserTimezone()
require.Equal(t, "true", defaultTimezone["useAutomaticTimezone"])
require.Empty(t, defaultTimezone["automaticTimezone"])
require.Empty(t, defaultTimezone["manualTimezone"])
defaultTimezone["useAutomaticTimezone"] = "false"
defaultTimezone["automaticTimezone"] = "EST"
defaultTimezone["manualTimezone"] = "AST"
defaultTimezone2 := DefaultUserTimezone()
require.Equal(t, "true", defaultTimezone2["useAutomaticTimezone"])
require.Empty(t, defaultTimezone2["automaticTimezone"])
require.Empty(t, defaultTimezone2["manualTimezone"])
}