Rebuild.
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const gemini_1 = require("../../src/engine/gemini");
|
||||
const generative_ai_1 = require("@google/generative-ai");
|
||||
const config_1 = require("../../src/commands/config");
|
||||
describe('Gemini', () => {
|
||||
let gemini;
|
||||
let mockConfig;
|
||||
let mockGoogleGenerativeAi;
|
||||
let mockGenerativeModel;
|
||||
let mockExit;
|
||||
const noop = (...args) => { };
|
||||
const mockGemini = () => {
|
||||
mockConfig = (0, config_1.getConfig)();
|
||||
gemini = new gemini_1.GeminiEngine({
|
||||
apiKey: mockConfig.OCO_API_KEY,
|
||||
model: mockConfig.OCO_MODEL
|
||||
});
|
||||
};
|
||||
const oldEnv = process.env;
|
||||
beforeEach(() => {
|
||||
jest.resetModules();
|
||||
process.env = { ...oldEnv };
|
||||
jest.mock('@google/generative-ai');
|
||||
jest.mock('../src/commands/config');
|
||||
jest.mock('@clack/prompts', () => ({
|
||||
intro: jest.fn(),
|
||||
outro: jest.fn()
|
||||
}));
|
||||
mockExit = jest.spyOn(process, 'exit').mockImplementation();
|
||||
mockConfig = (0, config_1.getConfig)();
|
||||
mockConfig.OCO_AI_PROVIDER = config_1.OCO_AI_PROVIDER_ENUM.GEMINI;
|
||||
mockConfig.OCO_API_KEY = 'mock-api-key';
|
||||
mockConfig.OCO_MODEL = 'gemini-1.5-flash';
|
||||
mockGoogleGenerativeAi = new generative_ai_1.GoogleGenerativeAI(mockConfig.OCO_API_KEY);
|
||||
mockGenerativeModel = mockGoogleGenerativeAi.getGenerativeModel({
|
||||
model: mockConfig.OCO_MODEL
|
||||
});
|
||||
});
|
||||
afterEach(() => {
|
||||
gemini = undefined;
|
||||
});
|
||||
afterAll(() => {
|
||||
mockExit.mockRestore();
|
||||
process.env = oldEnv;
|
||||
});
|
||||
it.skip('should exit process if OCO_GEMINI_API_KEY is not set and command is not config', () => {
|
||||
process.env.OCO_GEMINI_API_KEY = undefined;
|
||||
process.env.OCO_AI_PROVIDER = 'gemini';
|
||||
mockGemini();
|
||||
expect(mockExit).toHaveBeenCalledWith(1);
|
||||
});
|
||||
it('should generate commit message', async () => {
|
||||
const mockGenerateContent = jest
|
||||
.fn()
|
||||
.mockResolvedValue({ response: { text: () => 'generated content' } });
|
||||
mockGenerativeModel.generateContent = mockGenerateContent;
|
||||
mockGemini();
|
||||
const messages = [
|
||||
{ role: 'system', content: 'system message' },
|
||||
{ role: 'assistant', content: 'assistant message' }
|
||||
];
|
||||
jest
|
||||
.spyOn(gemini, 'generateCommitMessage')
|
||||
.mockImplementation(async () => 'generated content');
|
||||
const result = await gemini.generateCommitMessage(messages);
|
||||
expect(result).toEqual('generated content');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user