/* global describe, it */ const app = require('../dist/scripts/app').default const request = require('supertest').agent(app.listen()) const should = require('chai').should() const Random = require('mockjs').Random describe('Account', () => { let user = { fullname: Random.cname(), email: Random.email(), password: Random.word(6) } let validUser = (user) => { user.should.be.a('object').have.all.keys(['id', 'fullname', 'email']) } let validUserForSearch = (user) => { user.should.be.a('object').have.all.keys(['id', 'fullname', 'email']) } let validPagination = (pagination) => { pagination.should.be.a('object').contain.all.keys(['cursor', 'limit', 'total']) } it('/account/register', (done) => { request.post('/account/register') .send(user) .expect('Content-Type', /json/) .expect(200) .end((err, res) => { console.log(err) should.not.exist(err) validUser(res.body.data) user.id = res.body.data.id done() }) }) it('/account/count', (done) => { request.get('/account/count') .expect('Content-Type', /json/) .expect(200) .end((err, res) => { should.not.exist(err) res.body.data.should.to.be.a('number').above(0) done() }) }) it('/account/list', (done) => { request.get('/account/list') .expect('Content-Type', /json/) .expect(200) .end((err, res) => { should.not.exist(err) let { data, pagination } = res.body data.should.be.a('array').have.length.above(0) data.forEach(item => { validUserForSearch(item) }) validPagination(pagination) done() }) }) it('/account/login', done => { request.post('/account/login') .send({ email: user.email, password: user.password }) .expect('Content-Type', /json/) .expect(200) .end((err, res) => { should.not.exist(err) validUser(res.body.data) done() }) }) it('/account/info', done => { request.get('/account/info') .expect('Content-Type', /json/) .expect(200) .end((err, res) => { should.not.exist(err) validUser(res.body.data) done() }) }) it('/account/logout', done => { request.get('/account/logout') .expect('Content-Type', /json/) .expect(200) .end((err, res) => { should.not.exist(err) res.body.data.should.be.a('object').have.all.keys({ id: user.id }) done() }) }) it('/account/info', done => { request.get('/account/info') .expect('Content-Type', /json/) .expect(200) .end((err, res) => { should.not.exist(err) should.not.exist(res.body.data) done() }) }) it('/account/remove', (done) => { request.get('/account/remove') .query({ id: user.id }) .expect(200) .end((err, res) => { should.not.exist(err) res.body.data.should.eq(1) done() }) }) })