Implemented tests for transport
This commit is contained in:
parent
64fb96ea9c
commit
b5d72682a5
98
src/__tests__/acceptance/transport.controller.acceptance.ts
Normal file
98
src/__tests__/acceptance/transport.controller.acceptance.ts
Normal 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) { }
|
||||
});
|
||||
});
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ export class Transport extends Entity {
|
|||
id: true,
|
||||
generated: true,
|
||||
})
|
||||
id?: number;
|
||||
id: number;
|
||||
|
||||
@property({
|
||||
type: 'object',
|
||||
|
|
Loading…
Reference in a new issue