Skip to content
Snippets Groups Projects
dailyChargeAmount.js 6.2 KiB
Newer Older
process.env.NODE_ENV = 'test';

const chai = require('chai');

const dirtyChai = require('dirty-chai');

chai.use(dirtyChai);

const chaiXml = require('chai-xml');

chai.use(chaiXml);

const chaiHttp = require('chai-http');

const assert = chai.assert;

const expect = chai.expect;

const should = chai.should(); // actually call the function

const libs = `${process.cwd()}/libs`;

const server = require(`${libs}/app`);

chai.use(chaiHttp);
describe('request daily charge amount', () => {
    it('should list the year range', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount/year_range')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('start_year');
                res.body.result[0].should.have.property('end_year');
                done();
            });
    });

    it('should list the year range', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount/years')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('year');
                done();
            });
    });

    it('should list the locations', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount/location')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('id');
                res.body.result[0].should.have.property('name');
                done();
            });
    });

    it('should list education level short', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount/education_level_short')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('id');
                res.body.result[0].should.have.property('name');
                done();
            });
    });

    it('should list education level mod', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount/education_level_mod')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('id');
                res.body.result[0].should.have.property('name');
                done();
            });
    });

    it('should list the dimensions of education_level_short', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount?dims=education_level_short&filter=min_year:"2015",max_year:"2015",integral_time:"0",period:["3"]')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('year');
                res.body.result[0].should.have.property('education_level_short_id');
                res.body.result[0].should.have.property('education_level_short_name');
                res.body.result[0].should.have.property('average_class_duration');
                res.body.result[0].should.have.property('median_class_duration');
                res.body.result[0].should.have.property('std_class_duration');
                res.body.result[0].should.have.property('fstqt_class_duration');
                res.body.result[0].should.have.property('thdqt_class_duration');
                done();
            });
    });

    it('should list the filter of education level mod', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount/average?filter=education_level_mod:["3","4","5","6"],integral_time:"0",period:["3"]')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('year');
                res.body.result[0].should.have.property('education_level_mod_id');
                res.body.result[0].should.have.property('education_level_mod_name');
                res.body.result[0].should.have.property('average_class_duration');
                done();
            });
    });

    it('should return 400 with no filters', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount')
            .end((err, res) => {
                res.should.have.status(400);
                res.should.be.json;
                res.body.should.have.property('error');
                res.body.error.should.be.equal('Wrong/No filter specified');
                done();
            })
    });

    it('should return 400 with no filters', (done) => {
        chai.request(server)
            .get('/api/v1/daily_charge_amount/average?filter=education_level_mod:["3","4","5","6"]')
            .end((err, res) => {
                res.should.have.status(200);
                res.should.be.json;
                res.body.should.have.property('result');
                res.body.result.should.be.a('array');
                res.body.result[0].should.have.property('year');
                res.body.result[0].should.have.property('education_level_mod_id');
                res.body.result[0].should.have.property('education_level_mod_name');
                res.body.result[0].should.have.property('average_class_duration');
                done();
            });
    });
});