mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 18:10:18 +05:30
- Bump version to 4.4.1 - DOMPurify now initialized with window context (fixes markdown rendering) - Add 'it' to eslint globals Amit Haridas
124 lines
3.1 KiB
JavaScript
124 lines
3.1 KiB
JavaScript
/**
|
|
* Git Operations Utilities Test Suite
|
|
* Tests for async patterns and error handling
|
|
* @version 4.3.0
|
|
*/
|
|
|
|
describe('GitOperations Utilities', () => {
|
|
describe('error handling patterns', () => {
|
|
it('should handle git errors gracefully', () => {
|
|
const errorResponse = { error: 'Not a git repository' };
|
|
|
|
expect(errorResponse).toHaveProperty('error');
|
|
expect(errorResponse.error).toContain('repository');
|
|
});
|
|
|
|
it('should return error object on failure', () => {
|
|
const failureResult = { error: 'Failed to commit' };
|
|
|
|
expect(failureResult).toBeDefined();
|
|
expect(failureResult.error).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe('async patterns', () => {
|
|
it('should handle async operations', async () => {
|
|
const asyncFn = async () => {
|
|
return { status: 'success' };
|
|
};
|
|
|
|
const result = await asyncFn();
|
|
expect(result).toHaveProperty('status');
|
|
});
|
|
|
|
it('should handle async errors', async () => {
|
|
const asyncFnWithError = async () => {
|
|
throw new Error('Git operation failed');
|
|
};
|
|
|
|
try {
|
|
await asyncFnWithError();
|
|
expect(true).toBe(false); // Should not reach here
|
|
} catch (err) {
|
|
expect(err.message).toContain('Git');
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('git operations', () => {
|
|
it('should document expected operations', () => {
|
|
const gitOps = [
|
|
'getStatus',
|
|
'stage',
|
|
'commit',
|
|
'log',
|
|
'diff',
|
|
'branch',
|
|
'checkout',
|
|
'push',
|
|
'pull'
|
|
];
|
|
|
|
expect(gitOps.length).toBeGreaterThan(0);
|
|
gitOps.forEach(op => {
|
|
expect(typeof op).toBe('string');
|
|
expect(op.length).toBeGreaterThan(0);
|
|
});
|
|
});
|
|
|
|
it('should handle directory paths', () => {
|
|
const paths = [
|
|
'/home/user/project',
|
|
'./current/dir',
|
|
'../parent/dir'
|
|
];
|
|
|
|
paths.forEach(pathStr => {
|
|
expect(typeof pathStr).toBe('string');
|
|
expect(pathStr.length).toBeGreaterThan(0);
|
|
});
|
|
});
|
|
|
|
it('should handle commit messages', () => {
|
|
const messages = [
|
|
'fix: bug in git panel',
|
|
'feat: add new feature',
|
|
'refactor: clean up code'
|
|
];
|
|
|
|
messages.forEach(msg => {
|
|
expect(typeof msg).toBe('string');
|
|
expect(msg.length).toBeGreaterThan(0);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('response structures', () => {
|
|
it('should return status info', () => {
|
|
const statusResponse = {
|
|
conflicted: [],
|
|
created: [],
|
|
deleted: [],
|
|
modified: [],
|
|
renamed: [],
|
|
staged: ['file.md']
|
|
};
|
|
|
|
expect(statusResponse).toHaveProperty('staged');
|
|
expect(Array.isArray(statusResponse.staged)).toBe(true);
|
|
});
|
|
|
|
it('should return log entries', () => {
|
|
const logResponse = {
|
|
all: [
|
|
{ hash: 'abc123', message: 'fix: something' }
|
|
],
|
|
latest: { hash: 'abc123', message: 'fix: something' }
|
|
};
|
|
|
|
expect(logResponse).toHaveProperty('all');
|
|
expect(Array.isArray(logResponse.all)).toBe(true);
|
|
});
|
|
});
|
|
});
|