diff --git a/src/table.ts b/src/table.ts index f6ac9ac6..99eaf3e8 100644 --- a/src/table.ts +++ b/src/table.ts @@ -1373,13 +1373,17 @@ class Table extends common.ServiceObject { metadata.schema = Table.createSchemaFromString_(metadata.schema); } - extend(true, metadata, { - destinationTable: { - projectId: this.bigQuery.projectId, - datasetId: this.dataset.id, - tableId: this.id, + metadata = extend( + true, + { + destinationTable: { + projectId: this.bigQuery.projectId, + datasetId: this.dataset.id, + tableId: this.id, + }, }, - }); + metadata + ); let jobId = metadata.jobId || uuid.v4(); diff --git a/test/table.ts b/test/table.ts index 304a333f..d5588a54 100644 --- a/test/table.ts +++ b/test/table.ts @@ -1507,6 +1507,36 @@ describe('BigQuery/Table', () => { table.createWriteStream_({schema: SCHEMA_STRING}).emit('writing'); }); + it('should override destination table', done => { + const expectedMetadata = { + destinationTable: { + projectId: 'projectId-override', + datasetId: 'datasetId-override', + tableId: 'tableId-override', + }, + }; + makeWritableStreamOverride = ( + stream: stream.Stream, + options: MakeWritableStreamOptions + ) => { + assert.deepStrictEqual( + options.metadata.configuration?.load?.destinationTable, + expectedMetadata.destinationTable + ); + done(); + }; + + table + .createWriteStream_({ + destinationTable: { + projectId: 'projectId-override', + datasetId: 'datasetId-override', + tableId: 'tableId-override', + }, + }) + .emit('writing'); + }); + it('should return a stream', () => { assert(table.createWriteStream_() instanceof stream.Stream); });