mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
dryed out repo getNodes()
This commit is contained in:
parent
7d5d90c69e
commit
b8102b5164
@ -9,12 +9,13 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/foomo/contentserver/log"
|
||||||
"github.com/foomo/contentserver/requests"
|
"github.com/foomo/contentserver/requests"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetMockData mock data to run a repo
|
// GetMockData mock data to run a repo
|
||||||
func GetMockData(t testing.TB) (server *httptest.Server, varDir string) {
|
func GetMockData(t testing.TB) (server *httptest.Server, varDir string) {
|
||||||
|
log.SelectedLevel = log.LevelError
|
||||||
_, filename, _, _ := runtime.Caller(0)
|
_, filename, _, _ := runtime.Caller(0)
|
||||||
mockDir := path.Dir(filename)
|
mockDir := path.Dir(filename)
|
||||||
|
|
||||||
@ -30,6 +31,24 @@ func GetMockData(t testing.TB) (server *httptest.Server, varDir string) {
|
|||||||
return server, varDir
|
return server, varDir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MakeNodesRequest a request to get some nodes
|
||||||
|
func MakeNodesRequest() *requests.Nodes {
|
||||||
|
return &requests.Nodes{
|
||||||
|
Env: &requests.Env{
|
||||||
|
Dimensions: []string{"dimension_foo"},
|
||||||
|
},
|
||||||
|
Nodes: map[string]*requests.Node{
|
||||||
|
"test": &requests.Node{
|
||||||
|
ID: "id-root",
|
||||||
|
Dimension: "dimension_foo",
|
||||||
|
MimeTypes: []string{},
|
||||||
|
Expand: true,
|
||||||
|
DataFields: []string{"foo"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MakeValidURIsRequest URIs reuqest
|
// MakeValidURIsRequest URIs reuqest
|
||||||
func MakeValidURIsRequest() *requests.URIs {
|
func MakeValidURIsRequest() *requests.URIs {
|
||||||
return &requests.URIs{
|
return &requests.URIs{
|
||||||
|
|||||||
23
repo/repo.go
23
repo/repo.go
@ -66,9 +66,13 @@ func (repo *Repo) GetURIs(dimension string, ids []string) map[string]string {
|
|||||||
|
|
||||||
// GetNodes get nodes
|
// GetNodes get nodes
|
||||||
func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node {
|
func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node {
|
||||||
|
return repo.getNodes(r.Nodes, r.Env.Groups)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (repo *Repo) getNodes(nodeRequests map[string]*requests.Node, groups []string) map[string]*content.Node {
|
||||||
nodes := map[string]*content.Node{}
|
nodes := map[string]*content.Node{}
|
||||||
path := []*content.Item{}
|
path := []*content.Item{}
|
||||||
for nodeName, nodeRequest := range r.Nodes {
|
for nodeName, nodeRequest := range nodeRequests {
|
||||||
log.Debug(" adding node " + nodeName + " " + nodeRequest.ID)
|
log.Debug(" adding node " + nodeName + " " + nodeRequest.ID)
|
||||||
dimensionNode, ok := repo.Directory[nodeRequest.Dimension]
|
dimensionNode, ok := repo.Directory[nodeRequest.Dimension]
|
||||||
nodes[nodeName] = nil
|
nodes[nodeName] = nil
|
||||||
@ -78,7 +82,7 @@ func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node {
|
|||||||
}
|
}
|
||||||
treeNode, ok := dimensionNode.Directory[nodeRequest.ID]
|
treeNode, ok := dimensionNode.Directory[nodeRequest.ID]
|
||||||
if ok {
|
if ok {
|
||||||
nodes[nodeName] = repo.getNode(treeNode, nodeRequest.Expand, nodeRequest.MimeTypes, path, 0, r.Env.Groups, nodeRequest.DataFields)
|
nodes[nodeName] = repo.getNode(treeNode, nodeRequest.Expand, nodeRequest.MimeTypes, path, 0, groups, nodeRequest.DataFields)
|
||||||
} else {
|
} else {
|
||||||
log.Warning("you are requesting an invalid tree node for " + nodeName + " : " + nodeRequest.ID)
|
log.Warning("you are requesting an invalid tree node for " + nodeName + " : " + nodeRequest.ID)
|
||||||
}
|
}
|
||||||
@ -135,20 +139,7 @@ func (repo *Repo) GetContent(r *requests.Content) (c *content.SiteContent, err e
|
|||||||
resolvedDimension = r.Env.Dimensions[0]
|
resolvedDimension = r.Env.Dimensions[0]
|
||||||
}
|
}
|
||||||
// add navigation trees
|
// add navigation trees
|
||||||
for treeName, treeRequest := range r.Nodes {
|
c.Nodes = repo.getNodes(r.Nodes, r.Env.Groups)
|
||||||
log.Debug(" adding tree " + treeName + " " + treeRequest.ID)
|
|
||||||
rootNode, ok := repo.Directory[resolvedDimension]
|
|
||||||
if !ok {
|
|
||||||
log.Warning("could not resolve rootNode for resolved dimension " + resolvedDimension)
|
|
||||||
c.Nodes[treeName] = nil
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if treeNode, ok := rootNode.Directory[treeRequest.ID]; ok {
|
|
||||||
c.Nodes[treeName] = repo.getNode(treeNode, treeRequest.Expand, treeRequest.MimeTypes, c.Path, 0, r.Env.Groups, treeRequest.DataFields)
|
|
||||||
} else {
|
|
||||||
log.Warning("you are requesting an invalid tree node for " + treeName + " : " + treeRequest.ID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -105,6 +105,21 @@ func getTestRepo(path string, t *testing.T) *Repo {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetNodes(t *testing.T) {
|
||||||
|
r := getTestRepo("/repo-two-dimensions.json", t)
|
||||||
|
nodesRequest := mock.MakeNodesRequest()
|
||||||
|
nodes := r.GetNodes(nodesRequest)
|
||||||
|
testNode, ok := nodes["test"]
|
||||||
|
if !ok {
|
||||||
|
t.Fatal("wtf that should be a node")
|
||||||
|
}
|
||||||
|
testData, ok := testNode.Item.Data["foo"]
|
||||||
|
t.Log("testData", testData)
|
||||||
|
if !ok {
|
||||||
|
t.Fatal("failed to fetch test data")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestResolveContent(t *testing.T) {
|
func TestResolveContent(t *testing.T) {
|
||||||
r := getTestRepo("/repo-two-dimensions.json", t)
|
r := getTestRepo("/repo-two-dimensions.json", t)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user