Provision subdomain for ALL new teams, add tests
This commit is contained in:
@@ -85,7 +85,22 @@ const uploadAvatar = async model => {
|
||||
}
|
||||
};
|
||||
|
||||
Team.prototype.createFirstCollection = async function(userId) {
|
||||
Team.prototype.provisionSubdomain = async function(subdomain) {
|
||||
let append = 0;
|
||||
|
||||
while (true) {
|
||||
try {
|
||||
await this.update({ subdomain });
|
||||
break;
|
||||
} catch (err) {
|
||||
// subdomain was invalid or already used, try again
|
||||
subdomain = `${subdomain}${++append}`;
|
||||
}
|
||||
}
|
||||
return subdomain;
|
||||
};
|
||||
|
||||
Team.prototype.provisionFirstCollection = async function(userId) {
|
||||
return await Collection.create({
|
||||
name: 'General',
|
||||
description: 'Your first Collection',
|
||||
|
||||
19
server/models/Team.test.js
Normal file
19
server/models/Team.test.js
Normal file
@@ -0,0 +1,19 @@
|
||||
/* eslint-disable flowtype/require-valid-file-annotation */
|
||||
import { flushdb } from '../test/support';
|
||||
import { buildTeam } from '../test/factories';
|
||||
|
||||
beforeEach(flushdb);
|
||||
|
||||
it('should set subdomain if available', async () => {
|
||||
const team = await buildTeam();
|
||||
const subdomain = await team.provisionSubdomain('testy');
|
||||
expect(subdomain).toEqual('testy');
|
||||
expect(team.subdomain).toEqual('testy');
|
||||
});
|
||||
|
||||
it('should set subdomain with append if unavailable', async () => {
|
||||
const team = await buildTeam({ subdomain: 'myteam' });
|
||||
const subdomain = await team.provisionSubdomain('myteam');
|
||||
expect(subdomain).toEqual('myteam1');
|
||||
expect(team.subdomain).toEqual('myteam1');
|
||||
});
|
||||
Reference in New Issue
Block a user