Small Nest.js-based project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
test-assignment-parcellab/src/packages.controller.spec.ts

69 lines
2.5 KiB

import { TestingModule } from '@nestjs/testing';
import request from 'supertest';
import { PackagesController } from './packages.controller';
import { createTestingModule, packagesServiceDependency } from './dependencies';
import { PackageInfo } from './storage/types';
describe('AppController', () => {
it('returns a result from packages service', async () => {
const testTrackingNumber = 'test-tracking-number';
const testPackageResponse = {
packageData: <PackageInfo>{
articleName: 'fake name',
articlePrice: 123,
articleQuantity: 456,
senderAddress: 'fake address',
SKU: 'fake sku',
status: 'delivery',
carrier: 'DHL',
trackingNumber: testTrackingNumber,
receiverAddress: 'fake recipient address',
},
receiverWeather: {
temperature: 'fake temperature',
apparentTemperature: 'fake apparent temperature',
relativeHumidity: 'fake relative humidity',
},
};
const moduleFixture: TestingModule = await createTestingModule({
controllers: [PackagesController],
providers: [
{
provide: packagesServiceDependency,
useValue: {
getPackageInfoWithWeather: (
carrier,
trackingNumber,
) => {
if (
carrier === 'DHL' &&
trackingNumber === testTrackingNumber
) {
return Promise.resolve(testPackageResponse);
}
return Promise.resolve(null);
},
},
},
],
}).compile();
const app = moduleFixture.createNestApplication();
await app.init();
try {
const appRequest = request(app.getHttpServer());
await appRequest
.get(`/packages/DHL/${testTrackingNumber}`)
.expect(200)
.expect(testPackageResponse);
await appRequest
.get(`/packages/UPS/${testTrackingNumber}`)
.expect(404);
await appRequest.get(`/packages/DHL/non-existent`).expect(404);
} finally {
await app.close();
}
});
});