From 26424c2795d643d20d280b21ae42fe329100be7d Mon Sep 17 00:00:00 2001 From: ysandler Date: Thu, 21 May 2020 23:11:28 -0500 Subject: [PATCH] feat: node export as table --- core/entities/Node.js | 15 ++++++++ tests/core/nodeTests.js | 15 +++++++- tests/core/nodes/filterNodeTests.js | 59 +++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 1 deletion(-) diff --git a/core/entities/Node.js b/core/entities/Node.js index 1369d74..96cbc38 100644 --- a/core/entities/Node.js +++ b/core/entities/Node.js @@ -1,3 +1,5 @@ +import Table from './Table.js' + class Node { constructor (props) { const validatePropsResponse = this._validateConstructionProps(props) @@ -10,6 +12,19 @@ class Node { } } + asTable = () => { + if (!this.export) return null + try { + return new Table({ + id: this.id, + label: this.label, + rows: this.export() + }) + } catch (err) { + throw err + } + } + getProperties = () => { let tables = [] if (!Array.isArray(this.tables)) tables = [] diff --git a/tests/core/nodeTests.js b/tests/core/nodeTests.js index da54f3e..dde93bd 100644 --- a/tests/core/nodeTests.js +++ b/tests/core/nodeTests.js @@ -101,8 +101,21 @@ const importTables = () => { } } +const failToExport = () => { + const expectedOutput = null + const node = new Node({ + id: 'ABC', + label: 'Test Node', + }) + + const nodeAsTable = node.asTable() + if (expectedOutput === nodeAsTable) return true + else return false +} + export default [ { name: 'Entity | Get Node Properties', test: getNodeProperties }, { name: 'Entity | Create Node Without Tables', test: createNodeWithoutTables }, - { name: 'Entity | Import Tables to Node', test: importTables } + { name: 'Entity | Import Tables to Node', test: importTables }, + { name: 'Entity | Fail to Export', test: failToExport } ] \ No newline at end of file diff --git a/tests/core/nodes/filterNodeTests.js b/tests/core/nodes/filterNodeTests.js index 83fe2b9..a61c482 100644 --- a/tests/core/nodes/filterNodeTests.js +++ b/tests/core/nodes/filterNodeTests.js @@ -411,6 +411,64 @@ const lesserEqualFilter = () => { } } +const getAsTable = () => { + const expectedOutput = { + id: 'ABC', + label: 'Test Node', + rows: [ + { id: 'qwe', count: 4, contractor: 'AshBritt' }, + { id: 'xyz', count: 2, contractor: 'HeyDay' } + ], + type: 'Table', + isValid: true + } + + let table = {} + try { + table = new Table({ + id: 'XYZ', + label: 'Test Table', + rows: [ + { id: 'abc', count: 5, contractor: 'AshBritt' }, + { id: 'qwe', count: 4, contractor: 'AshBritt' }, + { id: 'XYZ', count: 8, contractor: 'AshBritt' }, + { id: 'xyz', count: 2, contractor: 'HeyDay' }, + ] + }) + } catch (err) { + return false + } + + let filterNode = {} + try { + filterNode = new FilterNode({ + id: 'ABC', + label: 'Test Node', + tables: [table], + filterParams: { + count: 4 + }, + filterType: 'LESSEREQUAL' + }) + } catch (err) { + console.log(err) + return false + } + + let filterNodeAsTable = [] + try { + filterNodeAsTable = filterNode.asTable().getProperties() + } catch (err) { + console.log(err) + return false + } + if (JSON.stringify(filterNodeAsTable) === JSON.stringify(expectedOutput)) { + return true + } else { + return false + } +} + export default [ { name: 'Entity | FilterNode Equal Filter', test: equalFilter }, { name: 'Entity | FilterNode GREATER Filter', test: greaterFilter }, @@ -420,4 +478,5 @@ export default [ { name: 'Entity | FilterNode Add Filter', test: addFilter }, { name: 'Entity | FilterNode Set Type', test: setType }, { name: 'Entity | FilterNode Export Without Type Error', test: exportWithoutTypeErrorHandle }, + { name: 'Entity | FilterNode Export As Table', test: getAsTable }, ] \ No newline at end of file