blob: 23173fff22c077875edb15d7b05ea96cf7c202b8 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Host from '../../core/host/host.js';
import {
describeWithEnvironment,
updateHostConfig,
} from '../../testing/EnvironmentHelpers.js';
import * as AiCodeGeneration from './ai_code_generation.js';
describeWithEnvironment('AiCodeGeneration', () => {
beforeEach(() => {
updateHostConfig({
devToolsAiCodeGeneration: {
enabled: true,
temperature: 0.5,
modelId: 'test-model',
userTier: 'BETA',
},
});
});
it('builds a request and calls the AIDA client', async () => {
const mockAidaClient = sinon.createStubInstance(Host.AidaClient.AidaClient, {
generateCode: Promise.resolve(null),
});
const aiCodeGeneration = new AiCodeGeneration.AiCodeGeneration.AiCodeGeneration(
{aidaClient: mockAidaClient},
);
await aiCodeGeneration.generateCode('prompt', 'preamble');
sinon.assert.calledOnce(mockAidaClient.generateCode);
const request = mockAidaClient.generateCode.firstCall.args[0];
assert.strictEqual(request.client, 'CHROME_DEVTOOLS');
assert.strictEqual(request.preamble, 'preamble');
assert.deepEqual(request.current_message, {
parts: [{
text: 'preambleprompt\n**Target Language:** JAVASCRIPT',
}],
role: Host.AidaClient.Role.USER,
});
assert.strictEqual(request.use_case, Host.AidaClient.UseCase.CODE_GENERATION);
assert.deepEqual(request.options, {
temperature: 0.5,
model_id: 'test-model',
});
assert.isTrue(request.metadata.disable_user_content_logging);
assert.strictEqual(request.metadata.user_tier, Host.AidaClient.UserTier.BETA);
});
it('returns the response from the AIDA client', async () => {
const mockAidaClient = sinon.createStubInstance(Host.AidaClient.AidaClient, {
generateCode: Promise.resolve({
samples: [{
generationString: 'suggestion',
sampleId: 1,
score: 1,
}],
metadata: {rpcGlobalId: 1},
}),
});
const aiCodeGeneration = new AiCodeGeneration.AiCodeGeneration.AiCodeGeneration(
{aidaClient: mockAidaClient},
);
const response = await aiCodeGeneration.generateCode('prompt', 'preamble');
assert.deepEqual(response, {
samples: [{
generationString: 'suggestion',
sampleId: 1,
score: 1,
}],
metadata: {rpcGlobalId: 1},
});
});
});