Skip to content

Commit

Permalink
AAE-22345 Update data table adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
wiktord2000 committed May 10, 2024
1 parent 66c693d commit 8056bf1
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,21 @@ describe('WidgetDataTableAdapter', () => {
type: 'json',
key: 'person.phoneNumbers',
title: 'Phone numbers'
},
{
type: 'text',
key: 'person.phoneNumbers[0].phoneNumber',
title: 'Phone Home'
},
{
type: 'text',
key: 'person.phoneNumbers[1].phoneNumber',
title: 'Phone Work'
},
{
type: 'text',
key: 'person.cars[0].previousOwners[0].name',
title: 'Last Car Owner'
}
];

Expand All @@ -165,7 +180,10 @@ describe('WidgetDataTableAdapter', () => {
'person.phoneNumbers': [
{ type: 'home', phoneNumber: '123-456-7890' },
{ type: 'work', phoneNumber: '098-765-4321' }
]
],
'person.phoneNumbers[0].phoneNumber': '123-456-7890',
'person.phoneNumbers[1].phoneNumber': '098-765-4321',
'person.cars[0].previousOwners[0].name': 'Jane Smith'
});
const expectedSecondRow = new ObjectDataRow({
'person.personData.[address.[data]test].city': 'Westlake',
Expand All @@ -174,20 +192,26 @@ describe('WidgetDataTableAdapter', () => {
'person.phoneNumbers': [
{ type: 'home', phoneNumber: '123-456-7891' },
{ type: 'work', phoneNumber: '321-654-1987' }
]
],
'person.phoneNumbers[0].phoneNumber': '123-456-7891',
'person.phoneNumbers[1].phoneNumber': '321-654-1987',
'person.cars[0].previousOwners[0].name': 'Bob Johnson'
});
const expectedColumns = [
new ObjectDataColumn({ key: 'person.name', type: 'text', title: 'Name' }),
new ObjectDataColumn({ key: 'person.personData.[address.[data]test].city', type: 'text', title: 'City' }),
new ObjectDataColumn({ key: 'person.personData.[address.[data]test].street', type: 'text', title: 'Street' }),
new ObjectDataColumn({ key: 'person.phoneNumbers', type: 'json', title: 'Phone numbers' })
new ObjectDataColumn({ key: 'person.phoneNumbers', type: 'json', title: 'Phone numbers' }),
new ObjectDataColumn({ key: 'person.phoneNumbers[0].phoneNumber', type: 'text', title: 'Phone Home' }),
new ObjectDataColumn({ key: 'person.phoneNumbers[1].phoneNumber', type: 'text', title: 'Phone Work' }),
new ObjectDataColumn({ key: 'person.cars[0].previousOwners[0].name', type: 'text', title: 'Last Car Owner' })
];

expect(rows.length).toBe(2);
expect(rows[0]).toEqual(expectedFirstRow);
expect(rows[1]).toEqual(expectedSecondRow);

expect(columns.length).toBe(4);
expect(columns.length).toBe(7);
expect(columns).toEqual(expectedColumns);
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,25 @@ export class WidgetDataTableAdapter implements DataTableAdapter {
}

private extractPropertyValue(properties: string[], item: any): string {
return properties.reduce((acc, property) => (acc ? acc[this.helper.removeSquareBracketsFromProperty(property)] : undefined), item);
return properties.reduce((acc, property) => {
if (!acc) {
return undefined;
}

const propertyIndexReferences = this.helper.getIndexReferencesFromProperty(property);
const isPropertyWithSingleIndexReference = propertyIndexReferences.length === 1;
const isPropertyWithMultipleIndexReferences = propertyIndexReferences.length > 1;

if (isPropertyWithMultipleIndexReferences) {
return undefined;
}

const purePropertyName = isPropertyWithSingleIndexReference
? this.helper.removeSquareBracketsAndIndexReferencesFromProperty(property)
: this.helper.removeSquareBracketsFromProperty(property);

return isPropertyWithSingleIndexReference ? acc[purePropertyName][propertyIndexReferences[0]] : acc[purePropertyName];
}, item);
}

getColumns(): Array<DataColumn> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,21 @@ export const mockPersonsData = [
type: 'work',
phoneNumber: '098-765-4321'
}
],
cars: [
{
make: 'Toyota',
model: 'Corolla',
year: 2019,
previousOwners: [
{
name: 'Jane Smith'
},
{
name: 'Jim Down'
}
]
}
]
}
},
Expand All @@ -55,6 +70,21 @@ export const mockPersonsData = [
type: 'work',
phoneNumber: '321-654-1987'
}
],
cars: [
{
make: 'Honda',
model: 'Civic',
year: 2018,
previousOwners: [
{
name: 'Bob Johnson'
},
{
name: 'Tom Brown'
}
]
}
]
}
}
Expand Down

0 comments on commit 8056bf1

Please sign in to comment.