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"
|
||||
"time"
|
||||
|
||||
"github.com/foomo/contentserver/log"
|
||||
"github.com/foomo/contentserver/requests"
|
||||
)
|
||||
|
||||
// GetMockData mock data to run a repo
|
||||
func GetMockData(t testing.TB) (server *httptest.Server, varDir string) {
|
||||
|
||||
log.SelectedLevel = log.LevelError
|
||||
_, filename, _, _ := runtime.Caller(0)
|
||||
mockDir := path.Dir(filename)
|
||||
|
||||
@ -30,6 +31,24 @@ func GetMockData(t testing.TB) (server *httptest.Server, varDir string) {
|
||||
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
|
||||
func MakeValidURIsRequest() *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
|
||||
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{}
|
||||
path := []*content.Item{}
|
||||
for nodeName, nodeRequest := range r.Nodes {
|
||||
for nodeName, nodeRequest := range nodeRequests {
|
||||
log.Debug(" adding node " + nodeName + " " + nodeRequest.ID)
|
||||
dimensionNode, ok := repo.Directory[nodeRequest.Dimension]
|
||||
nodes[nodeName] = nil
|
||||
@ -78,7 +82,7 @@ func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node {
|
||||
}
|
||||
treeNode, ok := dimensionNode.Directory[nodeRequest.ID]
|
||||
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 {
|
||||
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]
|
||||
}
|
||||
// add navigation trees
|
||||
for treeName, treeRequest := range r.Nodes {
|
||||
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)
|
||||
}
|
||||
}
|
||||
c.Nodes = repo.getNodes(r.Nodes, r.Env.Groups)
|
||||
return c, nil
|
||||
}
|
||||
|
||||
|
||||
@ -105,6 +105,21 @@ func getTestRepo(path string, t *testing.T) *Repo {
|
||||
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) {
|
||||
r := getTestRepo("/repo-two-dimensions.json", t)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user