google-docs-mcp / src /tools /docs /updateSectionStyle.test.ts
iFightDucks's picture
Initial HF Space deploy: a-bonus/google-docs-mcp with HF metadata
7dc28be
import { describe, it, expect } from 'vitest';
import { buildUpdateSectionStyleRequest } from './updateSectionStyle.js';
describe('buildUpdateSectionStyleRequest', () => {
it('returns null when no style options are provided', () => {
const result = buildUpdateSectionStyleRequest({ startIndex: 1, endIndex: 10 });
expect(result).toBeNull();
});
it('builds a flipPageOrientation request with a matching fields mask', () => {
const result = buildUpdateSectionStyleRequest({
startIndex: 10,
endIndex: 42,
flipPageOrientation: true,
});
expect(result).not.toBeNull();
expect(result!.fields).toEqual(['flipPageOrientation']);
const req = result!.request.updateSectionStyle!;
expect(req.range!.startIndex).toBe(10);
expect(req.range!.endIndex).toBe(42);
expect(req.sectionStyle!.flipPageOrientation).toBe(true);
expect(req.fields).toBe('flipPageOrientation');
});
it('converts margin numbers to PT dimensions', () => {
const result = buildUpdateSectionStyleRequest({
startIndex: 1,
endIndex: 5,
marginTop: 36,
marginLeft: 72,
});
expect(result).not.toBeNull();
const style = result!.request.updateSectionStyle!.sectionStyle!;
expect(style.marginTop).toEqual({ magnitude: 36, unit: 'PT' });
expect(style.marginLeft).toEqual({ magnitude: 72, unit: 'PT' });
expect(result!.fields).toContain('marginTop');
expect(result!.fields).toContain('marginLeft');
expect(result!.request.updateSectionStyle!.fields).toBe('marginTop,marginLeft');
});
it('combines multiple updates into a single fields mask', () => {
const result = buildUpdateSectionStyleRequest({
startIndex: 1,
endIndex: 5,
flipPageOrientation: false,
sectionType: 'CONTINUOUS',
pageNumberStart: 1,
});
expect(result).not.toBeNull();
expect(result!.fields).toEqual(['flipPageOrientation', 'sectionType', 'pageNumberStart']);
expect(result!.request.updateSectionStyle!.fields).toBe(
'flipPageOrientation,sectionType,pageNumberStart'
);
});
it('attaches tabId to the range when provided', () => {
const result = buildUpdateSectionStyleRequest({
startIndex: 1,
endIndex: 5,
flipPageOrientation: true,
tabId: 'tab-abc',
});
expect((result!.request.updateSectionStyle!.range as any).tabId).toBe('tab-abc');
});
});