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', () => {