Skip to content

Commit 281eb39

Browse files
author
Parth Shah
committed
Merge branch 'dev'
2 parents e863b26 + e2ba44b commit 281eb39

File tree

4 files changed

+111
-11
lines changed

4 files changed

+111
-11
lines changed

ebs_deploy.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ SERVICE=$1
44
ENV=$2
55
TAG_SUFFIX=$3
66
TAG="$ENV.$TAG_SUFFIX"
7-
7+
ENV_LOWER=`echo "$ENV" | awk '{print tolower($0)}'`
88

99
echo "Deploying to Elasticbeanstalk"
1010
echo "############################"
1111
export AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID")
1212
export AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY")
1313

1414
# eb deploy
15-
eb init -r us-east-1 $SERVICE
16-
EB_OUTPUT="$(eb deploy -l $TAG -r us-east-1)"
15+
# eb init -r us-east-1 $SERVICE
16+
EB_OUTPUT="$(eb deploy tc-project-api-v4-${ENV_LOWER} -l $TAG -r us-east-1)"
1717

1818
echo $EB_OUTPUT
1919
if echo $EB_OUTPUT | grep -iq error; then

src/routes/projects/list.js

100644100755
+23-5
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,28 @@ var _retrieveProjects = (req, criteria, sort, fields) => {
4141
let retrieveAttachments = !req.query.fields || req.query.fields.indexOf('attachments') > -1
4242
let retrieveMembers = !req.query.fields || !!fields.project_members.length
4343

44-
45-
// special handling for name filter
46-
if (_.has(criteria.filters, 'name')) {
47-
criteria.filters.name = { ilike: `%${criteria.filters.name}%`}
44+
// special handling for keyword filter
45+
if (_.has(criteria.filters, 'keyword')) {
46+
criteria.filters.$or = [
47+
{
48+
name: {
49+
$ilike: `%${criteria.filters.keyword}%`
50+
},
51+
}, {
52+
description: {
53+
$ilike: `%${criteria.filters.keyword}%`
54+
},
55+
}, {
56+
details: {
57+
utm: {
58+
code: {
59+
$ilike: `%${criteria.filters.keyword}%`
60+
}
61+
}
62+
}
63+
}
64+
]
65+
delete criteria.filters.keyword
4866
}
4967

5068
return models.Project.findAndCountAll({
@@ -117,7 +135,7 @@ module.exports = [
117135
'name', 'name asc', 'name desc',
118136
'type', 'type asc', 'type desc'
119137
]
120-
if (!util.isValidFilter(filters, ['id', 'status', 'type', 'memberOnly', 'name']) ||
138+
if (!util.isValidFilter(filters, ['id', 'status', 'type', 'memberOnly', 'keyword']) ||
121139
(sort && _.indexOf(sortableProps, sort) < 0)) {
122140
util.handleError('Invalid filters or sort', null, req, next)
123141
}

src/routes/projects/list.spec.js

100644100755
+84-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ describe('LIST Project', () => {
2020
name: 'test1',
2121
description: 'test project1',
2222
status: 'active',
23-
details: {},
23+
details: {
24+
utm: {
25+
code: 'code1'
26+
}
27+
},
2428
createdBy: 1,
2529
updatedBy: 1
2630
}).then(p => {
@@ -175,6 +179,84 @@ describe('LIST Project', () => {
175179
done()
176180
})
177181
})
178-
})
179182

183+
it('should return all projects that match when filtering by name', done => {
184+
request(server)
185+
.get('/v4/projects/?filter=keyword%3Dtest')
186+
.set({
187+
'Authorization': 'Bearer ' + testUtil.jwts.admin
188+
})
189+
.expect('Content-Type', /json/)
190+
.expect(200)
191+
.end(function(err, res) {
192+
if (err) {
193+
return done(err)
194+
}
195+
var resJson = res.body.result.content
196+
should.exist(resJson)
197+
resJson.should.have.lengthOf(3)
198+
done()
199+
})
200+
})
201+
202+
it('should return the project when filtering by keyword, which matches the name', done => {
203+
request(server)
204+
.get('/v4/projects/?filter=keyword%3D1')
205+
.set({
206+
'Authorization': 'Bearer ' + testUtil.jwts.admin
207+
})
208+
.expect('Content-Type', /json/)
209+
.expect(200)
210+
.end(function(err, res) {
211+
if (err) {
212+
return done(err)
213+
}
214+
var resJson = res.body.result.content
215+
should.exist(resJson)
216+
resJson.should.have.lengthOf(1)
217+
resJson[0].name.should.equal('test1')
218+
done()
219+
})
220+
})
221+
222+
it('should return the project when filtering by keyword, which matches the description', done => {
223+
request(server)
224+
.get('/v4/projects/?filter=keyword%3Dproject')
225+
.set({
226+
'Authorization': 'Bearer ' + testUtil.jwts.admin
227+
})
228+
.expect('Content-Type', /json/)
229+
.expect(200)
230+
.end(function(err, res) {
231+
if (err) {
232+
return done(err)
233+
}
234+
var resJson = res.body.result.content
235+
should.exist(resJson)
236+
resJson.should.have.lengthOf(3)
237+
done()
238+
})
239+
})
240+
241+
it('should return the project when filtering by keyword, which matches the details', done => {
242+
request(server)
243+
.get('/v4/projects/?filter=keyword%3Dcode')
244+
.set({
245+
'Authorization': 'Bearer ' + testUtil.jwts.admin
246+
})
247+
.expect('Content-Type', /json/)
248+
.expect(200)
249+
.end(function(err, res) {
250+
if (err) {
251+
return done(err)
252+
}
253+
var resJson = res.body.result.content
254+
should.exist(resJson)
255+
resJson.should.have.lengthOf(1)
256+
resJson[0].name.should.equal('test1')
257+
done()
258+
})
259+
})
260+
})
261+
180262
})

swagger.yaml

100644100755
+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ paths:
4848
- type
4949
- status
5050
- memberOnly
51-
- name
51+
- keyword
5252
- name: sort
5353
required: false
5454
description: |

0 commit comments

Comments
 (0)