UNPKG

@nestbox-ai/cli

Version:

The cli tools that helps developers to build agents

136 lines (101 loc) 5.38 kB
import { describe, it, expect, vi, beforeEach } from 'vitest'; import { Command } from 'commander'; import { registerComputeProgram } from '../src/commands/compute'; describe('Compute Commands', () => { let program: Command; beforeEach(() => { program = new Command(); vi.clearAllMocks(); }); describe('registerComputeProgram', () => { it('should register compute command group', () => { registerComputeProgram(program); const commands = program.commands; const computeCommand = commands.find(cmd => cmd.name() === 'compute'); expect(computeCommand).toBeDefined(); expect(computeCommand?.description()).toBe('Manage Nestbox computes'); }); it('should register compute list subcommand', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const subCommands = computeCommand?.commands || []; const listCommand = subCommands.find(cmd => cmd.name() === 'list'); expect(listCommand).toBeDefined(); expect(listCommand?.description()).toBe('List all compute instances'); // Check options const options = listCommand?.options || []; const projectOption = options.find(opt => opt.long === '--project'); expect(projectOption).toBeDefined(); expect(projectOption?.description).toBe('Project ID or name (defaults to the current project)'); }); it('should register compute create subcommand', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const subCommands = computeCommand?.commands || []; const createCommand = subCommands.find(cmd => cmd.name() === 'create'); expect(createCommand).toBeDefined(); expect(createCommand?.description()).toBe('Create a new compute instance'); // Check options const options = createCommand?.options || []; const projectOption = options.find(opt => opt.long === '--project'); const imageOption = options.find(opt => opt.long === '--image'); expect(projectOption).toBeDefined(); expect(imageOption).toBeDefined(); }); it('should register compute delete subcommand', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const subCommands = computeCommand?.commands || []; const deleteCommand = subCommands.find(cmd => cmd.name() === 'delete'); expect(deleteCommand).toBeDefined(); expect(deleteCommand?.description()).toBe('Delete one or more compute instances'); // Check options const options = deleteCommand?.options || []; const projectOption = options.find(opt => opt.long === '--project'); const forceOption = options.find(opt => opt.long === '--force'); expect(projectOption).toBeDefined(); expect(forceOption).toBeDefined(); }); it('should have all expected compute subcommands', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const subCommandNames = computeCommand?.commands.map(cmd => cmd.name()) || []; expect(subCommandNames).toContain('list'); expect(subCommandNames).toContain('create'); expect(subCommandNames).toContain('delete'); expect(subCommandNames).toHaveLength(3); }); it('should have proper action functions for all subcommands', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const subCommands = computeCommand?.commands || []; subCommands.forEach(cmd => { expect(typeof cmd.action).toBe('function'); }); }); it('should register compute list command with correct structure', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const listCommand = computeCommand?.commands.find(cmd => cmd.name() === 'list'); expect(listCommand?.name()).toBe('list'); expect(listCommand?.description()).toBe('List all compute instances'); expect(typeof listCommand?.action).toBe('function'); }); it('should register compute create command with correct structure', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const createCommand = computeCommand?.commands.find(cmd => cmd.name() === 'create'); expect(createCommand?.name()).toBe('create'); expect(createCommand?.description()).toBe('Create a new compute instance'); expect(typeof createCommand?.action).toBe('function'); }); it('should register compute delete command with correct structure', () => { registerComputeProgram(program); const computeCommand = program.commands.find(cmd => cmd.name() === 'compute'); const deleteCommand = computeCommand?.commands.find(cmd => cmd.name() === 'delete'); expect(deleteCommand?.name()).toBe('delete'); expect(deleteCommand?.description()).toBe('Delete one or more compute instances'); expect(typeof deleteCommand?.action).toBe('function'); }); }); });