dryed out repo getNodes()

This commit is contained in:
Jan Halfar 2016-03-09 22:16:43 +01:00
parent 7d5d90c69e
commit b8102b5164
3 changed files with 42 additions and 17 deletions

View File

@ -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{

View File

@ -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
}

View File

@ -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)