datarhei-dragonfork-core/restream/store/json_test.go

113 lines
2.2 KiB
Go
Raw Normal View History

2022-05-13 13:26:45 -04:00
package store
import (
"testing"
2023-02-01 10:09:20 -05:00
"github.com/datarhei/core/v16/io/fs"
2022-05-13 13:26:45 -04:00
"github.com/stretchr/testify/require"
)
2023-02-01 10:09:20 -05:00
func getFS(t *testing.T) fs.Filesystem {
fs, err := fs.NewRootedDiskFilesystem(fs.RootedDiskConfig{
Root: ".",
})
require.NoError(t, err)
info, err := fs.Stat("./fixtures/v4_empty.json")
require.NoError(t, err)
require.Equal(t, "/fixtures/v4_empty.json", info.Name())
2022-05-13 13:26:45 -04:00
2023-02-01 10:09:20 -05:00
return fs
}
func TestNew(t *testing.T) {
store, err := NewJSON(JSONConfig{
Filesystem: getFS(t),
})
require.NoError(t, err)
2022-05-13 13:26:45 -04:00
require.NotEmpty(t, store)
}
func TestLoad(t *testing.T) {
2023-02-01 10:09:20 -05:00
store, err := NewJSON(JSONConfig{
Filesystem: getFS(t),
Filepath: "./fixtures/v4_empty.json",
})
2023-02-01 10:09:20 -05:00
require.NoError(t, err)
2022-05-13 13:26:45 -04:00
2023-02-01 10:09:20 -05:00
_, err = store.Load()
require.NoError(t, err)
2022-05-13 13:26:45 -04:00
}
func TestLoadFailed(t *testing.T) {
2023-02-01 10:09:20 -05:00
store, err := NewJSON(JSONConfig{
Filesystem: getFS(t),
Filepath: "./fixtures/v4_invalid.json",
})
2023-02-01 10:09:20 -05:00
require.NoError(t, err)
2022-05-13 13:26:45 -04:00
2023-02-01 10:09:20 -05:00
_, err = store.Load()
require.Error(t, err)
2022-05-13 13:26:45 -04:00
}
func TestIsEmpty(t *testing.T) {
2023-02-01 10:09:20 -05:00
store, err := NewJSON(JSONConfig{
Filesystem: getFS(t),
Filepath: "./fixtures/v4_empty.json",
})
2023-02-01 10:09:20 -05:00
require.NoError(t, err)
data, err := store.Load()
require.NoError(t, err)
require.Equal(t, true, data.IsEmpty())
}
func TestNotExists(t *testing.T) {
2023-02-01 10:09:20 -05:00
store, err := NewJSON(JSONConfig{
Filesystem: getFS(t),
Filepath: "./fixtures/v4_notexist.json",
})
2023-02-01 10:09:20 -05:00
require.NoError(t, err)
data, err := store.Load()
require.NoError(t, err)
require.Equal(t, true, data.IsEmpty())
}
func TestStore(t *testing.T) {
2023-02-01 10:09:20 -05:00
fs := getFS(t)
fs.Remove("./fixtures/v4_store.json")
2023-02-01 10:09:20 -05:00
store, err := NewJSON(JSONConfig{
Filesystem: fs,
Filepath: "./fixtures/v4_store.json",
})
2023-02-01 10:09:20 -05:00
require.NoError(t, err)
data, err := store.Load()
require.NoError(t, err)
require.Equal(t, true, data.IsEmpty())
data.Metadata.System["somedata"] = "foobar"
store.Store(data)
data2, err := store.Load()
require.NoError(t, err)
require.Equal(t, data, data2)
2023-02-01 10:09:20 -05:00
fs.Remove("./fixtures/v4_store.json")
}
func TestInvalidVersion(t *testing.T) {
2023-02-01 10:09:20 -05:00
store, err := NewJSON(JSONConfig{
Filesystem: getFS(t),
Filepath: "./fixtures/v3_empty.json",
})
2023-02-01 10:09:20 -05:00
require.NoError(t, err)
2022-05-13 13:26:45 -04:00
data, err := store.Load()
require.Error(t, err)
2022-05-13 13:26:45 -04:00
require.Equal(t, true, data.IsEmpty())
}