Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { expect } from 'chai';
- import { stubObject, stubInterface, stubConstructor } from 'ts-sinon';
- import mongoose = require('mongoose');
- import Container from 'typedi';
- import { UserService } from '../services/userService';
- import { OrderService } from '../services/orderService';
- import { User } from '../domain/models/user/user';
- import { Username } from '../domain/models/user/username';
- import { Email } from '../domain/models/user/email';
- import { Password } from '../domain/models/user/password';
- import { Priority } from '../domain/models/user/priority';
- import { Nif } from '../domain/models/user/nif';
- import { Address } from '../domain/models/user/address';
- import { UserDTO } from '../domain/dtos/UserDTO';
- import { ProductDTO } from '../domain/dtos/ProductDTO';
- import { Quantity } from '../domain/models/order/quantity';
- import { DeliveryDate } from '../domain/models/order/deliverydate';
- import { Order } from '../domain/models/order/order';
- import { OrderDTO } from '../domain/dtos/OrderDTO';
- import { OrderRepository } from '../infra/database/repositories/OrderRepository';
- import { OrderDocument } from '../infra/database/models/order';
- import { UserRepository } from '../infra/database/repositories/UserRepository';
- import { UserDocument } from '../infra/database/models/user';
- var Mockgoose = require('mock-mongoose').Mockgoose;
- var mockgoose = new Mockgoose(mongoose);
- describe('OrderService', async function () {
- var clientService: UserService, orderService: OrderService;
- var orderStubRepository, clientStubService;
- //-----------User data------------
- var username = new Username('User');
- var email = new Email('test@email.com');
- var pass = new Password('pass');
- var priority = new Priority();
- priority.setPriority(1);
- var address = new Address('Rua dos testes, 85');
- var nif = new Nif(123456789);
- var user = new User(username, email, pass, address, nif);
- var userDTO = new UserDTO('User', 'test@email.com', 'pass', 'Rua dos testes, 85', 123456789);
- userDTO.priority = 1;
- //-----------Order data------------
- var product = new ProductDTO(1, 'Spoon');
- var quantity = new Quantity(100);
- var deliveryDate = new DeliveryDate(2030, 11, 9);
- var order = new Order(user, product, quantity, deliveryDate);
- var orderDTO = new OrderDTO('User', product, 100, new Date('2030-11-9'), 'OnHold');
- this.enableTimeouts(false);
- before(async () => {
- await mockgoose.prepareStorage().then(async function () {
- await mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true });
- mongoose.set('useFindAndModify', false);
- //Repositories
- var orderRepository = new OrderRepository(OrderDocument);
- var userRepository = new UserRepository(UserDocument);
- //Services
- clientService = new UserService();
- //Stubs
- orderStubRepository = stubObject<OrderRepository>(orderRepository);
- clientStubService = stubObject<UserService>(clientService);
- Container.set(UserService, clientStubService);
- orderService = new OrderService();
- console.log("AWAIT");
- })
- console.log("BEFORE");
- })
- describe('getAllOrders', function () {
- it('Should return list when there are orders', async function () {
- console.log("ORDERS EXIST");
- console.log(orderStubRepository);
- orderStubRepository.findAll.returns(Array.of(order));
- var result = await OrderService.getAllOrders();
- expect(result).to.not.be.empty
- expect(result.length).to.equal(1)
- });
- it('Should return empty when there are no orders', async function () {
- console.log("DONT");
- orderStubRepository.findAll.returns([]);
- expect(await OrderService.getAllOrders()).to.be.empty
- });
- });
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement