fix some tests

This commit is contained in:
Matteo Pagliazzi
2015-12-19 18:07:39 +01:00
parent ba22575e1a
commit 3e87c8d3e9
6 changed files with 101 additions and 106 deletions

View File

@@ -1,6 +1,7 @@
import {
createAndPopulateGroup,
generateUser,
generateGroup,
requester,
} from '../../../../helpers/api-integration.helper';
@@ -8,8 +9,9 @@ describe('GET /groups/:groupId/chat', () => {
let user, api;
before(() => {
return generateUser().then((generatedUser) => {
return generateUser({balance: 2}).then((generatedUser) => {
user = generatedUser;
console.log(user._id, user.balance)
api = requester(user);
});
});
@@ -18,14 +20,15 @@ describe('GET /groups/:groupId/chat', () => {
let group;
before(() => {
return createAndPopulateGroup({groupDetails: {
return generateGroup(user, {
name: 'test group',
type: 'guild',
privacy: 'public',
chat: [
'Hello',
'Welcome to the Guild',
],
}})
})
.then((createdGroup) => {
group = createdGroup;
});

View File

@@ -7,17 +7,17 @@ import {
describe('POST /group', () => {
let user, api;
beforeEach(() => {
return generateUser().then((generatedUser) => {
user = generatedUser;
api = requester(user);
});
});
beforeEach(() => {
return generateUser().then((generatedUser) => {
user = generatedUser;
api = requester(user);
});
});
context('Guilds', () => {
context('Guilds', () => {
it('returns an error when a user with insufficient funds attempts to create a guild', () => {
let groupName = "Test Public Guild";
let groupType = "guild";
let groupName = 'Test Public Guild';
let groupType = 'guild';
return expect(
api.post('/groups', {
@@ -32,99 +32,90 @@ describe('POST /group', () => {
});
});
context('public guild', () => {
it('creates a group', () => {
let groupName = "Test Public Guild";
let groupType = "guild";
let tmpUser;
context('public guild', () => {
it('creates a group', () => {
let groupName = 'Test Public Guild';
let groupType = 'guild';
return generateUser({balance: 1}).then((generatedUser) => {
tmpUser = generatedUser;
api = requester(tmpUser);
return api.post('/groups', {
name: groupName,
type: groupType
});
})
.then((result) => {
expect(result._id).to.exist;
expect(result.name).to.equal(groupName);
expect(result.type).to.equal(groupType);
})
.then(() => {
api = requester(user);
});
});
});
context('private guild', () => {
it('creates a group', () => {
let groupName = "Test Private Guild";
let groupType = "guild";
let groupPrivacy = "private";
let tmpUser;
return generateUser({balance: 1}).then((generatedUser) => {
tmpUser = generatedUser;
api = requester(tmpUser);
return api.post('/groups', {
name: groupName,
type: groupType,
privacy: groupPrivacy
});
})
.then((result) => {
expect(result._id).to.exist;
expect(result.name).to.equal(groupName);
expect(result.type).to.equal(groupType);
expect(result.privacy).to.equal(groupPrivacy);
})
.then(() => {
api = requester(tmpUser);
});
});
});
});
context('Parties', () => {
it('creates a party', () => {
let groupName = "Test Party";
let groupType = "party";
return api.post('/groups', {
name: groupName,
type: groupType
})
.then((result) => {
expect(result._id).to.exist;
expect(result.name).to.equal(groupName);
expect(result.type).to.equal(groupType);
})
});
it('prevents user in a party from creating a party', () => {
let tmpUser;
let groupName = "Test Party";
let groupType = "party";
return generateUser().then((generatedUser) => {
tmpUser = generatedUser;
api = requester(tmpUser);
return api.post('/groups', {
return generateUser({balance: 1}).then((generatedUser) => {
let api2 = requester(generatedUser);
return api2.post('/groups', {
name: groupName,
type: groupType
});
})
.then(() => {
return expect(api.post('/groups')).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('messageGroupAlreadyInParty'),
});
})
.then(() => {
api = requester(user);
.then((result) => {
expect(result._id).to.exist;
expect(result.name).to.equal(groupName);
expect(result.type).to.equal(groupType);
});
});
});
});
context('private guild', () => {
it('creates a group', () => {
let groupName = 'Test Private Guild';
let groupType = 'guild';
let groupPrivacy = 'private';
let tmpUser;
return generateUser({balance: 1}).then((generatedUser) => {
let api2 = requester(generatedUser);
return api2.post('/groups', {
name: groupName,
type: groupType,
privacy: groupPrivacy
});
})
.then((result) => {
expect(result._id).to.exist;
expect(result.name).to.equal(groupName);
expect(result.type).to.equal(groupType);
expect(result.privacy).to.equal(groupPrivacy);
});
});
});
});
context('Parties', () => {
it('creates a party', () => {
let groupName = "Test Party";
let groupType = "party";
return api.post('/groups', {
name: groupName,
type: groupType
})
.then((result) => {
expect(result._id).to.exist;
expect(result.name).to.equal(groupName);
expect(result.type).to.equal(groupType);
})
});
it('prevents user in a party from creating a party', () => {
let tmpUser;
let groupName = "Test Party";
let groupType = "party";
return generateUser().then((generatedUser) => {
tmpUser = generatedUser;
api = requester(tmpUser);
return api.post('/groups', {
name: groupName,
type: groupType
});
})
.then(() => {
return expect(api.post('/groups')).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('messageGroupAlreadyInParty'),
});
})
.then(() => {
api = requester(user);
});
});
});
});

View File

@@ -103,15 +103,15 @@ export function generateUser (update = {}) {
// Generates a new group. Requires a user object, which
// will will become the groups leader. Takes an update
// argument which will update group
export function generateGroup (leader, update = {}) {
export function generateGroup (leader, details = {}, update = {}) {
let request = _requestMaker(leader, 'post');
return new Promise((resolve, reject) => {
request('/groups').then((group) => {
request('/groups', details).then((group) => {
_updateDocument('groups', group, update, () => {
resolve(group);
}).catch(reject);
});
}).catch(reject);
});
}

View File

@@ -8,7 +8,7 @@ import {
BadRequest,
NotAuthorized,
} from '../../libs/api-v3/errors';
import firebase from '../../libs/api-v3/firebase';
import * as firebase from '../../libs/api-v3/firebase';
let api = {};
@@ -31,6 +31,7 @@ api.createGroup = {
group.leader = user._id;
if (group.type === 'guild') {
console.log(user._id, user.balance)
if (user.balance < 1) return next(new NotAuthorized(res.t('messageInsufficientGems')));
group.balance = 1;

View File

@@ -4,7 +4,7 @@ import shared from '../../../common';
import _ from 'lodash';
import { model as Challenge} from './challenge';
import validator from 'validator';
import firebase from '../libs/api-v2/firebase';
import * as firebase from '../libs/api-v2/firebase';
import baseModel from '../libs/api-v3/baseModel';
import Q from 'q';

View File

@@ -477,7 +477,7 @@ export let schema = new Schema({
schema.plugin(baseModel, {
// TODO revisit a lot of things are missing
noSet: ['_id', 'apiToken', 'auth.blocked', 'auth.timestamps', 'lastCron', 'auth.local.hashed_password', 'auth.local.salt', 'tasksOrder', 'tags', 'stats', 'challenges', 'guilds', 'party._id', 'party.quest', 'invitations'],
noSet: ['_id', 'apiToken', 'auth.blocked', 'auth.timestamps', 'lastCron', 'auth.local.hashed_password', 'auth.local.salt', 'tasksOrder', 'tags', 'stats', 'challenges', 'guilds', 'party._id', 'party.quest', 'invitations', 'balance'],
private: ['auth.local.hashed_password', 'auth.local.salt'],
toJSONTransform: function userToJSON (doc) {
// FIXME? Is this a reference to `doc.filters` or just disabled code? Remove?