Skip to content

Commit

Permalink
Actually made NameRes tests and added include/exclude filters.
Browse files Browse the repository at this point in the history
  • Loading branch information
gaurav committed Jan 5, 2024
1 parent 0ea56d4 commit ccb943f
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 13 deletions.
2 changes: 2 additions & 0 deletions website/src/components/TestResult.vue
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ export default {
case 'json':
case 'NodeNorm':
return this.testResult.result;
case 'NameRes':
return this.testResult.result;
}
},
testResultAsJson() {
Expand Down
65 changes: 52 additions & 13 deletions website/src/models/NameResTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,16 @@ function convertPrevNameResFormatToCurrent(response) {

// A helper function that returns a Promise that evaluates to a JSON result object.
// TODO: cache this.
export function lookupNameRes(nameResEndpoint, query, limit=10) {
// TODO: once all current instances are upgraded to 1.3.2+, we can replace this with a GET request.
const url = nameResEndpoint + "/lookup?string=" + encodeURIComponent(query) + "&limit=" + encodeURIComponent(limit);
const request = new Request(
url, {
method: "POST"
}
);
export function lookupNameRes(nameResEndpoint, query, expectedID="", limit=10, includePrefixes=[], excludePrefixes=[]) {
const url = new URL(nameResEndpoint + '/lookup');
url.search = new URLSearchParams({
'string': query,
'limit': limit,
'only_prefixes': includePrefixes,
'exclude_prefixes': excludePrefixes,
})

const request = new Request(url);

return fetch(request).then(response => {
if (!response.ok) return TestResult.failure("Could not submit request to NameRes /lookup", 'text', response.statusText);
Expand All @@ -48,7 +50,25 @@ export function lookupNameRes(nameResEndpoint, query, limit=10) {
return TestResult.failure(`NameRes /lookup returned an unexpected response`, 'json', responseJson);
}

return TestResult.success(`NameRes /lookup returned ${results.length} results`, 'NameRes', results);
// Is the expectedID in the results?
if (!expectedID) {
return TestResult.success(`NameRes /lookup returned ${results.length} results, no expected ID`, 'NameRes', results);
}
if (results.length < 1) {
return TestResult.failure(`NameRes /lookup returned NO results`, 'NameRes', results);
}

const topID = results[0]['curie'];
if (topID === expectedID) {
return TestResult.success(`NameRes /lookup returned ${results.length} results with expected ID ${expectedID} at top`, 'NameRes', results);
}

const resultIDs = results.map(r => r['curie']);
if (resultIDs.includes(expectedID)) {
return TestResult.success(`NameRes /lookup returned ${results.length} results with expected ID ${expectedID} at position ${resultIDs.indexOf(expectedID) + 1}`, 'NameRes', results);
}

return TestResult.failure(`NameRes /lookup returned ${results.length} results but missed expected ID ${expectedID}`, 'NameRes', results);
});
});
}
Expand All @@ -62,7 +82,7 @@ export class NameResTest extends Test {
/**
* Convert a single row into zero or more tests.
*/
static convertRowToTests(row) {
static convertRowToTests(row, limit=10) {
const source = row['Source'];
const source_url = row['Source URL'];

Expand Down Expand Up @@ -168,6 +188,25 @@ export class NameResTest extends Test {
});
}

// Do we have a preferred ID?
let expectedID = '';
if ('Preferred ID' in row) {
expectedID = row['Preferred ID'];
}

// Are there prefixes to include or exclude?
const prefixes = (row['Prefixes'] ? row['Prefixes'] : "").split('|');
const includePrefixes = [];
const excludePrefixes = [];
prefixes.forEach(prefix => {
if (!prefix) return;
if (prefix.startsWith('^')) {
excludePrefixes.push(prefix.substring(1));
} else {
includePrefixes.push(prefix);
}
})

// Look for tests in this row.
const tests = [];
if('Query Label' in row) { // || 'Preferred label' in row) {
Expand All @@ -176,15 +215,15 @@ export class NameResTest extends Test {
if (query_label !== '') {
// To begin with, let's just return the results as-is.
tests.push(new NameResTest(`Lookup "${query_label}"`, {}, source, source_url, (nameResURL) => {
return lookupNameRes(nameResURL, query_label);
return lookupNameRes(nameResURL, query_label, expectedID, limit, includePrefixes, excludePrefixes);
}));
}

const preferred_label = row['Preferred Label'];
if (preferred_label !== '') {
// To begin with, let's just return the results as-is.
tests.push(new NameResTest(`Lookup "${preferred_label}"`, {}, source, source_url, (nameResURL) => {
return lookupNameRes(nameResURL, preferred_label);
return lookupNameRes(nameResURL, preferred_label, expectedID, limit, includePrefixes, excludePrefixes);
}));
}

Expand All @@ -195,7 +234,7 @@ export class NameResTest extends Test {

// To begin with, let's just return the results as-is.
tests.push(new NameResTest(`Lookup "${additional_label}"`, {}, source, source_url, (nameResURL) => {
return lookupNameRes(nameResURL, additional_label);
return lookupNameRes(nameResURL, additional_label, expectedID, limit, includePrefixes, excludePrefixes);
}));
});

Expand Down

0 comments on commit ccb943f

Please sign in to comment.