Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions frontend/src/js/controllers/challengeCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -2259,6 +2259,21 @@
return false;
};

vm.getSubmissionMetadataForEdit = function(submission) {
if (submission.submission_metadata != null) {
return JSON.parse(JSON.stringify(submission.submission_metadata));
}

var phaseId = submission.challenge_phase || vm.phaseId;
var phaseAttributes = vm.submissionMetaAttributes.find(function(element) {
return element["phaseId"] == phaseId;
});
if (phaseAttributes && phaseAttributes.attributes != null) {
return JSON.parse(JSON.stringify(phaseAttributes.attributes));
}
return null;
};

vm.showMdDialog = function (ev, submissionId) {
for (var i = 0; i < vm.submissionResult.count; i++) {
if (vm.submissionResult.results[i].id === submissionId) {
Expand All @@ -2271,9 +2286,7 @@
vm.project_url = vm.submissionMetaData.project_url;
vm.publication_url = vm.submissionMetaData.publication_url;
vm.submissionId = submissionId;
if (vm.submissionMetaData.submission_metadata != null) {
vm.currentSubmissionMetaData = JSON.parse(JSON.stringify(vm.submissionMetaData.submission_metadata));
}
vm.currentSubmissionMetaData = vm.getSubmissionMetadataForEdit(vm.submissionMetaData);
$mdDialog.show({
scope: $scope,
preserveScope: true,
Expand Down
108 changes: 108 additions & 0 deletions frontend/tests/controllers-test/challengeCtrlMetadata.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
'use strict';

describe('ChallengeCtrl submission metadata editing', function() {
beforeEach(angular.mock.module('evalai'));

var $controller, $mdDialog, $rootScope, $scope, utilities, vm;

beforeEach(inject(function(
_$controller_,
_$mdDialog_,
_$rootScope_,
_utilities_
) {
$controller = _$controller_;
$mdDialog = _$mdDialog_;
$rootScope = _$rootScope_;
utilities = _utilities_;

spyOn(utilities, 'getData').and.returnValue(null);
spyOn(utilities, 'sendRequest').and.callFake(function() {});
spyOn($mdDialog, 'show');

$scope = $rootScope.$new();
vm = $controller('ChallengeCtrl', { $scope: $scope });
}));

it('loads phase metadata attributes when submission has no metadata', function() {
var submissionId = 1;
var phaseAttributes = [
{
name: 'TextAttribute',
type: 'text',
value: null,
description: 'Sample'
}
];
vm.submissionResult = {
count: 1,
results: [
{
id: submissionId,
challenge_phase: 2,
method_name: 'method name',
method_description: 'method description',
project_url: 'project url',
publication_url: 'publication url',
submission_metadata: null
}
]
};
vm.submissionMetaAttributes = [
{
phaseId: 2,
attributes: phaseAttributes
}
];

vm.showMdDialog(new Event('click'), submissionId);

expect(vm.currentSubmissionMetaData).toEqual(phaseAttributes);
expect(vm.currentSubmissionMetaData).not.toBe(phaseAttributes);
expect($mdDialog.show).toHaveBeenCalled();
});

it('keeps saved submission metadata when present', function() {
var submissionId = 1;
var savedMetadata = [
{
name: 'TextAttribute',
type: 'text',
value: 'saved value',
description: 'Sample'
}
];
vm.submissionResult = {
count: 1,
results: [
{
id: submissionId,
challenge_phase: 2,
method_name: 'method name',
method_description: 'method description',
project_url: 'project url',
publication_url: 'publication url',
submission_metadata: savedMetadata
}
]
};
vm.submissionMetaAttributes = [
{
phaseId: 2,
attributes: [
{
name: 'TextAttribute',
type: 'text',
value: null,
description: 'Sample'
}
]
}
];

vm.showMdDialog(new Event('click'), submissionId);

expect(vm.currentSubmissionMetaData).toEqual(savedMetadata);
expect(vm.currentSubmissionMetaData).not.toBe(savedMetadata);
});
});