diff --git a/commonComponents/frontend-js/frontendutils.js b/commonComponents/frontend-js/frontendutils.js
index 36da45c6f..26c7c665b 100644
--- a/commonComponents/frontend-js/frontendutils.js
+++ b/commonComponents/frontend-js/frontendutils.js
@@ -6,7 +6,7 @@ function surroundWithLink(text) {
// shamelessly stolen from http://stackoverflow.com/questions/1500260/detect-urls-in-text-with-javascript
var urlRegex = /(\b(https?|ftp|file):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(urlRegex, function (url) {
- return '' + ' ' + url + '';
+ return '' + ' ' + url + ' ';
});
}
diff --git a/softwerkskammer/frontendtests/surroundWithLink-tests.js b/softwerkskammer/frontendtests/surroundWithLink-tests.js
index 18ec2b0bf..69c0031db 100644
--- a/softwerkskammer/frontendtests/surroundWithLink-tests.js
+++ b/softwerkskammer/frontendtests/surroundWithLink-tests.js
@@ -10,29 +10,29 @@
describe('surround with link', function () {
it('surrounds a text starting with "http" with a link consisting of the text', function () {
var result = surroundWithLink('http://my.link');
- expect(result).to.equal(' http://my.link');
+ expect(result).to.equal(' http://my.link ');
});
it('surrounds each link in a text with two "http" links', function () {
var result = surroundWithLink('http://my.link, http://your.link');
- expect(result).to.equal(' http://my.link, http://your.link');
+ expect(result).to.equal(' http://my.link , http://your.link ');
});
it('surrounds only links in a text', function () {
var result = surroundWithLink('http://my.link, your.link');
- expect(result).to.equal(' http://my.link, your.link');
+ expect(result).to.equal(' http://my.link , your.link');
});
it('links an element inside class "urlify"', function () {
- expect($('#first').html()).to.equal(' http://my.first.link');
+ expect($('#first').html()).to.equal(' http://my.first.link ');
});
it('links two elements inside class "urlify"', function () {
- expect($('#second').html()).to.equal(' http://my.first.link, http://my.first.link.again');
+ expect($('#second').html()).to.equal(' http://my.first.link , http://my.first.link.again ');
});
it('links one of two elements inside class "urlify"', function () {
- expect($('#third').html()).to.equal(' http://my.first.link, my.first.link.again');
+ expect($('#third').html()).to.equal(' http://my.first.link , my.first.link.again');
});
});
diff --git a/softwerkskammer/lib/members/member.js b/softwerkskammer/lib/members/member.js
index 47cb23cef..eb9619db8 100644
--- a/softwerkskammer/lib/members/member.js
+++ b/softwerkskammer/lib/members/member.js
@@ -143,11 +143,11 @@ class Member {
}
interests() {
- return this.state.interests;
+ return this.interestsForSelect2().join(', ');
}
interestsForSelect2() {
- return (this.interests() || '').split(',').map(s => s.trim());
+ return (this.state.interests || '').split(',').map(s => s.trim());
}
reference() {
diff --git a/softwerkskammer/test/members/member_object_test.js b/softwerkskammer/test/members/member_object_test.js
index 7d1709bbf..540c8c57e 100644
--- a/softwerkskammer/test/members/member_object_test.js
+++ b/softwerkskammer/test/members/member_object_test.js
@@ -68,7 +68,8 @@ describe('Member initial filling', () => {
expect(member.twitter()).not.to.exist();
expect(member.location()).not.to.exist();
expect(member.profession()).not.to.exist();
- expect(member.interests()).not.to.exist();
+ expect(member.state.interests).not.to.exist();
+ expect(member.interests()).to.eql('');
expect(member.site()).not.to.exist();
expect(member.reference()).not.to.exist();
});
@@ -92,7 +93,8 @@ describe('fillFromUI', () => {
expect(member.twitter()).not.to.exist();
expect(member.location()).not.to.exist();
expect(member.profession()).not.to.exist();
- expect(member.interests()).not.to.exist();
+ expect(member.state.interests).not.to.exist();
+ expect(member.interests()).to.eql('');
expect(member.site()).not.to.exist();
expect(member.reference()).not.to.exist();
expect(member.notifyOnWikiChanges()).to.be.false();
@@ -128,6 +130,15 @@ describe('fillFromUI', () => {
expect(member.notifyOnWikiChanges()).to.be.true();
});
+ it('handles interests correctly - saving as string without blanks for legacy compatibilty - but displaying it with blanks', () => {
+ const record = {
+ interests: ['Everything', 'And more'],
+ };
+ const member = new Member().fillFromUI(record);
+ expect(member.state.interests).to.equal('Everything,And more');
+ expect(member.interests()).to.equal('Everything, And more');
+ });
+
});
describe('Member twitter field autocorrection', () => {