Skip to content
Snippets Groups Projects
Commit ef1dd3ea authored by Vincent Petry's avatar Vincent Petry
Browse files

Properly update internal file info with updated tags

Whenever tags are updated, they need to be updated in the file list's
file info array as well.

This commit also adds unit tests and makes sure that whichever tags are
sent back by the server after update are used when updating
attributes/fileinfo.
parent 331d73c3
Branches
No related tags found
No related merge requests found
...@@ -110,10 +110,17 @@ ...@@ -110,10 +110,17 @@
dir + '/' + fileName, dir + '/' + fileName,
tags tags
).then(function(result) { ).then(function(result) {
// response from server should contain updated tags
var newTags = result.tags;
if (_.isUndefined(newTags)) {
newTags = tags;
}
var fileInfo = context.fileList.files[$file.index()];
// read latest state from result // read latest state from result
toggleStar($actionEl, (result.tags.indexOf(OC.TAG_FAVORITE) >= 0)); toggleStar($actionEl, (newTags.indexOf(OC.TAG_FAVORITE) >= 0));
$file.attr('data-tags', tags.join('|')); $file.attr('data-tags', newTags.join('|'));
$file.attr('data-favorite', !isFavorite); $file.attr('data-favorite', !isFavorite);
fileInfo.tags = newTags;
}); });
} }
}); });
......
...@@ -77,11 +77,39 @@ describe('OCA.Files.TagsPlugin tests', function() { ...@@ -77,11 +77,39 @@ describe('OCA.Files.TagsPlugin tests', function() {
}); });
describe('Applying tags', function() { describe('Applying tags', function() {
it('sends request to server and updates icon', function() { it('sends request to server and updates icon', function() {
// TODO var request;
fileList.setFiles(testFiles); fileList.setFiles(testFiles);
$tr = fileList.$el.find('tbody tr:first');
$action = $tr.find('.action-favorite');
$action.click();
expect(fakeServer.requests.length).toEqual(1);
var request = fakeServer.requests[0];
expect(JSON.parse(request.requestBody)).toEqual({
tags: ['tag1', 'tag2', OC.TAG_FAVORITE]
});
request.respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
tags: ['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]
}));
expect($tr.attr('data-favorite')).toEqual('true');
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect($action.find('img').attr('src')).toEqual(OC.imagePath('core', 'actions/starred'));
$action.click();
request = fakeServer.requests[1];
expect(JSON.parse(request.requestBody)).toEqual({
tags: ['tag1', 'tag2', 'tag3']
}); });
it('sends all tags to server when applyFileTags() is called ', function() { request.respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
// TODO tags: ['tag1', 'tag2', 'tag3']
}));
expect($tr.attr('data-favorite')).toEqual('false');
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3']);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3']);
expect($action.find('img').attr('src')).toEqual(OC.imagePath('core', 'actions/star'));
}); });
}); });
}); });
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment