Skip to content

Commit

Permalink
refactor: simplify before for tests
Browse files Browse the repository at this point in the history
Signed-off-by: virkt25 <taranveer@virk.cc>
  • Loading branch information
virkt25 committed Sep 19, 2018
1 parent f2a4319 commit 6a6f99b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 37 deletions.
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export {ShoppingApplication};

export async function main(options?: ApplicationConfig) {
const app = new ShoppingApplication(options);

await app.boot();
await app.start();

Expand Down
24 changes: 7 additions & 17 deletions test/acceptance/shopping-cart.controller.acceptance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,8 @@ describe('ShoppingCartController', () => {
let client: supertest.SuperTest<supertest.Test>;
const cartRepo = new ShoppingCartRepository(new RedisDataSource());

before(givenAnApplication);

before(givenARestServer);

before(async () => {
await app.boot();
await app.start();
});

before(() => {
client = createClientForHandler(server.requestHandler);
});

before(setupApplication);
beforeEach(clearDatabase);

after(async () => {
await app.stop();
});
Expand Down Expand Up @@ -101,16 +88,19 @@ describe('ShoppingCartController', () => {
expect(newCart.items).to.containEql(newItem.toJSON());
});

function givenAnApplication() {
async function setupApplication() {
app = new ShoppingApplication({
rest: {
port: 0,
},
});
}

async function givenARestServer() {
server = await app.getServer(RestServer);

await app.boot();
await app.start();

client = createClientForHandler(server.requestHandler);
}

async function clearDatabase() {
Expand Down
32 changes: 12 additions & 20 deletions test/acceptance/user.controller.acceptance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
import {createClientForHandler, supertest, expect} from '@loopback/testlab';
import {RestServer} from '@loopback/rest';
import {ShoppingApplication} from '../..';
import {UserRepository} from '../../src/repositories';
import {UserDataSource} from '../../src/datasources';
import {UserRepository, OrderRepository} from '../../src/repositories';
import {MongoDataSource} from '../../src/datasources';

describe('UserController', () => {
let app: ShoppingApplication;
let server: RestServer;
let client: supertest.SuperTest<supertest.Test>;
const userRepo = new UserRepository(new UserDataSource());
const orderRepo = new OrderRepository(new MongoDataSource());
const userRepo = new UserRepository(new MongoDataSource(), orderRepo);

const user = {
email: 'test@loopback.io',
Expand All @@ -22,21 +23,8 @@ describe('UserController', () => {
surname: 'User',
};

before(givenAnApplication);

before(givenARestServer);

before(async () => {
await app.boot();
await app.start();
});

before(() => {
client = createClientForHandler(server.requestHandler);
});

before(setupApplication);
beforeEach(clearDatabase);

after(async () => {
await app.stop();
});
Expand Down Expand Up @@ -109,23 +97,27 @@ describe('UserController', () => {
it('returns a user with given id when GET /user/{id} is invoked', async () => {
const newUser = await userRepo.create(user);
delete newUser.password;
delete newUser.orders;
// MongoDB returns an id object we need to convert to string
// since the REST API returns a string for the id property.
newUser.id = newUser.id.toString();

await client.get(`/users/${newUser.id}`).expect(200, newUser.toJSON());
});

function givenAnApplication() {
async function setupApplication() {
app = new ShoppingApplication({
rest: {
port: 0,
},
});
}

async function givenARestServer() {
server = await app.getServer(RestServer);

await app.boot();
await app.start();

client = createClientForHandler(server.requestHandler);
}

async function clearDatabase() {
Expand Down

0 comments on commit 6a6f99b

Please sign in to comment.