From 32c31af76eb4cc23d9e33ea1a48c21f494e99a15 Mon Sep 17 00:00:00 2001 From: i9 Date: Wed, 29 Jan 2025 16:32:18 +0100 Subject: [PATCH] (test): all tests passed --- neo4j/go.mod | 2 +- neo4j/neo4j_test.go | 175 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 neo4j/neo4j_test.go diff --git a/neo4j/go.mod b/neo4j/go.mod index 1ec8b91c..59b9a966 100644 --- a/neo4j/go.mod +++ b/neo4j/go.mod @@ -1,4 +1,4 @@ -module github.com/gofiber/storage/neo4j/v2 +module github.com/gofiber/storage/neo4j go 1.23.1 diff --git a/neo4j/neo4j_test.go b/neo4j/neo4j_test.go new file mode 100644 index 00000000..9c928799 --- /dev/null +++ b/neo4j/neo4j_test.go @@ -0,0 +1,175 @@ +package neo4jstore + +import ( + "os" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +var testStore = New(Config{ + Reset: true, + Username: os.Getenv("NEO4J_USER"), + Password: os.Getenv("NEO4J_PASS"), +}) + +func Test_Neo4jStore_Set(t *testing.T) { + var ( + key = "john" + val = []byte("doe") + ) + + err := testStore.Set(key, val, 0) + require.NoError(t, err) +} + +func Test_Neo4jStore_Upsert(t *testing.T) { + var ( + key = "john" + val = []byte("doe") + ) + + err := testStore.Set(key, val, 0) + require.NoError(t, err) + + err = testStore.Set(key, val, 0) + require.NoError(t, err) +} + +func Test_Neo4jStore_Get(t *testing.T) { + var ( + key = "john" + val = []byte("doe") + ) + + err := testStore.Set(key, val, 0) + require.NoError(t, err) + + result, err := testStore.Get(key) + require.NoError(t, err) + require.Equal(t, val, result) +} + +func Test_Neo4jStore_Set_Expiration(t *testing.T) { + var ( + key = "john" + val = []byte("doe") + exp = 1 * time.Second + ) + + err := testStore.Set(key, val, exp) + require.NoError(t, err) + + time.Sleep(1100 * time.Millisecond) +} + +func Test_Neo4jStore_Get_Expired(t *testing.T) { + key := "john" + + result, err := testStore.Get(key) + require.NoError(t, err) + require.Zero(t, len(result)) +} + +func Test_Neo4jStore_Get_NotExist(t *testing.T) { + result, err := testStore.Get("notexist") + require.NoError(t, err) + require.Zero(t, len(result)) +} + +func Test_Neo4jStore_Delete(t *testing.T) { + var ( + key = "john" + val = []byte("doe") + ) + + err := testStore.Set(key, val, 0) + require.NoError(t, err) + + err = testStore.Delete(key) + require.NoError(t, err) + + result, err := testStore.Get(key) + require.NoError(t, err) + require.Zero(t, len(result)) +} + +func Test_Neo4jStore_Reset(t *testing.T) { + val := []byte("doe") + + err := testStore.Set("john1", val, 0) + require.NoError(t, err) + + err = testStore.Set("john2", val, 0) + require.NoError(t, err) + + err = testStore.Reset() + require.NoError(t, err) + + result, err := testStore.Get("john1") + require.NoError(t, err) + require.Zero(t, len(result)) + + result, err = testStore.Get("john2") + require.NoError(t, err) + require.Zero(t, len(result)) +} + +func Test_Neo4jStore_Non_UTF8(t *testing.T) { + val := []byte("0xF5") + + err := testStore.Set("0xF6", val, 0) + require.NoError(t, err) + + result, err := testStore.Get("0xF6") + require.NoError(t, err) + require.Equal(t, val, result) +} + +func Test_Neo4jStore_Close(t *testing.T) { + require.Nil(t, testStore.Close()) +} + +func Test_Neo4jStore_Conn(t *testing.T) { + require.True(t, testStore.Conn() != nil) +} + +func Benchmark_Neo4jStore_Set(b *testing.B) { + b.ReportAllocs() + b.ResetTimer() + + var err error + for i := 0; i < b.N; i++ { + err = testStore.Set("john", []byte("doe"), 0) + } + + require.NoError(b, err) +} + +func Benchmark_Neo4jStore_Get(b *testing.B) { + err := testStore.Set("john", []byte("doe"), 0) + require.NoError(b, err) + + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + _, err = testStore.Get("john") + } + + require.NoError(b, err) +} + +func Benchmark_Neo4jStore_SetAndDelete(b *testing.B) { + b.ReportAllocs() + b.ResetTimer() + + var err error + for i := 0; i < b.N; i++ { + _ = testStore.Set("john", []byte("doe"), 0) + err = testStore.Delete("john") + } + + require.NoError(b, err) +}