review-copilot
Version:
ReviewCopilot - AI-powered code review assistant with customizable prompts
78 lines (77 loc) • 3.25 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const review_1 = require("../review");
const review_utils_1 = require("./review.utils");
const ora_1 = __importDefault(require("ora"));
// Mock other dependencies
jest.mock('../../../config/config-manager');
jest.mock('../../../utils/vcs-factory');
jest.mock('../../../providers/provider-factory');
jest.mock('../../../providers/openai-provider');
jest.mock('../../../services/git-platform-factory');
describe('reviewCommand - edge cases', () => {
const mockSpinner = ora_1.default.mockSpinnerInstance;
beforeEach(() => {
jest.clearAllMocks();
// Reset spinner mock state
Object.values(mockSpinner).forEach((mock) => {
if (typeof mock === 'function' && 'mockClear' in mock) {
mock.mockClear();
}
});
});
afterEach(async () => {
mockSpinner._cleanup();
jest.clearAllTimers();
jest.resetModules();
(0, review_utils_1.cleanupMocks)();
});
afterAll(() => {
jest.restoreAllMocks();
});
it('should handle empty file patterns', async () => {
const configWithEmptyPatterns = {
...review_utils_1.mockConfig,
rules: {
...review_utils_1.mockConfig.rules,
codeChanges: {
enabled: true,
filePatterns: [],
prompt: 'Review this code',
},
},
};
const { mockProvider } = (0, review_utils_1.setupMocks)(configWithEmptyPatterns);
const result = await (0, review_1.reviewCommand)({ config: 'test-config.yaml' });
expect(result).toBe(true);
expect(mockProvider.review).toHaveBeenCalled();
expect(mockSpinner.start).toHaveBeenCalled();
expect(mockSpinner.succeed).toHaveBeenCalled();
expect(mockSpinner.stop).toHaveBeenCalled();
});
it('should handle commits with no files', async () => {
const noFilesCommit = { ...review_utils_1.mockCommit, files: [] };
const { mockProvider } = (0, review_utils_1.setupMocks)(review_utils_1.mockConfig, [noFilesCommit]);
const result = await (0, review_1.reviewCommand)({ config: 'test-config.yaml' });
expect(result).toBe(true);
expect(mockProvider.review).toHaveBeenCalledTimes(1);
expect(mockSpinner.start).toHaveBeenCalled();
expect(mockSpinner.succeed).toHaveBeenCalled();
expect(mockSpinner.stop).toHaveBeenCalled();
});
it('should handle baseBranch parameter', async () => {
const { mockVcsProvider } = (0, review_utils_1.setupMocks)();
const result = await (0, review_1.reviewCommand)({
config: 'test-config.yaml',
baseBranch: 'develop',
});
expect(result).toBe(true);
expect(mockVcsProvider.getPullRequestFiles).toHaveBeenCalled();
expect(mockSpinner.start).toHaveBeenCalled();
expect(mockSpinner.succeed).toHaveBeenCalled();
expect(mockSpinner.stop).toHaveBeenCalled();
});
});