From 22be3867f132537de16a88d15c2d286604f89593 Mon Sep 17 00:00:00 2001
From: Vincent Petry <pvince81@owncloud.com>
Date: Tue, 2 Feb 2016 10:42:35 +0100
Subject: [PATCH] Allow creating tags where another one with same prefix exists

When creating a new entry, compare the full tag name and not only the
prefix.
---
 core/js/systemtags/systemtagsinputfield.js               | 4 +++-
 .../tests/specs/systemtags/systemtagsinputfieldSpec.js   | 9 +++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/core/js/systemtags/systemtagsinputfield.js b/core/js/systemtags/systemtagsinputfield.js
index 48fc98c6188..a38d3b9a32f 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 08470fbdd8a..4e47e093f33 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);
-- 
GitLab