diff --git a/server/models/Team.js b/server/models/Team.js index 47ee9c83..5d1edba5 100644 --- a/server/models/Team.js +++ b/server/models/Team.js @@ -86,8 +86,9 @@ const uploadAvatar = async model => { }; Team.prototype.provisionSubdomain = async function(subdomain) { - let append = 0; + if (this.subdomain) return this.subdomain; + let append = 0; while (true) { try { await this.update({ subdomain }); @@ -97,6 +98,7 @@ Team.prototype.provisionSubdomain = async function(subdomain) { subdomain = `${subdomain}${++append}`; } } + return subdomain; }; diff --git a/server/models/Team.test.js b/server/models/Team.test.js index 6172923e..4563bc32 100644 --- a/server/models/Team.test.js +++ b/server/models/Team.test.js @@ -12,8 +12,17 @@ it('should set subdomain if available', async () => { }); it('should set subdomain with append if unavailable', async () => { - const team = await buildTeam({ subdomain: 'myteam' }); + await buildTeam({ subdomain: 'myteam' }); + + const team = await buildTeam(); const subdomain = await team.provisionSubdomain('myteam'); expect(subdomain).toEqual('myteam1'); expect(team.subdomain).toEqual('myteam1'); }); + +it('should do nothing if subdomain already set', async () => { + const team = await buildTeam({ subdomain: 'example' }); + const subdomain = await team.provisionSubdomain('myteam'); + expect(subdomain).toEqual('example'); + expect(team.subdomain).toEqual('example'); +});