diff --git a/packages/core/database/src/__tests__/option-parser.test.ts b/packages/core/database/src/__tests__/option-parser.test.ts index 291860cb4..7ead9351c 100644 --- a/packages/core/database/src/__tests__/option-parser.test.ts +++ b/packages/core/database/src/__tests__/option-parser.test.ts @@ -81,6 +81,7 @@ describe('option parser', () => { ], }); }); + test('with sort option', () => { let options: any = { sort: ['id'], @@ -182,4 +183,23 @@ describe('option parser', () => { expect(params['include'][0]['attributes']['exclude']).toContain('id'); }); + + test('option parser with multiple association', () => { + // fields with association field + const options = { + appends: ['user', 'comments.id', 'tags.id'], + }; + + const parser = new OptionsParser(options, { + collection: Post, + }); + + const params = parser.toSequelizeParams(); + expect(params.include.length).toBe(3); + expect(params.include[0].association).toBe('user'); + expect(params.include[1].association).toBe('comments'); + expect(params.include[1].attributes).toEqual(['id']); + expect(params.include[2].association).toBe('tags'); + expect(params.include[2].attributes).toEqual(['id']); + }); }); diff --git a/packages/core/database/src/options-parser.ts b/packages/core/database/src/options-parser.ts index 02cb3b06b..705e1a3e7 100644 --- a/packages/core/database/src/options-parser.ts +++ b/packages/core/database/src/options-parser.ts @@ -230,7 +230,7 @@ export class OptionsParser { association: appendAssociation, }); - existIncludeIndex = 0; + existIncludeIndex = queryParams['include'].length - 1; } // end appends