Skip to content

Commit

Permalink
refactor: fix jest config and refactor imports to absolute imports (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
haroldcohen authored Oct 6, 2023
1 parent 19fd56a commit b7e230f
Show file tree
Hide file tree
Showing 26 changed files with 98 additions and 104 deletions.
7 changes: 4 additions & 3 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ module.exports = {
transform: {
'^.+\\.[jt]sx?$': [
'ts-jest',
// {
// isolatedModules: true,
// },
],
},
moduleNameMapper: {
'src/(.*)': '<rootDir>/src/$1',
'tests/(.*)': '<rootDir>/tests/$1'
},
setupFiles: ['jest-date-mock']
};
2 changes: 1 addition & 1 deletion src/configuration/driving/REST/express/app.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import express from 'express';
import carRentalsQueryRouter from '../../../../driving/REST/express/routes/query/carRentals';
import carRentalsQueryRouter from 'src/driving/REST/express/routes/query/carRentals';

/**
* Creates and returns an instance of express.
Expand Down
10 changes: 5 additions & 5 deletions src/configuration/injection/containers/repositories/inMemory.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {container} from 'tsyringe';
import InMemoryCarReadRepository from '../../../../driven/repositories/inMemory/car/read';
import UnitOfWork from '../../../../driven/repositories/inMemory/common/unitOfWork';
import InMemoryCarRentalReadRepository from '../../../../driven/repositories/inMemory/carRental/read';
import InMemoryCarRentalWriteRepository from '../../../../driven/repositories/inMemory/carRental/write';
import InMemoryTransactionManagerProxy from '../../../../driven/repositories/inMemory/common/transactions/proxy';
import InMemoryCarReadRepository from 'src/driven/repositories/inMemory/car/read';
import UnitOfWork from 'src/driven/repositories/inMemory/common/unitOfWork';
import InMemoryCarRentalReadRepository from 'src/driven/repositories/inMemory/carRental/read';
import InMemoryCarRentalWriteRepository from 'src/driven/repositories/inMemory/carRental/write';
import InMemoryTransactionManagerProxy from 'src/driven/repositories/inMemory/common/transactions/proxy';

/**
* Configures tsyringe to use inMemory repositories.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {container} from 'tsyringe';
import TypeORMCarRentalReadRepository from '../../../../driven/repositories/typeorm/carRental/read';
import TypeORMCarRentalReadRepository from 'src/driven/repositories/typeorm/carRental/read';

/**
* Configures tsyringe to use typeORM repositories.
Expand Down
10 changes: 5 additions & 5 deletions src/core/useCases/carRental/rentACar/handler.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import {v4} from 'uuid';
import CarRentalDTO from '../../../domain/carRental/dto';
import CarRentalDTO from 'src/core/domain/carRental/dto';
import RentACarCommand from './types/command';
import CarReadRepositoryInterface from '../../../domain/car/interfaces/repositories/read';
import CarRentalWriteRepositoryInterface from '../../../domain/carRental/interfaces/repositories/write';
import CarRental from '../../../domain/carRental/model';
import TransactionManagerInterface from '../../../domain/common/interfaces/transactionManager';
import CarReadRepositoryInterface from 'src/core/domain/car/interfaces/repositories/read';
import CarRentalWriteRepositoryInterface from 'src/core/domain/carRental/interfaces/repositories/write';
import CarRental from 'src/core/domain/carRental/model';
import TransactionManagerInterface from 'src/core/domain/common/interfaces/transactionManager';

/**
* Use case class to rent a car for a customer.
Expand Down
4 changes: 2 additions & 2 deletions src/core/useCases/carRental/retrieveACarRental/handler.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import CarRentalDTO from '../../../domain/carRental/dto';
import CarRentalDTO from 'src/core/domain/carRental/dto';
import RetrieveACarRentalQuery from './types/query';
import CarRentalReadRepositoryInterface from '../../../domain/carRental/interfaces/repositories/read';
import CarRentalReadRepositoryInterface from 'src/core/domain/carRental/interfaces/repositories/read';

/**
* Use case class to retrieve a car rental.
Expand Down
8 changes: 4 additions & 4 deletions src/driven/repositories/inMemory/car/read.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import 'reflect-metadata';
import {inject, injectable} from 'tsyringe';
import _ from 'lodash';
import Car from '../../../../core/domain/car/model';
import Car from 'src/core/domain/car/model';
import UnitOfWork from '../common/unitOfWork';
import CarReadRepositoryInterface from '../../../../core/domain/car/interfaces/repositories/read';
import CarReadRepositoryInterface from 'src/core/domain/car/interfaces/repositories/read';
import InMemoryCar from './car.entity';
import InMemoryCarRental from '../carRental/carRental.entity';
import CarModel from '../../../../core/domain/carModel/model';
import CarModel from 'src/core/domain/carModel/model';
import InMemoryCarModel from '../carModel/carModel.entity';
import UnavailableCarError from '../../../../core/domain/car/errors/unavailable';
import UnavailableCarError from 'src/core/domain/car/errors/unavailable';

@injectable()
export default class InMemoryCarReadRepository implements CarReadRepositoryInterface {
Expand Down
8 changes: 4 additions & 4 deletions src/driven/repositories/inMemory/carRental/read.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import 'reflect-metadata';
import _ from 'lodash';
import {inject, injectable} from 'tsyringe';
import CarRentalReadRepositoryInterface from '../../../../core/domain/carRental/interfaces/repositories/read';
import CarRental from '../../../../core/domain/carRental/model';
import CarRentalReadRepositoryInterface from 'src/core/domain/carRental/interfaces/repositories/read';
import CarRental from 'src/core/domain/carRental/model';
import UnitOfWork from '../common/unitOfWork';
import Car from '../../../../core/domain/car/model';
import Car from 'src/core/domain/car/model';
import InMemoryCarRental from './carRental.entity';
import CarModel from '../../../../core/domain/carModel/model';
import CarModel from 'src/core/domain/carModel/model';
import InMemoryCarModel from '../carModel/carModel.entity';

@injectable()
Expand Down
4 changes: 2 additions & 2 deletions src/driven/repositories/inMemory/carRental/write.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {inject, injectable} from 'tsyringe';
import UnitOfWork from '../common/unitOfWork';
import CarRentalWriteRepositoryInterface from '../../../../core/domain/carRental/interfaces/repositories/write';
import CarRentalDTO from '../../../../core/domain/carRental/dto';
import CarRentalWriteRepositoryInterface from 'src/core/domain/carRental/interfaces/repositories/write';
import CarRentalDTO from 'src/core/domain/carRental/dto';

@injectable()
export default class InMemoryCarRentalWriteRepository implements CarRentalWriteRepositoryInterface {
Expand Down
4 changes: 2 additions & 2 deletions src/driven/repositories/inMemory/common/transactions/proxy.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {inject, singleton} from 'tsyringe';
import TransactionManagerInterface from '../../../../../core/domain/common/interfaces/transactionManager';
import TransactionManagerInterface from 'src/core/domain/common/interfaces/transactionManager';
import {UnitOfWorkOriginatorInterface} from '../unitOfWork';
import InMemoryTransactionManager from './manager';
import TransactionInterface from '../../../../../core/domain/common/interfaces/transaction';
import TransactionInterface from 'src/core/domain/common/interfaces/transaction';

/**
* Transaction manager proxy that can be used by the system's core.
Expand Down
8 changes: 4 additions & 4 deletions src/driven/repositories/typeorm/carRental/read.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import CarRentalReadRepositoryInterface from '../../../../core/domain/carRental/interfaces/repositories/read';
import CarRental from '../../../../core/domain/carRental/model';
import Car from '../../../../core/domain/car/model';
import CarModel from '../../../../core/domain/carModel/model';
import CarRentalReadRepositoryInterface from 'src/core/domain/carRental/interfaces/repositories/read';
import CarRental from 'src/core/domain/carRental/model';
import Car from 'src/core/domain/car/model';
import CarModel from 'src/core/domain/carModel/model';
import {TypeORMCarRental} from '../entities';
import {inject, singleton} from 'tsyringe';
import {DataSource} from 'typeorm';
Expand Down
2 changes: 1 addition & 1 deletion src/driven/repositories/typeorm/entities/carRental.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {BaseEntity, Column, Entity, OneToOne, PrimaryColumn, JoinColumn} from 'typeorm';
import {TypeORMCar, TypeORMCustomer} from "./index";
import {TypeORMCar, TypeORMCustomer} from './index';

@Entity()
export default class TypeORMCarRental extends BaseEntity {
Expand Down
6 changes: 3 additions & 3 deletions src/driving/REST/express/routes/query/carRentals.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {container} from 'tsyringe';
import {Request, Response, Router} from 'express';
import RetrieveACarRental from '../../../../../core/useCases/carRental/retrieveACarRental/handler';
import CarRentalView from "../../../../views/carRental/base";
import CarRentalPresenter from "../../../../presenters/carRental/base";
import RetrieveACarRental from 'src/core/useCases/carRental/retrieveACarRental/handler';
import CarRentalView from 'src/driving/views/carRental/base';
import CarRentalPresenter from 'src/driving/presenters/carRental/base';

const router = Router();

Expand Down
4 changes: 2 additions & 2 deletions src/driving/presenters/carRental/base.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import CarRentalView from '../../views/carRental/base';
import CarRentalDTO from '../../../core/domain/carRental/dto';
import CarRentalView from 'src/driving/views/carRental/base';
import CarRentalDTO from 'src/core/domain/carRental/dto';

/**
* Base presenter for car rental views.
Expand Down
2 changes: 1 addition & 1 deletion tests/configuration/containers/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {container} from 'tsyringe';
import DateParser from '../../utils/dateParser';
import DateParser from 'tests/utils/dateParser';

/**
* Provides tsyringe with testing utilities, such as date parsers.
Expand Down
24 changes: 12 additions & 12 deletions tests/e2e/REST/express/carRental/query/retrieveCarRental.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@ import {advanceTo} from 'jest-date-mock';
import supertest from 'supertest';
import express from 'express';
import http from 'http';
import createApp from '../../../../../../src/configuration/driving/REST/express/app';
import CarRentalView from '../../../../../../src/driving/views/carRental/base';
import DateParser from '../../../../../utils/dateParser';
import useTestingUtilities from '../../../../../configuration/containers/utils';
import createApp from 'src/configuration/driving/REST/express/app';
import CarRentalView from 'src/driving/views/carRental/base';
import DateParser from 'tests/utils/dateParser';
import useTestingUtilities from 'tests/configuration/containers/utils';
import {startServer} from '../../utils/setup';
import useTypeORMRepositories from '../../../../../../src/configuration/injection/containers/repositories/typeorm';
import TypeORMCustomerFactory from '../../../../../integration/typeorm/seeding/factories/customer';
import TypeORMCarModelFactory from '../../../../../integration/typeorm/seeding/factories/carModel';
import TypeORMCarFactory from '../../../../../integration/typeorm/seeding/factories/car';
import TypeORMCarRentalFactory from '../../../../../integration/typeorm/seeding/factories/carRental';
import useAppDataSource from "../../../../../../src/configuration/injection/containers/database";
import {runDataSourceBeforeEachOps} from "../../../../../integration/typeorm/utils/setup";
import {runDataSourceAfterEachOps} from "../../../../../integration/typeorm/utils/tearDown";
import useTypeORMRepositories from 'src/configuration/injection/containers/repositories/typeorm';
import TypeORMCustomerFactory from 'tests/integration/typeorm/seeding/factories/customer';
import TypeORMCarModelFactory from 'tests/integration/typeorm/seeding/factories/carModel';
import TypeORMCarFactory from 'tests/integration/typeorm/seeding/factories/car';
import TypeORMCarRentalFactory from 'tests/integration/typeorm/seeding/factories/carRental';
import useAppDataSource from 'src/configuration/injection/containers/database';
import {runDataSourceBeforeEachOps} from 'tests/integration/typeorm/utils/setup';
import {runDataSourceAfterEachOps} from 'tests/integration/typeorm/utils/tearDown';


describe.each([
Expand Down
25 changes: 12 additions & 13 deletions tests/integration/typeorm/carRental/query/read.test.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
import 'reflect-metadata';
import {container} from 'tsyringe';
import {v4} from 'uuid';
import {DataSource} from 'typeorm';
import {advanceTo} from 'jest-date-mock';
import useTypeORMRepositories from '../../../../../src/configuration/injection/containers/repositories/typeorm';
import useAppDataSource from '../../../../../src/configuration/injection/containers/database';
import DateParser from '../../../../utils/dateParser';
import useTestingUtilities from '../../../../configuration/containers/utils';
import TypeORMCarRentalReadRepository from '../../../../../src/driven/repositories/typeorm/carRental/read';
import CarRentalDTO from '../../../../../src/core/domain/carRental/dto';
import TypeORMCarRentalFactory from '../../seeding/factories/carRental';
import TypeORMCustomerFactory from '../../seeding/factories/customer';
import TypeORMCarFactory from '../../seeding/factories/car';
import TypeORMCarModelFactory from '../../seeding/factories/carModel';
import {runDataSourceBeforeEachOps} from '../../utils/setup';
import {runDataSourceAfterEachOps} from '../../utils/tearDown';
import useTypeORMRepositories from 'src/configuration/injection/containers/repositories/typeorm';
import useAppDataSource from 'src/configuration/injection/containers/database';
import DateParser from 'tests/utils/dateParser';
import useTestingUtilities from 'tests/configuration/containers/utils';
import TypeORMCarRentalReadRepository from 'src/driven/repositories/typeorm/carRental/read';
import CarRentalDTO from 'src/core/domain/carRental/dto';
import TypeORMCarRentalFactory from 'tests/integration/typeorm/seeding/factories/carRental';
import TypeORMCustomerFactory from 'tests/integration/typeorm/seeding/factories/customer';
import TypeORMCarFactory from 'tests/integration/typeorm/seeding/factories/car';
import TypeORMCarModelFactory from 'tests/integration/typeorm/seeding/factories/carModel';
import {runDataSourceBeforeEachOps} from 'tests/integration/typeorm/utils/setup';
import {runDataSourceAfterEachOps} from 'tests/integration/typeorm/utils/tearDown';

describe.each([
{
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/typeorm/seeding/factories/car.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {container} from 'tsyringe';
import {DataSource} from 'typeorm';
import {v4} from 'uuid';
import {FactorizedAttrs, Factory} from '@jorgebodega/typeorm-factory';
import {TypeORMCar} from '../../../../../src/driven/repositories/typeorm/entities';
import {TypeORMCar} from 'src/driven/repositories/typeorm/entities';

export default class TypeORMCarFactory extends Factory<TypeORMCar> {
protected entity = TypeORMCar;
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/typeorm/seeding/factories/carModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {container} from 'tsyringe';
import {DataSource} from 'typeorm';
import {v4} from 'uuid';
import {FactorizedAttrs, Factory} from '@jorgebodega/typeorm-factory';
import {TypeORMCarModel} from '../../../../../src/driven/repositories/typeorm/entities';
import {TypeORMCarModel} from 'src/driven/repositories/typeorm/entities';

export default class TypeORMCarModelFactory extends Factory<TypeORMCarModel> {
protected entity = TypeORMCarModel;
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/typeorm/seeding/factories/carRental.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {container} from 'tsyringe';
import {DataSource} from 'typeorm';
import {v4} from 'uuid';
import {FactorizedAttrs, Factory} from '@jorgebodega/typeorm-factory';
import {TypeORMCar, TypeORMCarRental, TypeORMCustomer} from '../../../../../src/driven/repositories/typeorm/entities';
import {TypeORMCar, TypeORMCarRental, TypeORMCustomer} from 'src/driven/repositories/typeorm/entities';

export default class TypeORMCarRentalFactory extends Factory<TypeORMCarRental> {
protected entity = TypeORMCarRental;
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/typeorm/seeding/factories/customer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {container} from 'tsyringe';
import {DataSource} from 'typeorm';
import {v4} from 'uuid';
import {FactorizedAttrs, Factory} from '@jorgebodega/typeorm-factory';
import {TypeORMCustomer} from '../../../../../src/driven/repositories/typeorm/entities';
import {TypeORMCustomer} from 'src/driven/repositories/typeorm/entities';


export default class TypeORMCustomerFactory extends Factory<TypeORMCustomer> {
Expand Down
26 changes: 13 additions & 13 deletions tests/unit/carRental/command/rentACar.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@ import 'reflect-metadata';
import {v4} from 'uuid';
import {container} from 'tsyringe';
import {advanceTo} from 'jest-date-mock';
import DateParser from '../../../utils/dateParser';
import RentACar from '../../../../src/core/useCases/carRental/rentACar/handler';
import RentACarCommand from '../../../../src/core/useCases/carRental/rentACar/types/command';
import CarRentalDTO from '../../../../src/core/domain/carRental/dto';
import useInMemoryRepositories from '../../../../src/configuration/injection/containers/repositories/inMemory';
import {convertToNumericPrice} from '../../../utils/misc';
import useTestingUtilities from '../../../configuration/containers/utils';
import DateParser from 'tests/utils/dateParser';
import RentACar from 'src/core/useCases/carRental/rentACar/handler';
import RentACarCommand from 'src/core/useCases/carRental/rentACar/types/command';
import CarRentalDTO from 'src/core/domain/carRental/dto';
import useInMemoryRepositories from 'src/configuration/injection/containers/repositories/inMemory';
import {convertToNumericPrice} from 'tests/utils/misc';
import useTestingUtilities from 'tests/configuration/containers/utils';
import {
populateAvailableCarFromTestCase,
populateCarsAndCarRentalsFromTestCase
} from '../../utils/populateFromTestCase';
import {CarTestCaseEntry} from '../../utils/testCase.types';
import InMemoryCarRentalReadRepository from '../../../../src/driven/repositories/inMemory/carRental/read';
import TransactionInterface from '../../../../src/core/domain/common/interfaces/transaction';
import TransactionManagerInterface from '../../../../src/core/domain/common/interfaces/transactionManager';
import UnavailableCarError from '../../../../src/core/domain/car/errors/unavailable';
} from 'tests/unit/utils/populateFromTestCase';
import {CarTestCaseEntry} from 'tests/unit/utils/testCase.types';
import InMemoryCarRentalReadRepository from 'src/driven/repositories/inMemory/carRental/read';
import TransactionInterface from 'src/core/domain/common/interfaces/transaction';
import TransactionManagerInterface from 'src/core/domain/common/interfaces/transactionManager';
import UnavailableCarError from 'src/core/domain/car/errors/unavailable';

describe.each([
{
Expand Down
22 changes: 11 additions & 11 deletions tests/unit/carRental/query/retrieveACarRental.test.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import 'reflect-metadata';
import {container} from 'tsyringe';
import {advanceTo} from 'jest-date-mock';
import useTestingUtilities from '../../../configuration/containers/utils';
import RetrieveACarRental from '../../../../src/core/useCases/carRental/retrieveACarRental/handler';
import DateParser from '../../../utils/dateParser';
import useInMemoryRepositories from '../../../../src/configuration/injection/containers/repositories/inMemory';
import TransactionManagerInterface from '../../../../src/core/domain/common/interfaces/transactionManager';
import TransactionInterface from '../../../../src/core/domain/common/interfaces/transaction';
import CarRentalDTO from '../../../../src/core/domain/carRental/dto';
import {convertToNumericPrice} from '../../../utils/misc';
import RetrieveACarRentalQuery from '../../../../src/core/useCases/carRental/retrieveACarRental/types/query';
import useTestingUtilities from 'tests/configuration/containers/utils';
import RetrieveACarRental from 'src/core/useCases/carRental/retrieveACarRental/handler';
import DateParser from 'tests/utils/dateParser';
import useInMemoryRepositories from 'src/configuration/injection/containers/repositories/inMemory';
import TransactionManagerInterface from 'src/core/domain/common/interfaces/transactionManager';
import TransactionInterface from 'src/core/domain/common/interfaces/transaction';
import CarRentalDTO from 'src/core/domain/carRental/dto';
import {convertToNumericPrice} from 'tests/utils/misc';
import RetrieveACarRentalQuery from 'src/core/useCases/carRental/retrieveACarRental/types/query';
import {populateCarModel, populateCarRental} from '../../utils/populate';
import UnitOfWork from '../../../../src/driven/repositories/inMemory/common/unitOfWork';
import InMemoryCarRentalReadRepository from '../../../../src/driven/repositories/inMemory/carRental/read';
import UnitOfWork from 'src/driven/repositories/inMemory/common/unitOfWork';
import InMemoryCarRentalReadRepository from 'src/driven/repositories/inMemory/carRental/read';

describe.each([
{
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/utils/populate.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import UnitOfWork from '../../../src/driven/repositories/inMemory/common/unitOfWork';
import InMemoryCarModel from '../../../src/driven/repositories/inMemory/carModel/carModel.entity';
import UnitOfWork from 'src/driven/repositories/inMemory/common/unitOfWork';
import InMemoryCarModel from 'src/driven/repositories/inMemory/carModel/carModel.entity';

/**
* Populates the unit of work with a car.
Expand Down
6 changes: 3 additions & 3 deletions tests/unit/utils/populateFromTestCase.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'reflect-metadata';
import {v4} from 'uuid';
import {container} from 'tsyringe';
import UnitOfWork from '../../../src/driven/repositories/inMemory/common/unitOfWork';
import DateParser from '../../utils/dateParser';
import UnitOfWork from 'src/driven/repositories/inMemory/common/unitOfWork';
import DateParser from 'tests/utils/dateParser';
import {populateCar, populateCarModel, populateCarRental} from './populate';
import {CarTestCaseEntry} from './testCase.types';
import {convertToNumericPrice} from '../../utils/misc';
import {convertToNumericPrice} from 'tests/utils/misc';

/**
* Populates the system with an available car and its rentals,
Expand Down
Loading

0 comments on commit b7e230f

Please sign in to comment.