Files
habitica/test/api/v3/integration/hall/GET-hall_patrons.test.js
2018-10-23 13:30:38 +02:00

61 lines
1.9 KiB
JavaScript

import {
generateUser,
translate as t,
resetHabiticaDB,
} from '../../../../helpers/api-integration/v3';
import { times } from 'lodash';
describe('GET /hall/patrons', () => {
let user;
beforeEach(async () => {
await resetHabiticaDB();
user = await generateUser();
});
it('fails if req.query.page is not numeric', async () => {
await expect(user.get('/hall/patrons?page=notNumber')).to.eventually.be.rejected.and.eql({
code: 400,
error: 'BadRequest',
message: t('invalidReqParams'),
});
});
it('returns all patrons sorted by -backer.tier and with correct fields', async () => {
let patron1 = await generateUser({
backer: {tier: 1},
});
let patron2 = await generateUser({
backer: {tier: 3},
});
let patrons = await user.get('/hall/patrons');
expect(patrons.length).to.equal(2);
expect(patrons[0]._id).to.equal(patron2._id);
expect(patrons[1]._id).to.equal(patron1._id);
expect(patrons[0]).to.have.all.keys(['_id', 'contributor', 'backer', 'profile']);
expect(patrons[1]).to.have.all.keys(['_id', 'contributor', 'backer', 'profile']);
expect(patrons[0].profile).to.have.all.keys(['name']);
expect(patrons[1].profile).to.have.all.keys(['name']);
expect(patrons[0].profile.name).to.equal(patron2.profile.name);
expect(patrons[1].profile.name).to.equal(patron1.profile.name);
});
it('returns only first 50 patrons per request, more if req.query.page is passed', async () => {
await Promise.all(times(53, n => {
return generateUser({backer: {tier: n}});
}));
let patrons = await user.get('/hall/patrons');
expect(patrons.length).to.equal(50);
let morePatrons = await user.get('/hall/patrons?page=1');
expect(morePatrons.length).to.equal(2);
expect(morePatrons[0].backer.tier).to.equal(2);
expect(morePatrons[1].backer.tier).to.equal(1);
}).timeout(10000);
});