Advertisement
Guest User

Untitled

a guest
Jan 2nd, 2019
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const server = require('../../app')
  2. const User = require('../user/model').model
  3. const Car = require('../car/model').model
  4. const mongoose = require('../../services/mongoose/index')
  5.  
  6. const chai = require('chai')
  7. const chaiHttp = require('chai-http')
  8.  
  9. const should = chai.should();
  10.  
  11. chai.use(chaiHttp);
  12.  
  13. describe('User and car test', () => {
  14.     token = ''
  15.     carID= ''
  16.     reservationID= ''
  17.  
  18.     before((done) => {
  19.         User.deleteMany({}, (err) => {
  20.             Car.deleteMany({}, (err) => {
  21.                 done();
  22.             });        });
  23.  
  24.     });
  25.  
  26.     describe('POST /api/users', () => {
  27.         it('It should register user.', (done) => {
  28.             let user = {
  29.                 email: 'xxx@gmail.com',
  30.                 name: 'Jan',
  31.                 lastname:'Kowalski',
  32.                 role: 'admin',
  33.                 password: '123456789'
  34.             }
  35.  
  36.             chai.request(server)
  37.                 .post('/api/users')
  38.                 .send(user)
  39.                 .end((err, res) => {
  40.                     res.should.have.status(201);
  41.                     res.body.should.be.an('object');
  42.                     res.body.should.have.property('token');
  43.                     res.body.should.have.property('user');
  44.                     res.body.user.should.have.property('id');
  45.                     res.body.user.should.have.property('name').equal('Jan');
  46.                     res.body.user.should.have.property('lastname').equal('Kowalski');
  47.                     res.body.user.should.have.property('email').equal('xxx@gmail.com');
  48.                     res.body.user.should.have.property('reservations');
  49.                     res.body.user.reservations.should.be.an('array').to.be.empty;
  50.  
  51.                     token = res.body.token
  52.                     done();
  53.                 });
  54.         });
  55.     })
  56.  
  57.     describe('POST /api/users/auth', () => {
  58.         it('It should login user.', (done) => {
  59.             chai.request(server)
  60.                 .post('/api/users/auth')
  61.                 .auth('xxx@gmail.com', '123456789')
  62.                 .end((err, res) => {
  63.                     res.should.have.status(201);
  64.                     res.body.should.be.a('object');
  65.                     res.body.should.have.property('token');
  66.                     done();
  67.                 });
  68.         });
  69.     });
  70.  
  71.     describe('GET /api/users/me', () => {
  72.         it('It should get user information.', (done) => {
  73.             chai.request(server)
  74.                 .get('/api/users/me')
  75.                 .set('Authorization', `Bearer ${token}`)
  76.                 .end((err, res) => {
  77.                     res.should.have.status(200);
  78.                     res.body.should.be.a('object');
  79.                     res.body.should.have.property('role');
  80.                     done();
  81.                 });
  82.         });
  83.     });
  84.  
  85.     describe('POST /api/cars', () => {
  86.         it('It should add new car.', (done) => {
  87.             let car = {
  88.                 manufacturer: 'Volkswagen',
  89.                 model: 'Golf',
  90.                 VIN: 'AUUZZZ8147164',
  91.                 doors: 5,
  92.                 class: 'Sedan',
  93.                 price_per_hour : 30
  94.             }
  95.             chai.request(server)
  96.                 .post('/api/cars')
  97.                 .set('Authorization', `Bearer ${token}`)
  98.                 .send(car)
  99.                 .end((err, res) => {
  100.                     res.should.have.status(201);
  101.                     res.body.should.be.an('object');
  102.                     res.body.should.have.property('id');
  103.                     res.body.should.have.property('manufacturer').equal('Volkswagen');
  104.                     res.body.should.have.property('model').equal('Golf');
  105.                     res.body.should.have.property('reservations');
  106.                     res.body.reservations.should.be.an('array').to.be.empty;
  107.                     done();
  108.                 });
  109.         });
  110.     })
  111.  
  112.     describe('GET /api/cars', () => {
  113.         it('It should get cars information', (done) => {
  114.             chai.request(server)
  115.                 .get('/api/cars')
  116.                 .set('Authorization', `Bearer ${token}`)
  117.                 .end((err, res) => {
  118.                     res.should.have.status(200);
  119.                     res.body.should.be.an('array');
  120.                     res.body[0].should.have.property('id');
  121.                     res.body[0].should.have.property('manufacturer');
  122.                     res.body[0].should.have.property('model');
  123.                     res.body[0].should.have.property('VIN');
  124.                     carID = res.body[0].id
  125.                     done();
  126.                 });
  127.         });
  128.     });
  129.  
  130.     describe('POST /api/cars/:id/reservations', () => {
  131.         it('It should add new reservation.', (done) => {
  132.             let reservation = {
  133.                 pick_up_date: "Janary 24, 2019 03:00:01",
  134.                 drop_off_date: "January 24, 2019 09:00:00",
  135.  
  136.             }
  137.  
  138.             chai.request(server)
  139.                 .post('/api/cars/'+carID+'/createReservation')
  140.                 .set('Authorization', `Bearer ${token}`)
  141.                 .send(reservation)
  142.                 .end((err, res) => {
  143.                     res.should.have.status(200);
  144.                     res.body.should.be.an('array');
  145.                     res.body[0].should.have.property('id');
  146.                     reservationID=res.body[0].id
  147.                     res.body[0].total_price.should.be.equal(180)
  148.                     done();
  149.                 });
  150.         });
  151.     })
  152.  
  153.  
  154.  
  155.     describe('DELETE /api/car/:id/reservations/:reservationID', () => {
  156.         it('It should delete reservation', (done) => {
  157.             chai.request(server)
  158.                 .delete('/api/cars/'+carID+'/reservations/'+reservationID)
  159.                 .set('Authorization', `Bearer ${token}`)
  160.                 .end((err, res) => {
  161.                     res.should.have.status(200);
  162.                     done();
  163.                 });
  164.         });
  165.     });
  166.  
  167.  
  168.     describe('DELETE /api/car/:id', () => {
  169.         it('It should delete car', (done) => {
  170.             chai.request(server)
  171.                 .delete('/api/cars/'+carID)
  172.                 .set('Authorization', `Bearer ${token}`)
  173.                 .end((err, res) => {
  174.                     res.should.have.status(204);
  175.                     done();
  176.                 });
  177.         });
  178.     });
  179.  
  180. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement