diff --git a/core/js/systemtags/systemtagsinputfield.js b/core/js/systemtags/systemtagsinputfield.js index 48fc98c6188bc20fb268cf95469d91127e0c49c5..a38d3b9a32f2dd277ba57e771ad2b430db857fce 100644 --- a/core/js/systemtags/systemtagsinputfield.js +++ b/core/js/systemtags/systemtagsinputfield.js @@ -320,7 +320,9 @@ */ _createSearchChoice: function(term) { term = term.trim(); - if (this.collection.filterByName(term).length) { + if (this.collection.filter(function(entry) { + return entry.get('name') === term; + }).length) { return; } if (!this._newTag) { diff --git a/core/js/tests/specs/systemtags/systemtagsinputfieldSpec.js b/core/js/tests/specs/systemtags/systemtagsinputfieldSpec.js index 08470fbdd8a9ed3c2aa2a21323bd9d96ebbecf79..4e47e093f330b7d05273acd6bb9b7eefe999d876 100644 --- a/core/js/tests/specs/systemtags/systemtagsinputfieldSpec.js +++ b/core/js/tests/specs/systemtags/systemtagsinputfieldSpec.js @@ -83,6 +83,15 @@ describe('OC.SystemTags.SystemTagsInputField tests', function() { expect(result.userVisible).toEqual(true); expect(result.userAssignable).toEqual(true); }); + it('creates dummy tag when user types non-matching name even with prefix of existing tag', function() { + var opts = select2Stub.getCall(0).args[0]; + var result = opts.createSearchChoice('ab'); + expect(result.id).toEqual(-1); + expect(result.name).toEqual('ab'); + expect(result.isNew).toEqual(true); + expect(result.userVisible).toEqual(true); + expect(result.userAssignable).toEqual(true); + }); it('creates the real tag and fires select event after user selects the dummy tag', function() { var selectHandler = sinon.stub(); view.on('select', selectHandler);