| const fs = require('fs'); |
| const { validateJson, loadSpecs, ManifestDefinition } = require('./loadSpecs'); |
| const { createOpenAPIPlugin } = require('../dynamic/OpenAPIPlugin'); |
|
|
| jest.mock('../dynamic/OpenAPIPlugin'); |
|
|
| describe('ManifestDefinition', () => { |
| it('should validate correct json', () => { |
| const json = { |
| name_for_human: 'Test', |
| name_for_model: 'Test', |
| description_for_human: 'Test', |
| description_for_model: 'Test', |
| api: { |
| url: 'http://test.com', |
| }, |
| }; |
|
|
| expect(() => ManifestDefinition.parse(json)).not.toThrow(); |
| }); |
|
|
| it('should not validate incorrect json', () => { |
| const json = { |
| name_for_human: 'Test', |
| name_for_model: 'Test', |
| description_for_human: 'Test', |
| description_for_model: 'Test', |
| api: { |
| url: 123, |
| }, |
| }; |
|
|
| expect(() => ManifestDefinition.parse(json)).toThrow(); |
| }); |
| }); |
|
|
| describe('validateJson', () => { |
| it('should return parsed json if valid', () => { |
| const json = { |
| name_for_human: 'Test', |
| name_for_model: 'Test', |
| description_for_human: 'Test', |
| description_for_model: 'Test', |
| api: { |
| url: 'http://test.com', |
| }, |
| }; |
|
|
| expect(validateJson(json)).toEqual(json); |
| }); |
|
|
| it('should return false if json is not valid', () => { |
| const json = { |
| name_for_human: 'Test', |
| name_for_model: 'Test', |
| description_for_human: 'Test', |
| description_for_model: 'Test', |
| api: { |
| url: 123, |
| }, |
| }; |
|
|
| expect(validateJson(json)).toEqual(false); |
| }); |
| }); |
|
|
| describe('loadSpecs', () => { |
| beforeEach(() => { |
| jest.spyOn(fs.promises, 'readdir').mockResolvedValue(['test.json']); |
| jest.spyOn(fs.promises, 'readFile').mockResolvedValue( |
| JSON.stringify({ |
| name_for_human: 'Test', |
| name_for_model: 'Test', |
| description_for_human: 'Test', |
| description_for_model: 'Test', |
| api: { |
| url: 'http://test.com', |
| }, |
| }), |
| ); |
| createOpenAPIPlugin.mockResolvedValue({}); |
| }); |
|
|
| afterEach(() => { |
| jest.restoreAllMocks(); |
| }); |
|
|
| it('should return plugins', async () => { |
| const plugins = await loadSpecs({ llm: true, verbose: false }); |
|
|
| expect(plugins).toHaveLength(1); |
| expect(createOpenAPIPlugin).toHaveBeenCalledTimes(1); |
| }); |
|
|
| it('should return constructorMap if map is true', async () => { |
| const plugins = await loadSpecs({ llm: {}, map: true, verbose: false }); |
|
|
| expect(plugins).toHaveProperty('Test'); |
| expect(createOpenAPIPlugin).not.toHaveBeenCalled(); |
| }); |
| }); |
|
|