summaryrefslogtreecommitdiff
path: root/web/src/actions
diff options
context:
space:
mode:
authorTristan Cacqueray <tdecacqu@redhat.com>2019-08-15 20:55:40 +0000
committerTobias Henkel <tobias.henkel@bmw.de>2019-08-27 20:34:45 +0000
commitf9fe0adfdb9a751cf0748475930802e7f4d9d5b9 (patch)
tree79eec1e4dff64730026be15bb35206419ee52374 /web/src/actions
parent0811c5025e8c255dff5d208da6c74edcfe9c6acd (diff)
downloadzuul-f9fe0adfdb9a751cf0748475930802e7f4d9d5b9.tar.gz
web: test trailing slash are removed from renderTree
This change refactors the renderTree method to test it without React. Change-Id: Id1fcce671a5f8c44057a135a406298048a53bdb3
Diffstat (limited to 'web/src/actions')
-rw-r--r--web/src/actions/build.js27
-rw-r--r--web/src/actions/build.test.js9
2 files changed, 36 insertions, 0 deletions
diff --git a/web/src/actions/build.js b/web/src/actions/build.js
index 69a8e3a23..c61aa8189 100644
--- a/web/src/actions/build.js
+++ b/web/src/actions/build.js
@@ -56,6 +56,33 @@ export const requestBuildOutput = () => ({
})
// job-output processing functions
+export function renderTree(tenant, build, path, obj, textRenderer, defaultRenderer) {
+ const node = {}
+ let name = obj.name
+
+ if ('children' in obj && obj.children) {
+ node.nodes = obj.children.map(
+ n => renderTree(tenant, build, path+obj.name+'/', n,
+ textRenderer, defaultRenderer))
+ }
+ if (obj.mimetype === 'application/directory') {
+ name = obj.name + '/'
+ } else {
+ node.icon = 'fa fa-file-o'
+ }
+
+ let log_url = build.log_url
+ if (log_url.endsWith('/')) {
+ log_url = log_url.slice(0, -1)
+ }
+ if (obj.mimetype === 'text/plain') {
+ node.text = textRenderer(tenant, build, path, name, log_url, obj)
+ } else {
+ node.text = defaultRenderer(log_url, path, name, obj)
+ }
+ return node
+}
+
export function didTaskFail(task) {
if (task.failed) {
return true
diff --git a/web/src/actions/build.test.js b/web/src/actions/build.test.js
index 64ee81d98..a80aa5d0b 100644
--- a/web/src/actions/build.test.js
+++ b/web/src/actions/build.test.js
@@ -24,4 +24,13 @@ it('processes job-output properly', () => {
expect(buildAction.hasInterestingKeys({rc: 42}, ['rc'])).toEqual(true)
expect(buildAction.hasInterestingKeys({noop: 42}, ['rc'])).toEqual(false)
+
+ // Check trailing / are removed
+ let obj = {children: [], mimetype: 'test', name: 'test'}
+ let tree = buildAction.renderTree(
+ {linkPrefix: 'test/'},
+ {log_url: 'http://test/', uuid: 'test'},
+ '/', obj, (a) => (a), (a) => (a))
+ expect(tree).toEqual(
+ {'icon': 'fa fa-file-o', 'nodes': [], 'text': 'http://test'})
})