45 lines
1.5 KiB
TypeScript
45 lines
1.5 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
const root = process.cwd();
|
|
const read = (f: string) => fs.readFileSync(path.join(root, f), 'utf-8');
|
|
|
|
function getGmailMode(): 'tool-only' | 'channel' {
|
|
const p = path.join(root, '.nanoclaw/state.yaml');
|
|
if (!fs.existsSync(p)) return 'channel';
|
|
return read('.nanoclaw/state.yaml').includes('mode: tool-only') ? 'tool-only' : 'channel';
|
|
}
|
|
|
|
const mode = getGmailMode();
|
|
const channelOnly = mode === 'tool-only';
|
|
|
|
describe('add-gmail skill', () => {
|
|
it('container-runner mounts ~/.gmail-mcp', () => {
|
|
expect(read('src/container-runner.ts')).toContain('.gmail-mcp');
|
|
});
|
|
|
|
it('agent-runner has gmail MCP server', () => {
|
|
const content = read('container/agent-runner/src/index.ts');
|
|
expect(content).toContain('mcp__gmail__*');
|
|
expect(content).toContain('@gongrzhe/server-gmail-autoauth-mcp');
|
|
});
|
|
|
|
it.skipIf(channelOnly)('gmail channel file exists', () => {
|
|
expect(fs.existsSync(path.join(root, 'src/channels/gmail.ts'))).toBe(true);
|
|
});
|
|
|
|
it.skipIf(channelOnly)('config exports GMAIL_CHANNEL_ENABLED', () => {
|
|
expect(read('src/config.ts')).toContain('GMAIL_CHANNEL_ENABLED');
|
|
});
|
|
|
|
it.skipIf(channelOnly)('index.ts wires up GmailChannel', () => {
|
|
expect(read('src/index.ts')).toContain('GmailChannel');
|
|
});
|
|
|
|
it.skipIf(channelOnly)('googleapis dependency installed', () => {
|
|
const pkg = JSON.parse(read('package.json'));
|
|
expect(pkg.dependencies?.googleapis || pkg.devDependencies?.googleapis).toBeDefined();
|
|
});
|
|
});
|