turash/bugulma/backend/pkg/database/neo4j_test.go
Damir Mukimov f434b26dd4
Some checks failed
CI/CD Pipeline / frontend-lint (push) Successful in 1m38s
CI/CD Pipeline / backend-lint (push) Failing after 1m41s
CI/CD Pipeline / backend-build (push) Has been skipped
CI/CD Pipeline / frontend-build (push) Failing after 26s
CI/CD Pipeline / e2e-test (push) Has been skipped
Enhance configuration management and testing for backend
- Update .gitignore to selectively ignore pkg/ directories at the root level
- Modify CI workflow to verify all Go packages can be listed
- Introduce configuration management with a new config package, including loading environment variables
- Add comprehensive tests for configuration loading and environment variable handling
- Implement Neo4j database interaction functions with corresponding tests for data extraction
2025-12-26 13:18:00 +01:00

155 lines
3.7 KiB
Go

package database
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestGetString(t *testing.T) {
t.Run("existing string key", func(t *testing.T) {
m := map[string]interface{}{"key": "value"}
result := GetString(m, "key")
assert.Equal(t, "value", result)
})
t.Run("non-existing key", func(t *testing.T) {
m := map[string]interface{}{}
result := GetString(m, "key")
assert.Equal(t, "", result)
})
t.Run("non-string value", func(t *testing.T) {
m := map[string]interface{}{"key": 123}
result := GetString(m, "key")
assert.Equal(t, "", result)
})
}
func TestGetFloat64(t *testing.T) {
t.Run("float64 value", func(t *testing.T) {
m := map[string]interface{}{"key": 3.14}
result := GetFloat64(m, "key")
assert.Equal(t, 3.14, result)
})
t.Run("int64 value", func(t *testing.T) {
m := map[string]interface{}{"key": int64(42)}
result := GetFloat64(m, "key")
assert.Equal(t, 42.0, result)
})
t.Run("int value", func(t *testing.T) {
m := map[string]interface{}{"key": 42}
result := GetFloat64(m, "key")
assert.Equal(t, 42.0, result)
})
t.Run("non-existing key", func(t *testing.T) {
m := map[string]interface{}{}
result := GetFloat64(m, "key")
assert.Equal(t, 0.0, result)
})
t.Run("non-numeric value", func(t *testing.T) {
m := map[string]interface{}{"key": "string"}
result := GetFloat64(m, "key")
assert.Equal(t, 0.0, result)
})
}
func TestGetInt(t *testing.T) {
t.Run("int64 value", func(t *testing.T) {
m := map[string]interface{}{"key": int64(42)}
result := GetInt(m, "key")
assert.Equal(t, 42, result)
})
t.Run("int value", func(t *testing.T) {
m := map[string]interface{}{"key": 42}
result := GetInt(m, "key")
assert.Equal(t, 42, result)
})
t.Run("float64 value", func(t *testing.T) {
m := map[string]interface{}{"key": 42.0}
result := GetInt(m, "key")
assert.Equal(t, 42, result)
})
t.Run("non-existing key", func(t *testing.T) {
m := map[string]interface{}{}
result := GetInt(m, "key")
assert.Equal(t, 0, result)
})
t.Run("non-numeric value", func(t *testing.T) {
m := map[string]interface{}{"key": "string"}
result := GetInt(m, "key")
assert.Equal(t, 0, result)
})
}
func TestGetBool(t *testing.T) {
t.Run("true value", func(t *testing.T) {
m := map[string]interface{}{"key": true}
result := GetBool(m, "key")
assert.True(t, result)
})
t.Run("false value", func(t *testing.T) {
m := map[string]interface{}{"key": false}
result := GetBool(m, "key")
assert.False(t, result)
})
t.Run("non-existing key", func(t *testing.T) {
m := map[string]interface{}{}
result := GetBool(m, "key")
assert.False(t, result)
})
t.Run("non-bool value", func(t *testing.T) {
m := map[string]interface{}{"key": "string"}
result := GetBool(m, "key")
assert.False(t, result)
})
}
func TestGetTime(t *testing.T) {
testTime := time.Now()
t.Run("time.Time value", func(t *testing.T) {
m := map[string]interface{}{"key": testTime}
result := GetTime(m, "key")
assert.Equal(t, testTime, result)
})
t.Run("RFC3339 string value", func(t *testing.T) {
timeStr := "2023-01-01T12:00:00Z"
m := map[string]interface{}{"key": timeStr}
result := GetTime(m, "key")
expected, _ := time.Parse(time.RFC3339, timeStr)
assert.Equal(t, expected, result)
})
t.Run("invalid string value", func(t *testing.T) {
m := map[string]interface{}{"key": "invalid"}
result := GetTime(m, "key")
assert.True(t, result.IsZero())
})
t.Run("non-existing key", func(t *testing.T) {
m := map[string]interface{}{}
result := GetTime(m, "key")
assert.True(t, result.IsZero())
})
t.Run("non-time value", func(t *testing.T) {
m := map[string]interface{}{"key": 123}
result := GetTime(m, "key")
assert.True(t, result.IsZero())
})
}