fix: Google Docs add default drive id when searching folders (#33765)

This commit is contained in:
Dimitri Lavrenük 2026-07-08 10:38:24 +02:00 committed by GitHub
parent ba624172d7
commit 0010cf673b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 60 additions and 1 deletions

View File

@ -165,7 +165,7 @@ export class GoogleDocs implements INodeType {
value: 'default',
},
];
const driveId = this.getNodeParameter('driveId');
const driveId = this.getNodeParameter('driveId', 'myDrive');
const qs = {
q: `mimeType = \'application/vnd.google-apps.folder\' ${

View File

@ -0,0 +1,59 @@
import type { IDataObject, ILoadOptionsFunctions } from 'n8n-workflow';
import type { Mock } from 'vitest';
import { googleApiRequestAllItems } from '../GenericFunctions';
import { GoogleDocs } from '../GoogleDocs.node';
vi.mock('../GenericFunctions', () => ({
googleApiRequestAllItems: vi.fn(),
}));
const node = new GoogleDocs();
let nodeParameters: Record<string, unknown>;
const mockThis = {
getNode: () => ({ name: 'Google Docs', parameters: {} }),
getNodeParameter: vi.fn((name: string, ...rest: unknown[]) => {
if (nodeParameters[name] !== undefined) return nodeParameters[name];
if (rest.length === 0) {
throw new Error(`Could not get parameter "${name}"`);
}
return rest[0];
}),
} as unknown as ILoadOptionsFunctions;
const getRequestedQuery = () => (googleApiRequestAllItems as Mock).mock.calls[0][4] as IDataObject;
describe('GoogleDocs Node - loadOptions', () => {
beforeEach(() => {
vi.clearAllMocks();
nodeParameters = {};
});
describe('getFolders', () => {
it('should use myDrive when driveId is absent from node parameters', async () => {
(googleApiRequestAllItems as Mock).mockResolvedValue([{ name: 'Reports', id: 'folder-1' }]);
const result = await node.methods.loadOptions.getFolders.call(mockThis);
expect(mockThis.getNodeParameter).toHaveBeenCalledWith('driveId', 'myDrive');
expect(result).toEqual([
{ name: '/', value: 'default' },
{ name: 'Reports', value: 'folder-1' },
]);
const qs = getRequestedQuery();
expect(qs.q).toContain("'root' in parents");
expect(qs.driveId).toBeUndefined();
});
it('should query the selected shared drive', async () => {
nodeParameters = { driveId: 'drive-123' };
(googleApiRequestAllItems as Mock).mockResolvedValue([]);
await node.methods.loadOptions.getFolders.call(mockThis);
expect(getRequestedQuery().driveId).toBe('drive-123');
});
});
});