mirror of
https://github.com/LukeHagar/prettier-plugin-openapi.git
synced 2025-12-06 04:21:03 +00:00
106 lines
3.2 KiB
TypeScript
106 lines
3.2 KiB
TypeScript
import { describe, it, expect } from 'bun:test';
|
|
import plugin from '../src/index';
|
|
|
|
describe('Plugin Options', () => {
|
|
it('should use custom tabWidth for JSON formatting', () => {
|
|
const testData = {
|
|
openapi: '3.0.0',
|
|
info: {
|
|
title: 'Test',
|
|
version: '1.0.0'
|
|
},
|
|
paths: {}
|
|
};
|
|
|
|
const printer = plugin.printers?.['openapi-ast'];
|
|
expect(printer).toBeDefined();
|
|
|
|
const result = printer?.print({ getValue: () => ({ type: 'openapi', content: testData, originalText: '', format: 'json' }) }, { tabWidth: 4 }, () => '');
|
|
expect(result).toBeDefined();
|
|
|
|
if (!result) {
|
|
throw new Error('Result is undefined');
|
|
}
|
|
|
|
// Check that 4-space indentation is used
|
|
expect(result).toContain(' "openapi"');
|
|
expect(result).toContain(' "info"');
|
|
expect(result).toContain(' "title"');
|
|
expect(result).toContain(' "version"');
|
|
});
|
|
|
|
it('should use custom tabWidth for YAML formatting', () => {
|
|
const testData = {
|
|
openapi: '3.0.0',
|
|
info: {
|
|
title: 'Test',
|
|
version: '1.0.0'
|
|
},
|
|
paths: {}
|
|
};
|
|
|
|
const printer = plugin.printers?.['openapi-ast'];
|
|
expect(printer).toBeDefined();
|
|
|
|
const result = printer?.print({ getValue: () => ({ type: 'openapi', content: testData, originalText: '', format: 'yaml' }) }, { tabWidth: 4 }, () => '');
|
|
expect(result).toBeDefined();
|
|
|
|
if (!result) {
|
|
throw new Error('Result is undefined');
|
|
}
|
|
|
|
// Check that 4-space indentation is used
|
|
expect(result).toContain(' title: Test');
|
|
expect(result).toContain(' version: 1.0.0');
|
|
});
|
|
|
|
it('should use default tabWidth when not specified', () => {
|
|
const testData = {
|
|
openapi: '3.0.0',
|
|
info: {
|
|
title: 'Test',
|
|
version: '1.0.0'
|
|
},
|
|
paths: {}
|
|
};
|
|
|
|
const printer = plugin.printers?.['openapi-ast'];
|
|
expect(printer).toBeDefined();
|
|
|
|
const result = printer?.print({ getValue: () => ({ type: 'openapi', content: testData, originalText: '', format: 'json' }) }, {}, () => '');
|
|
expect(result).toBeDefined();
|
|
|
|
if (!result) {
|
|
throw new Error('Result is undefined');
|
|
}
|
|
|
|
// Check that 2-space indentation is used (default)
|
|
expect(result).toContain(' "openapi"');
|
|
expect(result).toContain(' "info"');
|
|
expect(result).toContain(' "title"');
|
|
expect(result).toContain(' "version"');
|
|
});
|
|
|
|
it('should use custom printWidth for YAML formatting', () => {
|
|
const testData = {
|
|
openapi: '3.0.0',
|
|
info: {
|
|
title: 'This is a very long title that should be wrapped according to printWidth',
|
|
version: '1.0.0'
|
|
},
|
|
paths: {}
|
|
};
|
|
|
|
const printer = plugin.printers?.['openapi-ast'];
|
|
expect(printer).toBeDefined();
|
|
|
|
const result = printer?.print({ getValue: () => ({ type: 'openapi', content: testData, originalText: '', format: 'yaml' }) }, { printWidth: 20 }, () => '');
|
|
expect(result).toBeDefined();
|
|
|
|
// The YAML should be formatted with the custom line width
|
|
expect(result).toBeDefined();
|
|
// Note: js-yaml doesn't always respect lineWidth for all content types,
|
|
// but we can verify the option is passed through
|
|
});
|
|
});
|