Implemented tests for transport

This commit is contained in:
Roger Garcia 2020-04-10 20:59:24 +02:00
parent 64fb96ea9c
commit b5d72682a5
3 changed files with 133 additions and 2 deletions

View file

@ -0,0 +1,98 @@
import { Client, expect } from '@loopback/testlab';
import { ExoApiApplication } from '../..';
import { setupApplication } from '../helpers/test-helper';
import { givenEmptyDatabase, givenCarrier, getCarriers, getCarrierFromId, getCarrierFromName, givenTransport, getTransports, getTransportFromId } from '../helpers/database.helpers';
describe('TransportController', () => {
let app: ExoApiApplication;
let client: Client;
before('setupApplication', async () => {
({ app, client } = await setupApplication());
});
// We load fixtures & helpers
beforeEach(givenEmptyDatabase);
after(async () => {
await app.stop();
});
it('Should get N transports from database', async () => {
const carrier = await givenCarrier({
name: 'test',
data: {},
structure: {}
});
const elements = 5;
const transports = [];
for (let i = 0; i < elements; ++i) {
const item = {
carrierId: carrier.id,
data: {}
};
transports.push(item);
await givenTransport(item);
}
const res = await client.get('/transport').expect(200);
// It should have given content
transports.forEach((value) => {
expect(res.body).matchAny(value);
});
});
it('Should post N transports to database', async () => {
const carrier = await givenCarrier({
name: 'test',
data: {},
structure: {}
});
const elements = 5;
const postSubscriptions: any[] = [];
for (let i = 0; i < elements; ++i) {
const item = {
carrierId: carrier.id,
data: {
test: i
}
};
const res = await client.post('/transport')
.send(item)
.expect(200);
postSubscriptions.push(res.body);
}
// Now we should fetch data from database
const dbSubscriptions = await getTransports();
expect(dbSubscriptions).to.match(postSubscriptions);
});
it('Should delete one transport from database', async () => {
// We create one subscription
const carrier = await givenCarrier({
name: 'test'
});
const transport = await givenTransport({
carrierId: carrier.id,
data: {}
});
await client.delete(`/transport/${transport.id}`)
.expect(204);
// We search given id to the database: it must throw an error
try {
const res = await getTransportFromId(transport.id.valueOf());
expect(res).to.be.undefined;
} catch (err) { }
});
});

View file

@ -16,7 +16,7 @@ import {
import { testdb } from '../datasources/radius.datasource';
import { testSimplexDb } from '../datasources/simplex.datasource';
import { SubscriptionIds, Circuit, Userinfo, Radcheck, Radusergroup, Radreply, Carrier } from '../../models';
import { SubscriptionIds, Circuit, Userinfo, Radcheck, Radusergroup, Radreply, Carrier, Transport } from '../../models';
export async function givenEmptyDatabase() {
let subscriptionRepository: SubscriptionRepository;
@ -205,3 +205,36 @@ export async function getCarriers() {
return carrierRepository.find();
}
export async function givenTransport(transport: Partial<Transport>) {
let subscriptionRepository: SubscriptionRepository;
let circuitRepository: CircuitRepository;
let transportRepository: TransportRepository;
transportRepository = new TransportRepository(testSimplexDb, async () => circuitRepository);
subscriptionRepository = new SubscriptionRepository(testSimplexDb, async () => circuitRepository);
circuitRepository = new CircuitRepository(testSimplexDb, async () => subscriptionRepository, async () => transportRepository);
return transportRepository.create(transport);
}
export async function getTransportFromId(id: number) {
let subscriptionRepository: SubscriptionRepository;
let circuitRepository: CircuitRepository;
let transportRepository: TransportRepository;
transportRepository = new TransportRepository(testSimplexDb, async () => circuitRepository);
subscriptionRepository = new SubscriptionRepository(testSimplexDb, async () => circuitRepository);
circuitRepository = new CircuitRepository(testSimplexDb, async () => subscriptionRepository, async () => transportRepository);
return transportRepository.findById(id);
}
export async function getTransports() {
let subscriptionRepository: SubscriptionRepository;
let circuitRepository: CircuitRepository;
let transportRepository: TransportRepository;
transportRepository = new TransportRepository(testSimplexDb, async () => circuitRepository);
subscriptionRepository = new SubscriptionRepository(testSimplexDb, async () => circuitRepository);
circuitRepository = new CircuitRepository(testSimplexDb, async () => subscriptionRepository, async () => transportRepository);
return transportRepository.find();
}

View file

@ -21,7 +21,7 @@ export class Transport extends Entity {
id: true,
generated: true,
})
id?: number;
id: number;
@property({
type: 'object',