Browse Source

Fix field selection.

pull/925/head
Sebastian 3 years ago
parent
commit
5378a15f6b
  1. 2
      frontend/src/app/shared/services/schemas.service.ts
  2. 48
      frontend/src/app/shared/services/schemas.spec.ts

2
frontend/src/app/shared/services/schemas.service.ts

@ -161,7 +161,7 @@ export class SchemaDto {
const result: TableField[] = []; const result: TableField[] = [];
for (const name of names) { for (const name of names) {
const metaField = META_FIELDS[name]; const metaField = Object.values(META_FIELDS).find(x => x.name === name);
if (metaField) { if (metaField) {
result.push(metaField); result.push(metaField);

48
frontend/src/app/shared/services/schemas.spec.ts

@ -16,7 +16,7 @@ const {
describe('SchemaDto', () => { describe('SchemaDto', () => {
const field1 = createField({ properties: createProperties('Array'), id: 1 }); const field1 = createField({ properties: createProperties('Array'), id: 1 });
const field2 = createField({ properties: createProperties('Array'), id: 2 }); const field2 = createField({ properties: createProperties('Array'), id: 2 });
const field3 = createField({ properties: createProperties('Array'), id: 3 }); const field3 = createField({ properties: createProperties('Array', { label: 'My Field 3' }), id: 3 });
it('should return label as display name', () => { it('should return label as display name', () => {
const schema = createSchema({ properties: new SchemaPropertiesDto('Label') }); const schema = createSchema({ properties: new SchemaPropertiesDto('Label') });
@ -37,58 +37,60 @@ describe('SchemaDto', () => {
}); });
it('should return configured fields as list fields if fields are declared', () => { it('should return configured fields as list fields if fields are declared', () => {
const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3], fieldsInLists: ['field1', 'field3'] }); const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3], fieldsInLists: ['field1', 'field3', META_FIELDS.status.name] });
expect(schema.defaultListFields.map(x => x.name)).toEqual([ expect(schema.defaultListFields).toEqual([
field1.name, { name: field1.name, rootField: field1, label: field1.displayName },
field3.name, { name: field3.name, rootField: field3, label: field3.displayName },
META_FIELDS.status,
]); ]);
}); });
it('should return configured fields as references fields if fields are declared', () => { it('should return configured fields as references fields if fields are declared', () => {
const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3], fieldsInReferences: ['field1', 'field3'] }); const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3], fieldsInReferences: ['field1', 'field3', META_FIELDS.status.name] });
expect(schema.defaultReferenceFields.map(x => x.name)).toEqual([ expect(schema.defaultReferenceFields).toEqual([
field1.name, { name: field1.name, rootField: field1, label: field1.displayName },
field3.name, { name: field3.name, rootField: field3, label: field3.displayName },
META_FIELDS.status,
]); ]);
}); });
it('should return first fields as list fields if no field is declared', () => { it('should return first fields as list fields if no field is declared', () => {
const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3] }); const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3] });
expect(schema.defaultListFields.map(x => x.name)).toEqual([ expect(schema.defaultListFields).toEqual([
META_FIELDS.lastModifiedByAvatar.name, META_FIELDS.lastModifiedByAvatar,
field1.name, { name: field1.name, rootField: field1, label: field1.displayName },
META_FIELDS.statusColor.name, META_FIELDS.statusColor,
META_FIELDS.lastModified.name, META_FIELDS.lastModified,
]); ]);
}); });
it('should return preset with empty content field as list fields if fields is empty', () => { it('should return preset with empty content field as list fields if fields is empty', () => {
const schema = createSchema({ properties: new SchemaPropertiesDto() }); const schema = createSchema({ properties: new SchemaPropertiesDto() });
expect(schema.defaultListFields.map(x => x.name)).toEqual([ expect(schema.defaultListFields).toEqual([
META_FIELDS.lastModifiedByAvatar.name, META_FIELDS.lastModifiedByAvatar,
META_FIELDS.empty.name, META_FIELDS.empty,
META_FIELDS.statusColor.name, META_FIELDS.statusColor,
META_FIELDS.lastModified.name, META_FIELDS.lastModified,
]); ]);
}); });
it('should return first field as reference fields if no field is declared', () => { it('should return first field as reference fields if no field is declared', () => {
const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3] }); const schema = createSchema({ properties: new SchemaPropertiesDto(''), fields: [field1, field2, field3] });
expect(schema.defaultReferenceFields.map(x => x.name)).toEqual([ expect(schema.defaultReferenceFields).toEqual([
field1.name, { name: field1.name, rootField: field1, label: field1.displayName },
]); ]);
}); });
it('should return noop field as reference field if list is empty', () => { it('should return noop field as reference field if list is empty', () => {
const schema = createSchema({ properties: new SchemaPropertiesDto() }); const schema = createSchema({ properties: new SchemaPropertiesDto() });
expect(schema.defaultReferenceFields.map(x => x.name)).toEqual([ expect(schema.defaultReferenceFields).toEqual([
META_FIELDS.empty.name, META_FIELDS.empty,
]); ]);
}); });
}); });

Loading…
Cancel
Save