summaryrefslogtreecommitdiff
path: root/packages/cli/src/services/prompt-processors/argumentProcessor.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/services/prompt-processors/argumentProcessor.test.ts')
-rw-r--r--packages/cli/src/services/prompt-processors/argumentProcessor.test.ts99
1 files changed, 99 insertions, 0 deletions
diff --git a/packages/cli/src/services/prompt-processors/argumentProcessor.test.ts b/packages/cli/src/services/prompt-processors/argumentProcessor.test.ts
new file mode 100644
index 00000000..6af578a9
--- /dev/null
+++ b/packages/cli/src/services/prompt-processors/argumentProcessor.test.ts
@@ -0,0 +1,99 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import {
+ DefaultArgumentProcessor,
+ ShorthandArgumentProcessor,
+} from './argumentProcessor.js';
+import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
+
+describe('Argument Processors', () => {
+ describe('ShorthandArgumentProcessor', () => {
+ const processor = new ShorthandArgumentProcessor();
+
+ it('should replace a single {{args}} instance', async () => {
+ const prompt = 'Refactor the following code: {{args}}';
+ const context = createMockCommandContext({
+ invocation: {
+ raw: '/refactor make it faster',
+ name: 'refactor',
+ args: 'make it faster',
+ },
+ });
+ const result = await processor.process(prompt, context);
+ expect(result).toBe('Refactor the following code: make it faster');
+ });
+
+ it('should replace multiple {{args}} instances', async () => {
+ const prompt = 'User said: {{args}}. I repeat: {{args}}!';
+ const context = createMockCommandContext({
+ invocation: {
+ raw: '/repeat hello world',
+ name: 'repeat',
+ args: 'hello world',
+ },
+ });
+ const result = await processor.process(prompt, context);
+ expect(result).toBe('User said: hello world. I repeat: hello world!');
+ });
+
+ it('should handle an empty args string', async () => {
+ const prompt = 'The user provided no input: {{args}}.';
+ const context = createMockCommandContext({
+ invocation: {
+ raw: '/input',
+ name: 'input',
+ args: '',
+ },
+ });
+ const result = await processor.process(prompt, context);
+ expect(result).toBe('The user provided no input: .');
+ });
+
+ it('should not change the prompt if {{args}} is not present', async () => {
+ const prompt = 'This is a static prompt.';
+ const context = createMockCommandContext({
+ invocation: {
+ raw: '/static some arguments',
+ name: 'static',
+ args: 'some arguments',
+ },
+ });
+ const result = await processor.process(prompt, context);
+ expect(result).toBe('This is a static prompt.');
+ });
+ });
+
+ describe('DefaultArgumentProcessor', () => {
+ const processor = new DefaultArgumentProcessor();
+
+ it('should append the full command if args are provided', async () => {
+ const prompt = 'Parse the command.';
+ const context = createMockCommandContext({
+ invocation: {
+ raw: '/mycommand arg1 "arg two"',
+ name: 'mycommand',
+ args: 'arg1 "arg two"',
+ },
+ });
+ const result = await processor.process(prompt, context);
+ expect(result).toBe('Parse the command.\n\n/mycommand arg1 "arg two"');
+ });
+
+ it('should NOT append the full command if no args are provided', async () => {
+ const prompt = 'Parse the command.';
+ const context = createMockCommandContext({
+ invocation: {
+ raw: '/mycommand',
+ name: 'mycommand',
+ args: '',
+ },
+ });
+ const result = await processor.process(prompt, context);
+ expect(result).toBe('Parse the command.');
+ });
+ });
+});