implement further integration tests on person and relationship creation

This commit is contained in:
2025-04-22 22:47:37 +02:00
parent 23da2c2186
commit 92c1d29ace
26 changed files with 523 additions and 111 deletions

View File

@@ -0,0 +1,10 @@
{
"id1": 2,
"id2": 3,
"type": "child",
"relationship": {
"verified": true,
"notes": "Test notes",
"from": "2022-01-01"
}
}

View File

@@ -46,12 +46,12 @@ func CreatePersonTest(dbAdapterUri string, client *http.Client) func(t *testing.
func GetPersonById(dbAdapterUri string, client *http.Client) func(t *testing.T) {
return func(t *testing.T) {
url := dbAdapterUri + "/person/0"
url := dbAdapterUri + "/person/2"
req, err := http.NewRequestWithContext(t.Context(), http.MethodGet, url, http.NoBody)
require.NoError(t, err)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-User-ID", "0")
req.Header.Set("X-User-ID", "3")
// Send the request
resp, err := client.Do(req)
@@ -68,8 +68,8 @@ func GetPersonById(dbAdapterUri string, client *http.Client) func(t *testing.T)
_, ok := responseBody["Id"]
require.True(t, ok)
require.Equal(t, "Alice", responseBody["Props"].(map[string]any)["first_name"])
require.Equal(t, "Wonderland", responseBody["Props"].(map[string]any)["last_name"])
require.Equal(t, "Johannes", responseBody["Props"].(map[string]any)["first_name"])
require.Equal(t, "Doe", responseBody["Props"].(map[string]any)["last_name"])
}
}

View File

@@ -7,6 +7,7 @@ import (
"net/http"
"testing"
"github.com/neo4j/neo4j-go-driver/v5/neo4j/dbtype"
"github.com/stretchr/testify/require"
)
@@ -35,29 +36,28 @@ func CreatePersonAndRelationshipTest(dbAdapterUri string, payload *[]byte, clien
return func(t *testing.T) {
url := dbAdapterUri + "/person_and_relationship/1"
req, err := http.NewRequestWithContext(t.Context(), http.MethodPost, url, bytes.NewBuffer(create_other_person))
req, err := http.NewRequestWithContext(t.Context(), http.MethodPost, url, bytes.NewBuffer(*payload))
require.NoError(t, err)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-User-ID", "0")
req.Header.Set("X-User-Name", "application/json")
// Send the request
resp, err := client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
var responseBody map[string]any
var responseBody struct {
Person dbtype.Node `json:"person"`
Relationships []dbtype.Relationship `json:"relationships"`
}
err = json.NewDecoder(resp.Body).Decode(&responseBody)
require.NoError(t, err)
// Validate the response
require.Equal(t, http.StatusOK, resp.StatusCode)
_, ok := responseBody["Id"]
require.True(t, ok)
_, ok = responseBody["person"]
require.True(t, ok)
_, ok = responseBody["relationship"]
require.True(t, ok)
require.NotEmpty(t, responseBody.Person)
require.NotEmpty(t, responseBody.Relationships)
}
}

View File

@@ -1,7 +1,69 @@
package integration_tests
func GetFamilyTreeById() {
import (
"encoding/json"
"net/http"
"testing"
"github.com/stretchr/testify/require"
)
func GetFamilyTreeByIdTest(dbAdapterUri string, client *http.Client) func(t *testing.T) {
return func(t *testing.T) {
url := dbAdapterUri + "/family-tree"
req, err := http.NewRequestWithContext(t.Context(), http.MethodGet, url, http.NoBody)
require.NoError(t, err)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-User-ID", "1")
// Send the request
resp, err := client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
// Validate the response
require.Equal(t, http.StatusOK, resp.StatusCode)
var responseBody struct {
People []any `json:"people"`
Relationships []any `json:"relationships"`
}
err = json.NewDecoder(resp.Body).Decode(&responseBody)
require.NoError(t, err)
require.Equal(t, 4, len(responseBody.People))
require.Equal(t, 4, len(responseBody.Relationships))
}
}
func GetFamilyTreeWithSpousesById() {
func GetFamilyTreeWithSpousesByIdTest(dbAdapterUri string, client *http.Client) func(t *testing.T) {
return func(t *testing.T) {
url := dbAdapterUri + "/family-tree-with-spouses"
req, err := http.NewRequestWithContext(t.Context(), http.MethodGet, url, http.NoBody)
require.NoError(t, err)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-User-ID", "3")
// Send the request
resp, err := client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
// Validate the response
require.Equal(t, http.StatusOK, resp.StatusCode)
var responseBody struct {
People []any `json:"people"`
Relationships []any `json:"relationships"`
}
err = json.NewDecoder(resp.Body).Decode(&responseBody)
require.NoError(t, err)
require.Equal(t, 5, len(responseBody.People))
require.Equal(t, 6, len(responseBody.Relationships))
}
}

View File

@@ -71,7 +71,7 @@ func CreatePersonByGoogleIdAndInviteCodeTest(dbAdapterUri string, client *http.C
require.NoError(t, err)
// Validate the response
t.Log("Response Status Code: ", responseBody)
// t.Log("Response Status Code: ", responseBody)
require.Equal(t, http.StatusOK, resp.StatusCode)
_, ok := responseBody["Id"]

View File

@@ -1,6 +1,6 @@
package integration_tests
func CreateRelationship() {
func CreateRelationshipTest() {
}
func UpdateRelationship() {