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.
69 lines
2.5 KiB
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();
|
|
}
|
|
});
|
|
});
|
|
|