feat: rows can be set later to a table
This commit is contained in:
parent
10b7447f7d
commit
988d256873
@ -1,13 +1,8 @@
|
||||
class Table {
|
||||
constructor (props) {
|
||||
const validatePropsResponse = this._validateConstructionProps(props)
|
||||
if (validatePropsResponse.status === 'ERR') {
|
||||
this.isValid = false
|
||||
throw validatePropsResponse
|
||||
}
|
||||
else {
|
||||
this._assignProps(props)
|
||||
}
|
||||
if (validatePropsResponse.status === 'ERR') throw validatePropsResponse
|
||||
else this._assignProps(props)
|
||||
}
|
||||
|
||||
getProperties = () => {
|
||||
@ -22,14 +17,22 @@ class Table {
|
||||
|
||||
getRows = () => this.rows
|
||||
|
||||
setRows = rows => {
|
||||
const rowsValidation = this._validateRows(rows)
|
||||
if (rowsValidation.status === 'ERR') throw rowsValidation
|
||||
|
||||
if (!Array.isArray(rows)) this.rows = [rows]
|
||||
else this.rows = rows
|
||||
}
|
||||
|
||||
_assignProps = props => {
|
||||
this.id = props.id
|
||||
this.label = props.label
|
||||
this.type = 'Table'
|
||||
this.isValid = true
|
||||
|
||||
if (!Array.isArray(props.rows)) this.rows = [props.rows]
|
||||
else this.rows = props.rows
|
||||
if (props.rows) this.setRows(props.rows)
|
||||
else this.rows = []
|
||||
}
|
||||
|
||||
_validateConstructionProps = props => {
|
||||
@ -48,38 +51,33 @@ class Table {
|
||||
if (!props.id) err.error.messages.push('No id on creation of Table')
|
||||
if (!props.label) err.error.messages.push('No label on creation of Table')
|
||||
|
||||
const validateRowsErrors = this._validateRows(props.rows)
|
||||
if (validateRowsErrors.length > 0) {
|
||||
validateRowsErrors.forEach(e => {
|
||||
err.error.messages.push(e)
|
||||
})
|
||||
}
|
||||
|
||||
if (err.error.messages.length === 0){
|
||||
return { status: 'OK' }
|
||||
} else{
|
||||
return err
|
||||
}
|
||||
if (err.error.messages.length === 0) return { status: 'OK' }
|
||||
else return err
|
||||
}
|
||||
|
||||
_validateRows = rowsToImport => {
|
||||
const err = {
|
||||
status: 'ERR',
|
||||
error: {
|
||||
label: 'Error Creating Table',
|
||||
messages: []
|
||||
}
|
||||
}
|
||||
|
||||
let rows = []
|
||||
if (!Array.isArray(rowsToImport)) rows = [rowsToImport]
|
||||
else rows = rowsToImport
|
||||
|
||||
const errorMesages = []
|
||||
|
||||
if (rows.length === 0) {
|
||||
errorMesages.push('No Tables imported')
|
||||
}
|
||||
if (rows.length === 0) err.error.messages.push('No Tables imported')
|
||||
|
||||
for (let r = 0; r < rows.length; r++) {
|
||||
if (typeof rows[r] !== 'object') {
|
||||
errorMesages.push(`row[${r}] is not an object`)
|
||||
err.error.messages.push(`row[${r}] is not an object`)
|
||||
}
|
||||
}
|
||||
|
||||
return errorMesages
|
||||
if (err.error.messages.length > 0) return err
|
||||
else return { status: 'OK' }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,8 @@ const getTableProperties = () => {
|
||||
if (JSON.stringify(tableProperties) === JSON.stringify(expectedOutput)) return true
|
||||
else return false
|
||||
} catch (err) {
|
||||
return err
|
||||
console.log(err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,7 +44,8 @@ const getTableRows = () => {
|
||||
if (JSON.stringify(tableRows) === JSON.stringify(expectedOutput)) return true
|
||||
else return false
|
||||
} catch (err) {
|
||||
return err
|
||||
console.log(err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,8 +74,7 @@ const createTableWithOnlyId = () => {
|
||||
error: {
|
||||
label: 'Error Creating Table',
|
||||
messages: [
|
||||
'No label on creation of Table',
|
||||
'row[0] is not an object'
|
||||
'No label on creation of Table'
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -94,8 +95,7 @@ const createTableWithOnlyLabel = () => {
|
||||
error: {
|
||||
label: 'Error Creating Table',
|
||||
messages: [
|
||||
'No id on creation of Table',
|
||||
'row[0] is not an object'
|
||||
'No id on creation of Table'
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -112,21 +112,21 @@ const createTableWithOnlyLabel = () => {
|
||||
const createTableWithEverythingButRows = () => {
|
||||
const input = { id: 'abc', label: 'Test Label' }
|
||||
const expectedOutput = {
|
||||
status: 'ERR',
|
||||
error: {
|
||||
label: 'Error Creating Table',
|
||||
messages: [
|
||||
'row[0] is not an object'
|
||||
]
|
||||
}
|
||||
id: 'abc',
|
||||
label: 'Test Label',
|
||||
rows: [],
|
||||
type: 'Table',
|
||||
isValid: true
|
||||
}
|
||||
|
||||
try {
|
||||
new Table(input)
|
||||
return false
|
||||
} catch (err) {
|
||||
if (JSON.stringify(expectedOutput) === JSON.stringify(err)) return true
|
||||
const table = new Table(input)
|
||||
const tableProps = table.getProperties()
|
||||
if (JSON.stringify(expectedOutput) === JSON.stringify(tableProps)) return true
|
||||
else return false
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,7 +181,43 @@ const createTableWithRowsAsNotArray = () => {
|
||||
if (JSON.stringify(tableProperties) === JSON.stringify(expectedOutput)) return true
|
||||
else return false
|
||||
} catch (err) {
|
||||
return err
|
||||
console.log(err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
const setTableRows = () => {
|
||||
|
||||
const initialInput = {
|
||||
id: 'abc',
|
||||
label: 'Test Label'
|
||||
}
|
||||
|
||||
const rows = [
|
||||
{ id: '2345676', type: 'row', lat: 54, long: 31 },
|
||||
{ id: '2345676', type: 'lh', lat: 31, long: -71.34 }
|
||||
]
|
||||
|
||||
const expectedOutput = {
|
||||
id: 'abc',
|
||||
label: 'Test Label',
|
||||
rows: [
|
||||
{ id: '2345676', type: 'row', lat: 54, long: 31 },
|
||||
{ id: '2345676', type: 'lh', lat: 31, long: -71.34 }
|
||||
],
|
||||
type: 'Table',
|
||||
isValid: true
|
||||
}
|
||||
|
||||
try {
|
||||
const table = new Table(initialInput)
|
||||
table.setRows(rows)
|
||||
const tableProperties = table.getProperties()
|
||||
if (JSON.stringify(tableProperties) === JSON.stringify(expectedOutput)) return true
|
||||
else return false
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@ -193,5 +229,6 @@ export default [
|
||||
{ name: 'Entiry | Table With Only Label', test: createTableWithOnlyLabel },
|
||||
{ name: 'Entiry | Table With Everything But Rows', test: createTableWithEverythingButRows },
|
||||
{ name: 'Entiry | Table With Invalid Rows', test: createTableWithInvalidRows },
|
||||
{ name: 'Entiry | Table With Rows as Not Array', test: createTableWithRowsAsNotArray }
|
||||
{ name: 'Entiry | Table With Rows as Not Array', test: createTableWithRowsAsNotArray },
|
||||
{ name: 'Entiry | Set Table Rows', test: setTableRows }
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user