Skip to content
This repository was archived by the owner on Jul 20, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/v1/fleet_routing_client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,7 @@ export class FleetRoutingClient {
options.otherArgs.headers = options.otherArgs.headers || {};
options.otherArgs.headers['x-goog-request-params'] =
this._gaxModule.routingHeader.fromParams({
parent: request.parent || '',
parent: request.parent ?? '',
});
this.initialize();
return this.innerApiCalls.optimizeTours(request, options, callback);
Expand Down Expand Up @@ -742,7 +742,7 @@ export class FleetRoutingClient {
options.otherArgs.headers = options.otherArgs.headers || {};
options.otherArgs.headers['x-goog-request-params'] =
this._gaxModule.routingHeader.fromParams({
parent: request.parent || '',
parent: request.parent ?? '',
});
this.initialize();
return this.innerApiCalls.batchOptimizeTours(request, options, callback);
Expand Down
209 changes: 110 additions & 99 deletions test/gapic_fleet_routing_v1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,21 @@ import * as fleetroutingModule from '../src';

import {protobuf, LROperation, operationsProtos} from 'google-gax';

// Dynamically loaded proto JSON is needed to get the type information
// to fill in default values for request objects
const root = protobuf.Root.fromJSON(
require('../protos/protos.json')
).resolveAll();

// eslint-disable-next-line @typescript-eslint/no-unused-vars
function getTypeDefaultValue(typeName: string, fields: string[]) {
let type = root.lookupType(typeName) as protobuf.Type;
for (const field of fields.slice(0, -1)) {
type = type.fields[field]?.resolvedType as protobuf.Type;
}
return type.fields[fields[fields.length - 1]]?.defaultValue;
}

function generateSampleMessage<T extends object>(instance: T) {
const filledObject = (
instance.constructor as typeof protobuf.Message
Expand Down Expand Up @@ -189,26 +204,25 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.OptimizeToursRequest()
);
request.parent = '';
const expectedHeaderRequestParams = 'parent=';
const expectedOptions = {
otherArgs: {
headers: {
'x-goog-request-params': expectedHeaderRequestParams,
},
},
};
const defaultValue1 = getTypeDefaultValue('OptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedHeaderRequestParams = `parent=${defaultValue1}`;
const expectedResponse = generateSampleMessage(
new protos.google.cloud.optimization.v1.OptimizeToursResponse()
);
client.innerApiCalls.optimizeTours = stubSimpleCall(expectedResponse);
const [response] = await client.optimizeTours(request);
assert.deepStrictEqual(response, expectedResponse);
assert(
(client.innerApiCalls.optimizeTours as SinonStub)
.getCall(0)
.calledWith(request, expectedOptions, undefined)
);
const actualRequest = (
client.innerApiCalls.optimizeTours as SinonStub
).getCall(0).args[0];
assert.deepStrictEqual(actualRequest, request);
const actualHeaderRequestParams = (
client.innerApiCalls.optimizeTours as SinonStub
).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
});

it('invokes optimizeTours without error using callback', async () => {
Expand All @@ -220,15 +234,11 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.OptimizeToursRequest()
);
request.parent = '';
const expectedHeaderRequestParams = 'parent=';
const expectedOptions = {
otherArgs: {
headers: {
'x-goog-request-params': expectedHeaderRequestParams,
},
},
};
const defaultValue1 = getTypeDefaultValue('OptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedHeaderRequestParams = `parent=${defaultValue1}`;
const expectedResponse = generateSampleMessage(
new protos.google.cloud.optimization.v1.OptimizeToursResponse()
);
Expand All @@ -251,11 +261,14 @@ describe('v1.FleetRoutingClient', () => {
});
const response = await promise;
assert.deepStrictEqual(response, expectedResponse);
assert(
(client.innerApiCalls.optimizeTours as SinonStub)
.getCall(0)
.calledWith(request, expectedOptions /*, callback defined above */)
);
const actualRequest = (
client.innerApiCalls.optimizeTours as SinonStub
).getCall(0).args[0];
assert.deepStrictEqual(actualRequest, request);
const actualHeaderRequestParams = (
client.innerApiCalls.optimizeTours as SinonStub
).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
});

it('invokes optimizeTours with error', async () => {
Expand All @@ -267,26 +280,25 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.OptimizeToursRequest()
);
request.parent = '';
const expectedHeaderRequestParams = 'parent=';
const expectedOptions = {
otherArgs: {
headers: {
'x-goog-request-params': expectedHeaderRequestParams,
},
},
};
const defaultValue1 = getTypeDefaultValue('OptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedHeaderRequestParams = `parent=${defaultValue1}`;
const expectedError = new Error('expected');
client.innerApiCalls.optimizeTours = stubSimpleCall(
undefined,
expectedError
);
await assert.rejects(client.optimizeTours(request), expectedError);
assert(
(client.innerApiCalls.optimizeTours as SinonStub)
.getCall(0)
.calledWith(request, expectedOptions, undefined)
);
const actualRequest = (
client.innerApiCalls.optimizeTours as SinonStub
).getCall(0).args[0];
assert.deepStrictEqual(actualRequest, request);
const actualHeaderRequestParams = (
client.innerApiCalls.optimizeTours as SinonStub
).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
});

it('invokes optimizeTours with closed client', async () => {
Expand All @@ -298,7 +310,10 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.OptimizeToursRequest()
);
request.parent = '';
const defaultValue1 = getTypeDefaultValue('OptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedError = new Error('The client has already been closed.');
client.close();
await assert.rejects(client.optimizeTours(request), expectedError);
Expand All @@ -315,15 +330,11 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.BatchOptimizeToursRequest()
);
request.parent = '';
const expectedHeaderRequestParams = 'parent=';
const expectedOptions = {
otherArgs: {
headers: {
'x-goog-request-params': expectedHeaderRequestParams,
},
},
};
const defaultValue1 = getTypeDefaultValue('BatchOptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedHeaderRequestParams = `parent=${defaultValue1}`;
const expectedResponse = generateSampleMessage(
new protos.google.longrunning.Operation()
);
Expand All @@ -332,11 +343,14 @@ describe('v1.FleetRoutingClient', () => {
const [operation] = await client.batchOptimizeTours(request);
const [response] = await operation.promise();
assert.deepStrictEqual(response, expectedResponse);
assert(
(client.innerApiCalls.batchOptimizeTours as SinonStub)
.getCall(0)
.calledWith(request, expectedOptions, undefined)
);
const actualRequest = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[0];
assert.deepStrictEqual(actualRequest, request);
const actualHeaderRequestParams = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
});

it('invokes batchOptimizeTours without error using callback', async () => {
Expand All @@ -348,15 +362,11 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.BatchOptimizeToursRequest()
);
request.parent = '';
const expectedHeaderRequestParams = 'parent=';
const expectedOptions = {
otherArgs: {
headers: {
'x-goog-request-params': expectedHeaderRequestParams,
},
},
};
const defaultValue1 = getTypeDefaultValue('BatchOptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedHeaderRequestParams = `parent=${defaultValue1}`;
const expectedResponse = generateSampleMessage(
new protos.google.longrunning.Operation()
);
Expand Down Expand Up @@ -386,11 +396,14 @@ describe('v1.FleetRoutingClient', () => {
>;
const [response] = await operation.promise();
assert.deepStrictEqual(response, expectedResponse);
assert(
(client.innerApiCalls.batchOptimizeTours as SinonStub)
.getCall(0)
.calledWith(request, expectedOptions /*, callback defined above */)
);
const actualRequest = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[0];
assert.deepStrictEqual(actualRequest, request);
const actualHeaderRequestParams = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
});

it('invokes batchOptimizeTours with call error', async () => {
Expand All @@ -402,26 +415,25 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.BatchOptimizeToursRequest()
);
request.parent = '';
const expectedHeaderRequestParams = 'parent=';
const expectedOptions = {
otherArgs: {
headers: {
'x-goog-request-params': expectedHeaderRequestParams,
},
},
};
const defaultValue1 = getTypeDefaultValue('BatchOptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedHeaderRequestParams = `parent=${defaultValue1}`;
const expectedError = new Error('expected');
client.innerApiCalls.batchOptimizeTours = stubLongRunningCall(
undefined,
expectedError
);
await assert.rejects(client.batchOptimizeTours(request), expectedError);
assert(
(client.innerApiCalls.batchOptimizeTours as SinonStub)
.getCall(0)
.calledWith(request, expectedOptions, undefined)
);
const actualRequest = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[0];
assert.deepStrictEqual(actualRequest, request);
const actualHeaderRequestParams = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
});

it('invokes batchOptimizeTours with LRO error', async () => {
Expand All @@ -433,15 +445,11 @@ describe('v1.FleetRoutingClient', () => {
const request = generateSampleMessage(
new protos.google.cloud.optimization.v1.BatchOptimizeToursRequest()
);
request.parent = '';
const expectedHeaderRequestParams = 'parent=';
const expectedOptions = {
otherArgs: {
headers: {
'x-goog-request-params': expectedHeaderRequestParams,
},
},
};
const defaultValue1 = getTypeDefaultValue('BatchOptimizeToursRequest', [
'parent',
]);
request.parent = defaultValue1;
const expectedHeaderRequestParams = `parent=${defaultValue1}`;
const expectedError = new Error('expected');
client.innerApiCalls.batchOptimizeTours = stubLongRunningCall(
undefined,
Expand All @@ -450,11 +458,14 @@ describe('v1.FleetRoutingClient', () => {
);
const [operation] = await client.batchOptimizeTours(request);
await assert.rejects(operation.promise(), expectedError);
assert(
(client.innerApiCalls.batchOptimizeTours as SinonStub)
.getCall(0)
.calledWith(request, expectedOptions, undefined)
);
const actualRequest = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[0];
assert.deepStrictEqual(actualRequest, request);
const actualHeaderRequestParams = (
client.innerApiCalls.batchOptimizeTours as SinonStub
).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
});

it('invokes checkBatchOptimizeToursProgress without error', async () => {
Expand Down