From 9050882a09a0989e4e2b6fc3c902ee8d7d653c3b Mon Sep 17 00:00:00 2001 From: Mateusz Date: Mon, 9 Sep 2019 14:31:09 +0200 Subject: [PATCH 1/2] feat: random sort result array --- packages/lib-js-core/src/data.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/lib-js-core/src/data.ts b/packages/lib-js-core/src/data.ts index 6fb83c8f..fb26d24f 100644 --- a/packages/lib-js-core/src/data.ts +++ b/packages/lib-js-core/src/data.ts @@ -51,6 +51,9 @@ export class DataClass uniqueIds.includes(id) ? false : uniqueIds.push(id) ) + if (this.query.random_order) { + return results.sort(() => Math.random() - 0.5) + } return results } @@ -217,6 +220,10 @@ export class DataClass Date: Mon, 9 Sep 2019 16:02:07 +0200 Subject: [PATCH 2/2] feat: unit test --- packages/lib-js-core/test/unit/data.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/lib-js-core/test/unit/data.ts b/packages/lib-js-core/test/unit/data.ts index 2c006479..5a83ad04 100644 --- a/packages/lib-js-core/test/unit/data.ts +++ b/packages/lib-js-core/test/unit/data.ts @@ -156,6 +156,26 @@ describe('Data', () => { .list() .should.become([{id: 1}, {id: 2}]) }) + + it('should return random ordered list of objects', async () => { + const objects = [...Array(20).keys()].map((key) => { + return {id: key} + }) + + api + .get(`/v3/instances/${instanceName}/classes/users/objects/`) + .query({page_size: 500, random_order: true}) // eslint-disable-line camelcase + .reply(200, {objects}) + + return data.users + .inRandomOrder() + .list() + .then((items: any) => { + should(items) + .be.Array() + .not.be.eql(objects) + }) + }) }) describe('#count()', () => {