Merge branch 'api-v3' into api-v3-groups

This commit is contained in:
Blade Barringer
2016-01-16 19:46:47 -06:00
144 changed files with 6397 additions and 6175 deletions

View File

@@ -2,7 +2,7 @@ import {
generateGroup,
generateUser,
resetHabiticaDB,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
describe('GET /groups', () => {
const NUMBER_OF_PUBLIC_GUILDS = 3;
@@ -22,6 +22,7 @@ describe('GET /groups', () => {
name: 'public guild - is member',
type: 'guild',
privacy: 'public',
}, {
members: [leader._id, user._id],
});
@@ -35,6 +36,7 @@ describe('GET /groups', () => {
name: 'private guild - is member',
type: 'guild',
privacy: 'private',
}, {
members: [leader._id, user._id],
});

View File

@@ -2,7 +2,7 @@ import {
createAndPopulateGroup,
generateUser,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
import {
find,
each,
@@ -24,7 +24,7 @@ describe('GET /groups/:id', () => {
groupDetails,
});
leader = groupData.leader;
leader = groupData.groupLeader;
member = groupData.members[0];
createdGroup = groupData.group;
});

View File

@@ -2,7 +2,7 @@ import {
generateGroup,
generateUser,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
describe('POST /groups', () => {
context('All groups', () => {

View File

@@ -2,7 +2,7 @@ import {
generateGroup,
generateUser,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
describe('POST /groups/:id', () => {
context('user is not the leader of the group', () => {

View File

@@ -2,7 +2,7 @@ import {
createAndPopulateGroup,
generateUser,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
import { each, find } from 'lodash';
describe('POST /groups/:id/join', () => {
@@ -98,7 +98,7 @@ describe('POST /groups/:id/join', () => {
},
});
group = groupData.group;
await groupData.leader.post(`/groups/${group._id}/leave`);
await groupData.groupLeader.post(`/groups/${group._id}/leave`);
user = await generateUser();
});

View File

@@ -1,7 +1,7 @@
import {
checkExistence,
createAndPopulateGroup,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
import { find } from 'lodash';
describe('POST /groups/:id/leave', () => {
@@ -48,7 +48,7 @@ describe('POST /groups/:id/leave', () => {
},
});
user = groupData.leader;
user = groupData.groupLeader;
group = groupData.group;
});
@@ -71,7 +71,7 @@ describe('POST /groups/:id/leave', () => {
},
});
user = groupData.leader;
user = groupData.groupLeader;
group = groupData.group;
});
@@ -95,7 +95,7 @@ describe('POST /groups/:id/leave', () => {
},
});
user = groupData.leader;
user = groupData.groupLeader;
group = groupData.group;
invitee1 = groupData.invitees[0];
invitee2 = groupData.invitees[1];
@@ -122,7 +122,7 @@ describe('POST /groups/:id/leave', () => {
},
});
user = groupData.leader;
user = groupData.groupLeader;
group = groupData.group;
invitee1 = groupData.invitees[0];
invitee2 = groupData.invitees[1];

View File

@@ -1,7 +1,7 @@
import {
createAndPopulateGroup,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
describe('POST /groups/:id/removeMember', () => {
context('user is not member of the group', () => {
@@ -24,7 +24,7 @@ describe('POST /groups/:id/removeMember', () => {
privacy: 'public',
},
}).then((res) => {
leader = res.leader;
leader = res.groupLeader;
member = res.members[0];
group = res.group;
});

View File

@@ -1,7 +1,7 @@
import {
createAndPopulateGroup,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('DELETE /groups/:id/chat', () => {
let group, message, user;
@@ -14,7 +14,7 @@ describe('DELETE /groups/:id/chat', () => {
},
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
return user.post(`/groups/${group._id}/chat`, null, { message: 'Some message' });
}).then((res) => {

View File

@@ -1,6 +1,6 @@
import {
createAndPopulateGroup,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('GET /groups/:id/chat', () => {
context('group with multiple messages', () => {
@@ -16,7 +16,7 @@ describe('GET /groups/:id/chat', () => {
});
group = groupData.group;
user = groupData.leader;
user = groupData.groupLeader;
member = groupData.members[0];
await member.post(`/groups/${group._id}/chat`, null, { message: 'Group member message' });

View File

@@ -1,7 +1,7 @@
import {
createAndPopulateGroup,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('POST /groups/:id/chat', () => {
let group, user;
@@ -14,7 +14,7 @@ describe('POST /groups/:id/chat', () => {
},
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
});
});

View File

@@ -2,27 +2,26 @@ import {
createAndPopulateGroup,
generateUser,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('POST /groups/:id/chat/:id/clearflags', () => {
let group;
let guild;
beforeEach(async () => {
return createAndPopulateGroup({
let { group } = await createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
members: 1,
flagCount: 1,
chat: [{
id: 'message-to-clear',
flagCount: 1,
flags: { 'some-id': true },
}],
},
}).then((res) => {
group = res.group;
});
guild = group;
});
context('non admin', () => {
@@ -33,7 +32,7 @@ describe('POST /groups/:id/chat/:id/clearflags', () => {
});
it('cannot clear flags', async () => {
return expect(nonadmin.post(`/groups/${group._id}/chat/message-to-clear/clearflags`))
return expect(nonadmin.post(`/groups/${guild._id}/chat/message-to-clear/clearflags`))
.to.eventually.be.rejected.and.eql({
code: 401,
text: t('messageGroupChatAdminClearFlagCount'),
@@ -53,23 +52,23 @@ describe('POST /groups/:id/chat/:id/clearflags', () => {
});
it('clears flags', async () => {
return admin.post(`/groups/${group._id}/chat/message-to-clear/clearflags`).then(() => {
return admin.get(`/groups/${group._id}/chat`);
return admin.post(`/groups/${guild._id}/chat/message-to-clear/clearflags`).then(() => {
return admin.get(`/groups/${guild._id}/chat`);
}).then((messages) => {
expect(messages[0].flagCount).to.eql(0);
});
});
it('leaves old flags on the flag object', async () => {
return admin.post(`/groups/${group._id}/chat/message-to-clear/clearflags`).then(() => {
return admin.get(`/groups/${group._id}/chat`);
return admin.post(`/groups/${guild._id}/chat/message-to-clear/clearflags`).then(() => {
return admin.get(`/groups/${guild._id}/chat`);
}).then((messages) => {
expect(messages[0].flags).to.have.property('some-id', true);
});
});
it('returns error if message does not exist', async () => {
return expect(admin.post(`/groups/${group._id}/chat/non-existant-message/clearflags`))
return expect(admin.post(`/groups/${guild._id}/chat/non-existant-message/clearflags`))
.to.eventually.be.rejected.and.eql({
code: 404,
text: t('messageGroupChatNotFound'),

View File

@@ -2,7 +2,7 @@ import {
createAndPopulateGroup,
generateUser,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('POST /groups/:id/chat/:id/flag', () => {
context('another member\'s message', () => {
@@ -17,7 +17,7 @@ describe('POST /groups/:id/chat/:id/flag', () => {
members: 1,
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
member = res.members[0];
return member.post(`/groups/${group._id}/chat`, null, { message: 'Group member message' });
@@ -56,7 +56,7 @@ describe('POST /groups/:id/chat/:id/flag', () => {
},
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
return user.post(`/groups/${group._id}/chat`, null, { message: 'User\'s own message' });
}).then((res) => {
@@ -84,7 +84,7 @@ describe('POST /groups/:id/chat/:id/flag', () => {
},
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
});
});
@@ -121,7 +121,7 @@ describe('POST /groups/:id/chat/:id/flag', () => {
});
group = groupData.group;
user = groupData.leader;
user = groupData.groupLeader;
});
it('changes only the message that is flagged', async () => {
@@ -166,7 +166,7 @@ describe('POST /groups/:id/chat/:id/flag', () => {
members: 1,
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
member = res.members[0];
return member.post(`/groups/${group._id}/chat`, null, { message: 'Group member message' });

View File

@@ -2,7 +2,7 @@ import {
createAndPopulateGroup,
generateUser,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('POST /groups/:id/chat/:id/like', () => {
context('another member\'s message', () => {
@@ -17,7 +17,7 @@ describe('POST /groups/:id/chat/:id/like', () => {
members: 1,
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
member = res.members[0];
return member.post(`/groups/${group._id}/chat`, null, { message: 'Group member message' });
@@ -53,7 +53,7 @@ describe('POST /groups/:id/chat/:id/like', () => {
},
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
return user.post(`/groups/${group._id}/chat`, null, { message: 'User\'s own message' });
}).then((res) => {
@@ -94,7 +94,7 @@ describe('POST /groups/:id/chat/:id/like', () => {
});
group = groupData.group;
user = groupData.leader;
user = groupData.groupLeader;
});
it('changes only the message that is liked', async () => {
@@ -134,7 +134,7 @@ describe('POST /groups/:id/chat/:id/like', () => {
},
}).then((res) => {
group = res.group;
user = res.leader;
user = res.groupLeader;
});
});

View File

@@ -2,7 +2,7 @@ import {
generateUser,
requester,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
import { v4 as generateRandomUserName } from 'uuid';
import { each } from 'lodash';

View File

@@ -1,4 +1,4 @@
import {requester} from '../../../helpers/api-integration.helper';
import {requester} from '../../../helpers/api-integration/v2';
describe('Status', () => {
it('returns a status of up when server is up', async () => {

View File

@@ -3,7 +3,7 @@ import {
createAndPopulateGroup,
generateGroup,
generateUser,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
import { find } from 'lodash';
describe('DELETE /user', () => {
@@ -36,28 +36,30 @@ describe('DELETE /user', () => {
});
it('deletes party when user is the only member', async () => {
return expect(user.del('/user').then(() => {
return checkExistence('groups', party._id);
})).to.eventually.eql(false);
await user.del('/user');
await expect(checkExistence('groups', party._id)).to.eventually.eql(false);
});
});
context('last member of a private guild', () => {
let guild;
let guild, lastMember;
beforeEach(async () => {
return generateGroup(user, {
let {
groupLeader,
group,
} = await createAndPopulateGroup({
type: 'guild',
privacy: 'private',
}).then((group) => {
guild = group;
});
guild = group;
lastMember = groupLeader;
});
it('deletes guild when user is the only member', async () => {
return expect(user.del('/user').then(() => {
return checkExistence('groups', guild._id);
})).to.eventually.eql(false);
await lastMember.del('/user');
await expect(checkExistence('groups', guild._id)).to.eventually.eql(false);
});
});
@@ -74,7 +76,7 @@ describe('DELETE /user', () => {
}).then((res) => {
group = res.group;
newLeader = res.members[0];
oldLeader = res.leader;
oldLeader = res.groupLeader;
});
});

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
describe('GET /user', () => {
let user;

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
describe('GET /user/tags', () => {
let user;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
describe('GET /user/tags/id', () => {
let user;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../helpers/api-integration.helper';
} from '../../../helpers/api-integration/v2';
import { each, get } from 'lodash';

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
import { each } from 'lodash';
describe('GET /user/anonymized', () => {

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
import { each } from 'lodash';

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('POST /user/pushDevice', () => {
let user;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('DELETE /user/tasks/:id', () => {
let user, task;

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('GET /user/tasks/', () => {
let user;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('GET /user/tasks/:id', () => {
let user, task;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('POST /user/tasks', () => {
let user;

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v2';
describe('PUT /user/tasks/:id', () => {
let user, task;

View File

@@ -1,4 +1,4 @@
import { requester } from '../../../helpers/api-v3-integration.helper';
import { requester } from '../../../helpers/api-integration/v3';
describe('notFound Middleware', () => {
it('returns a 404 error when the resource is not found', async () => {

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('DELETE /tags/:tagId', () => {
let user;

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('GET /tags', () => {
let user;

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('GET /tags/:tagId', () => {
let user;

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('POST /tags', () => {
let user;

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('PUT /tags/:tagId', () => {
let user;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('DELETE /tasks/:id', () => {
let user;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('GET /tasks/:id', () => {

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('GET /tasks/user', () => {
let user;

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('POST /tasks/:id/score/:direction', () => {

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('PUT /tasks/:id', () => {

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../../helpers/api-v3-integration.helper';
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('DELETE /tasks/:taskId/checklist/:itemId', () => {

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../../helpers/api-v3-integration.helper';
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('POST /tasks/:taskId/checklist/', () => {

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../../helpers/api-v3-integration.helper';
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('POST /tasks/:taskId/checklist/:itemId/score', () => {

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../../helpers/api-v3-integration.helper';
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('PUT /tasks/:taskId/checklist/:itemId', () => {

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../../helpers/api-v3-integration.helper';
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('DELETE /tasks/:taskId/tags/:tagId', () => {

View File

@@ -1,7 +1,7 @@
import {
generateUser,
translate as t,
} from '../../../../../helpers/api-v3-integration.helper';
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateUUID } from 'uuid';
describe('POST /tasks/:taskId/tags/:tagId', () => {

View File

@@ -1,6 +1,6 @@
import {
generateUser,
} from '../../../../helpers/api-v3-integration.helper';
} from '../../../../helpers/api-integration/v3';
describe('GET /user', () => {
let user;

View File

@@ -2,7 +2,7 @@ import {
generateUser,
requester,
translate as t,
} from '../../../../../helpers/api-v3-integration.helper';
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateRandomUserName } from 'uuid';
import { each } from 'lodash';