Skip to content

Commit

Permalink
Merge pull request #259 from bcgsc/feature/DEVSU-2012-add-iprEvidence…
Browse files Browse the repository at this point in the history
…Level-to-kbMatches

feature/DEVSU-2012-add-iprEvidenceLevel-to-kbMatches
  • Loading branch information
Nithriel authored Jul 5, 2023
2 parents ed1f9f5 + 9f01387 commit 5029136
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 8 deletions.
3 changes: 2 additions & 1 deletion app/routes/report/kbMatches.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ router.route('/:kbMatch([A-z0-9-]{36})')

router.route('/')
.get(async (req, res) => {
const {query: {matchedCancer, approvedTherapy, category}} = req;
const {query: {matchedCancer, approvedTherapy, category, iprEvidenceLevel}} = req;

// Check cache
const key = generateKey(`/reports/${req.report.ident}/kb-matches`, req.query);
Expand All @@ -79,6 +79,7 @@ router.route('/')
const results = await db.models.kbMatches.scope('public').findAll({
where: {
reportId: req.report.id,
...((iprEvidenceLevel) ? {iprEvidenceLevel: {[Op.in]: iprEvidenceLevel.split(',')}} : {}),
...((category) ? {category: {[Op.in]: category.split(',')}} : {}),
...((typeof matchedCancer === 'boolean') ? {matchedCancer} : {}),
...((typeof approvedTherapy === 'boolean') ? {approvedTherapy} : {}),
Expand Down
19 changes: 12 additions & 7 deletions app/routes/swagger/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -4421,16 +4421,21 @@
}
},
{
"name": "rapidTable",
"name": "category",
"in": "query",
"required": false,
"description": "Filter according to chosen rapidTable",
"description": "Filter by category field. Comma separated field",
"schema": {
"type": "string",
"enum": [
"therapeuticAssociation",
"cancerRelevance"
]
"type": "string"
}
},
{
"name": "iprEvidenceLevel",
"in": "query",
"required": false,
"description": "Filter by iprEvidenceLevel field. Comma separated field",
"schema": {
"type": "string"
}
}
],
Expand Down
24 changes: 24 additions & 0 deletions test/routes/report/kbMatches.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ describe('/reports/{REPORTID}/kb-matches', () => {
let variant;
let kbMatch;
let createData;
let createDataFilteringTest;

beforeAll(async () => {
// Get genomic template
Expand All @@ -69,9 +70,19 @@ describe('/reports/{REPORTID}/kb-matches', () => {
variantId: variant.id,
category: 'unknown',
variantType: 'cnv',
iprEvidenceLevel: 'IPR-A',
};

createDataFilteringTest = {
reportId: report.id,
variantId: variant.id,
category: 'unknown',
variantType: 'cnv',
iprEvidenceLevel: 'IPR-B',
};

kbMatch = await db.models.kbMatches.create(createData);
await db.models.kbMatches.create(createDataFilteringTest);
}, LONGER_TIMEOUT);

describe('GET', () => {
Expand All @@ -86,6 +97,19 @@ describe('/reports/{REPORTID}/kb-matches', () => {
checkKbMatch(res.body[0]);
});

test('Filtering kb-matches is ok', async () => {
const res = await request
.get(`/api/reports/${report.ident}/kb-matches`)
.query({iprEvidenceLevel: 'IPR-A,IPR-C'})
.auth(username, password)
.type('json')
.expect(HTTP_STATUS.OK);

expect(Array.isArray(res.body)).toBe(true);
checkKbMatch(res.body[0]);
res.body.every((match) => {return expect(match.iprEvidenceLevel).toEqual('IPR-A');});
});

test('Getting a specific kb-match is ok', async () => {
const res = await request
.get(`/api/reports/${report.ident}/kb-matches/${kbMatch.ident}`)
Expand Down

0 comments on commit 5029136

Please sign in to comment.