lovelacejs/tests/core/tableTests.js
2020-05-19 20:59:29 -05:00

234 lines
5.4 KiB
JavaScript

import Table from '../../core/entities/Table.js'
const input = {
id: 'abc',
label: 'Test Label',
rows: [
{ id: '2345676', type: 'row', lat: 54, long: 31 },
{ id: '2345676', type: 'lh', lat: 31, long: -71.34 }
]
}
const getTableProperties = () => {
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(input)
const tableProperties = table.getProperties()
if (JSON.stringify(tableProperties) === JSON.stringify(expectedOutput)) return true
else return false
} catch (err) {
console.log(err)
return false
}
}
const getTableRows = () => {
const expectedOutput = [
{ id: '2345676', type: 'row', lat: 54, long: 31 },
{ id: '2345676', type: 'lh', lat: 31, long: -71.34 }
]
try {
const table = new Table(input)
const tableRows = table.getRows()
if (JSON.stringify(tableRows) === JSON.stringify(expectedOutput)) return true
else return false
} catch (err) {
console.log(err)
return false
}
}
const createTableWithNoProps = () => {
const expectedOutput = {
status: 'ERR',
error: {
label: 'Error Creating Table',
messages: ['No props on creation of Table']
}
}
try {
new Table()
return false
} catch (err) {
if (JSON.stringify(expectedOutput) === JSON.stringify(err)) return true
else return false
}
}
const createTableWithOnlyId = () => {
const input = { id: 'abc' }
const expectedOutput = {
status: 'ERR',
error: {
label: 'Error Creating Table',
messages: [
'No label on creation of Table'
]
}
}
try {
new Table(input)
return false
} catch (err) {
if (JSON.stringify(expectedOutput) === JSON.stringify(err)) return true
else return false
}
}
const createTableWithOnlyLabel = () => {
const input = { label: 'Test Label' }
const expectedOutput = {
status: 'ERR',
error: {
label: 'Error Creating Table',
messages: [
'No id on creation of Table'
]
}
}
try {
new Table(input)
return false
} catch (err) {
if (JSON.stringify(expectedOutput) === JSON.stringify(err)) return true
else return false
}
}
const createTableWithEverythingButRows = () => {
const input = { id: 'abc', label: 'Test Label' }
const expectedOutput = {
id: 'abc',
label: 'Test Label',
rows: [],
type: 'Table',
isValid: true
}
try {
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
}
}
const createTableWithInvalidRows = () => {
const input = {
id: 'abc',
label: 'Test Label',
rows: [
{ id: '2345676', type: 'lh', lat: 31, long: -71.34 },
'fake row'
]
}
const expectedOutput = {
status: 'ERR',
error: {
label: 'Error Creating Table',
messages: [
'row[1] is not an object'
]
}
}
try {
new Table(input)
return false
} catch (err) {
if (JSON.stringify(expectedOutput) === JSON.stringify(err)) return true
else return false
}
}
const createTableWithRowsAsNotArray = () => {
const input = {
id: 'abc',
label: 'Test Label',
rows: { id: '2345676', type: 'lh', lat: 31, long: -71.34 }
}
const expectedOutput = {
id: 'abc',
label: 'Test Label',
rows: [
{ id: '2345676', type: 'lh', lat: 31, long: -71.34 }
],
type: 'Table',
isValid: true
}
try {
const table = new Table(input)
const tableProperties = table.getProperties()
if (JSON.stringify(tableProperties) === JSON.stringify(expectedOutput)) return true
else return false
} catch (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
}
}
export default [
{ name: 'Entity | Get Table Properties', test: getTableProperties },
{ name: 'Entity | Get Table Rows', test: getTableRows },
{ name: 'Entiry | Table With Invalid Props', test: createTableWithNoProps },
{ name: 'Entiry | Table With Only Id', test: createTableWithOnlyId },
{ 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 | Set Table Rows', test: setTableRows }
]