From d53de730ced183daed98c4b266e5f62e0e187360 Mon Sep 17 00:00:00 2001 From: gets0ul Date: Thu, 23 Jan 2020 03:27:00 +0700 Subject: [PATCH] Adding support to search project via customer/manager handles --- src/routes/projects/list.js | 4 +-- src/routes/projects/list.spec.js | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/routes/projects/list.js b/src/routes/projects/list.js index c8ac798b..0c37cb5a 100755 --- a/src/routes/projects/list.js +++ b/src/routes/projects/list.js @@ -333,13 +333,13 @@ const parseElasticSearchCriteria = (criteria, fields, order) => { if (_.has(criteria, 'filters.customer')) { mustQuery = _.concat(mustQuery, setFilter('customer', criteria.filters.customer, - ['members.firstName', 'members.lastName'])); + ['members.firstName', 'members.lastName', 'members.handle'])); } if (_.has(criteria, 'filters.manager')) { mustQuery = _.concat(mustQuery, setFilter('manager', criteria.filters.manager, - ['members.firstName', 'members.lastName'])); + ['members.firstName', 'members.lastName', 'members.handle'])); } if (_.has(criteria, 'filters.userId') || _.has(criteria, 'filters.email')) { diff --git a/src/routes/projects/list.spec.js b/src/routes/projects/list.spec.js index 5d649677..0dbe713e 100644 --- a/src/routes/projects/list.spec.js +++ b/src/routes/projects/list.spec.js @@ -683,6 +683,52 @@ describe('LIST Project', () => { }); }); + it('should return all projects that match when filtering by customer handle', (done) => { + request(server) + .get('/v5/projects/?customer=*tourist*') + .set({ + Authorization: `Bearer ${testUtil.jwts.admin}`, + }) + .expect('Content-Type', /json/) + .expect(200) + .end((err, res) => { + if (err) { + done(err); + } else { + const resJson = res.body; + should.exist(resJson); + resJson.should.have.lengthOf(1); + resJson[0].name.should.equal('test1'); + resJson[0].members.should.have.deep.property('[0].role', 'customer'); + resJson[0].members[0].userId.should.equal(40051331); + done(); + } + }); + }); + + it('should return all projects that match when filtering by manager handle', (done) => { + request(server) + .get('/v5/projects/?manager=*_handle') + .set({ + Authorization: `Bearer ${testUtil.jwts.admin}`, + }) + .expect('Content-Type', /json/) + .expect(200) + .end((err, res) => { + if (err) { + done(err); + } else { + const resJson = res.body; + should.exist(resJson); + resJson.should.have.lengthOf(1); + resJson[0].name.should.equal('test3'); + resJson[0].members.should.have.deep.property('[0].role', 'manager'); + resJson[0].members[0].userId.should.equal(40051334); + done(); + } + }); + }); + it('should return list of projects ordered ascending by lastActivityAt when sort column is "lastActivityAt"', (done) => { request(server) .get('/v5/projects/?sort=lastActivityAt')