123 lines
2.9 KiB
JavaScript
123 lines
2.9 KiB
JavaScript
import GroupByNodule from '../../../src/entities/nodules/GroupByNodule.js'
|
|
import Table from '../../../src/entities/Table.js'
|
|
|
|
const groupByTest = () => {
|
|
const expectedOutput = {
|
|
AshBritt: [
|
|
{ id: 'abc', data: 'row', contractor: 'AshBritt' },
|
|
{ id: 'qwe', data: 'lh', contractor: 'AshBritt' },
|
|
{ id: 'XYZ', data: 'row', contractor: 'AshBritt' }
|
|
],
|
|
HeyDay: [
|
|
{ id: 'XYZ', data: 'row', contractor: 'HeyDay' }
|
|
]
|
|
}
|
|
|
|
let table = {}
|
|
try {
|
|
table = new Table({
|
|
id: 'XYZ',
|
|
label: 'Test Table',
|
|
rows: [
|
|
{ id: 'abc', data: 'row', contractor: 'AshBritt' },
|
|
{ id: 'qwe', data: 'lh', contractor: 'AshBritt' },
|
|
{ id: 'XYZ', data: 'row', contractor: 'AshBritt' },
|
|
{ id: 'XYZ', data: 'row', contractor: 'HeyDay' },
|
|
]
|
|
})
|
|
} catch (err) {
|
|
return false
|
|
}
|
|
|
|
let groupByNodule = {}
|
|
try {
|
|
groupByNodule = new GroupByNodule({
|
|
id: 'ABC',
|
|
label: 'Test Group By',
|
|
tables: [table],
|
|
groupByValue: 'contractor'
|
|
})
|
|
} catch (err) {
|
|
console.log(err)
|
|
return false
|
|
}
|
|
|
|
const groupedRows = groupByNodule.export()
|
|
if (JSON.stringify(groupedRows) === JSON.stringify(expectedOutput)) {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
const groupByAsTables = () => {
|
|
|
|
const expectedOutput = [
|
|
{
|
|
id: 'ABC-AshBritt',
|
|
label: 'Test Group by AshBritt',
|
|
rows: [
|
|
{ id: 'abc', data: 'row', contractor: 'AshBritt' },
|
|
{ id: 'qwe', data: 'lh', contractor: 'AshBritt' },
|
|
{ id: 'XYZ', data: 'row', contractor: 'AshBritt' }
|
|
],
|
|
headers: [ 'id', 'data', 'contractor' ],
|
|
type: 'Table',
|
|
isValid: true
|
|
},
|
|
{
|
|
id: 'ABC-HeyDay',
|
|
label: 'Test Group by HeyDay',
|
|
rows: [
|
|
{ id: 'XYZ', data: 'row', contractor: 'HeyDay' }
|
|
],
|
|
headers: [ 'id', 'data', 'contractor' ],
|
|
type: 'Table',
|
|
isValid: true
|
|
}
|
|
]
|
|
|
|
let table = {}
|
|
try {
|
|
table = new Table({
|
|
id: 'XYZ',
|
|
label: 'Test Table',
|
|
rows: [
|
|
{ id: 'abc', data: 'row', contractor: 'AshBritt' },
|
|
{ id: 'qwe', data: 'lh', contractor: 'AshBritt' },
|
|
{ id: 'XYZ', data: 'row', contractor: 'AshBritt' },
|
|
{ id: 'XYZ', data: 'row', contractor: 'HeyDay' },
|
|
]
|
|
})
|
|
} catch (err) {
|
|
return false
|
|
}
|
|
|
|
let groupByNodule = {}
|
|
try {
|
|
groupByNodule = new GroupByNodule({
|
|
id: 'ABC',
|
|
label: 'Test Group',
|
|
tables: [table],
|
|
groupByValue: 'contractor'
|
|
})
|
|
} catch (err) {
|
|
console.log(err)
|
|
return false
|
|
}
|
|
|
|
// make checks here
|
|
const groupedTables = groupByNodule.asTable()
|
|
const groupedTablesProps = groupedTables.map(t => t.getProperties())
|
|
if (JSON.stringify(groupedTablesProps) === JSON.stringify(expectedOutput)) {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
|
|
export default [
|
|
{ name: 'Entity | GroupBy Value', test: groupByTest },
|
|
{ name: 'Entity | GroupBy As Table', test: groupByAsTables },
|
|
] |