JS: Ensure to print status messages for score

* If only one response is available, no array will be passed (but rather an Object). The impact of this has been tackled with the changes included
This commit is contained in:
Sebastian Serth
2021-10-30 01:14:55 +02:00
parent 1609bd2e0e
commit 3c8017f23e

View File

@ -67,13 +67,31 @@ CodeOceanEditorEvaluation = {
}, },
printScoringResults: function (response) { printScoringResults: function (response) {
response = (Array.isArray(response)) ? response : [response]
const test_results = response.filter(function(x) {
if (x === undefined || x === null) {
return false;
}
switch (x.file_role) {
case 'teacher_defined_test':
return true;
case 'teacher_defined_linter':
return true;
default:
return false;
}
});
$('#results ul').first().html(''); $('#results ul').first().html('');
$('.test-count .number').html(response.filter(function(x) { return x && x.file_role === 'teacher_defined_test'; }).length); $('.test-count .number').html(test_results.length);
this.clearOutput(); this.clearOutput();
_.each(response, function (result, index) { _.each(test_results, function (result, index) {
this.printOutput(result, false, index); // based on https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript
this.printScoringResult(result, index); if (result === Object(result)) {
this.printOutput(result, false, index);
this.printScoringResult(result, index);
}
}.bind(this)); }.bind(this));
if (_.some(response, function (result) { if (_.some(response, function (result) {