Files
automatisch/packages/backend/src/models/app-config.test.js
2024-12-18 17:42:04 +01:00

57 lines
1.5 KiB
JavaScript

import { describe, it, expect } from 'vitest';
import Base from './base.js';
import AppConfig from './app-config.js';
import App from './app.js';
import OAuthClient from './oauth-client.js';
describe('AppConfig model', () => {
it('tableName should return correct name', () => {
expect(AppConfig.tableName).toBe('app_configs');
});
it('idColumn should return key field', () => {
expect(AppConfig.idColumn).toBe('key');
});
it('jsonSchema should have correct validations', () => {
expect(AppConfig.jsonSchema).toMatchSnapshot();
});
it('relationMappings should return correct associations', () => {
const relationMappings = AppConfig.relationMappings();
const expectedRelations = {
oauthClients: {
relation: Base.HasManyRelation,
modelClass: OAuthClient,
join: {
from: 'app_configs.key',
to: 'oauth_clients.app_key',
},
},
};
expect(relationMappings).toStrictEqual(expectedRelations);
});
describe('getApp', () => {
it('getApp should return null if there is no key', async () => {
const appConfig = new AppConfig();
const app = await appConfig.getApp();
expect(app).toBeNull();
});
it('getApp should return app with provided key', async () => {
const appConfig = new AppConfig();
appConfig.key = 'deepl';
const app = await appConfig.getApp();
const expectedApp = await App.findOneByKey(appConfig.key);
expect(app).toStrictEqual(expectedApp);
});
});
});