mirror of
https://github.com/strapi/strapi.git
synced 2025-09-22 14:59:07 +00:00
192 lines
4.5 KiB
JavaScript
192 lines
4.5 KiB
JavaScript
'use strict';
|
|
|
|
const settingsService = require('../settings');
|
|
|
|
describe('Configuration settings service', () => {
|
|
describe('createDefaultSettings', () => {
|
|
test('Consistent defaults', async () => {
|
|
const schema = {
|
|
attributes: {},
|
|
};
|
|
|
|
const settings = await settingsService.createDefaultSettings(schema);
|
|
|
|
expect(settings).toMatchInlineSnapshot(`
|
|
Object {
|
|
"bulkable": true,
|
|
"defaultSortBy": "id",
|
|
"defaultSortOrder": "ASC",
|
|
"filterable": true,
|
|
"mainField": "id",
|
|
"pageSize": 10,
|
|
"searchable": true,
|
|
}
|
|
`);
|
|
});
|
|
|
|
test('uses id as mainField by default', async () => {
|
|
const schema = {
|
|
attributes: {},
|
|
};
|
|
|
|
const settings = await settingsService.createDefaultSettings(schema);
|
|
|
|
expect(settings).toMatchObject({
|
|
mainField: 'id',
|
|
defaultSortBy: 'id',
|
|
});
|
|
});
|
|
|
|
test('uses first string attribute that is not id', async () => {
|
|
const schema = {
|
|
attributes: {
|
|
id: {
|
|
type: 'string',
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
};
|
|
|
|
const settings = await settingsService.createDefaultSettings(schema);
|
|
|
|
expect(settings).toMatchObject({
|
|
mainField: 'title',
|
|
defaultSortBy: 'title',
|
|
});
|
|
});
|
|
|
|
test('uses overrides configured in schema config', async () => {
|
|
const schema = {
|
|
attributes: {
|
|
id: {
|
|
type: 'string',
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
config: {
|
|
settings: {
|
|
searchable: false,
|
|
filterable: false,
|
|
bulkable: false,
|
|
},
|
|
},
|
|
};
|
|
|
|
const settings = await settingsService.createDefaultSettings(schema);
|
|
|
|
expect(settings).toMatchObject({
|
|
searchable: false,
|
|
filterable: false,
|
|
bulkable: false,
|
|
});
|
|
});
|
|
|
|
test('Overrides cannot add new properties', async () => {
|
|
const schema = {
|
|
attributes: {
|
|
id: {
|
|
type: 'string',
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
config: {
|
|
settings: {
|
|
searchable: false,
|
|
filterable: false,
|
|
bulkable: false,
|
|
newProperty: 'test',
|
|
},
|
|
},
|
|
};
|
|
|
|
const settings = await settingsService.createDefaultSettings(schema);
|
|
|
|
expect(settings).not.toHaveProperty('newProperty');
|
|
expect(settings).toMatchObject({
|
|
searchable: false,
|
|
filterable: false,
|
|
bulkable: false,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('syncSettings', () => {
|
|
test('Creates default setting if empty', async () => {
|
|
const schema = { attributes: {} };
|
|
const existingConfig = {};
|
|
|
|
const spyFn = jest.spyOn(settingsService, 'createDefaultSettings');
|
|
|
|
await settingsService.syncSettings(existingConfig, schema);
|
|
expect(spyFn).toHaveBeenCalledWith(schema);
|
|
|
|
spyFn.mockRestore();
|
|
});
|
|
|
|
test('Reuses the existing config', async () => {
|
|
const schema = { attributes: {} };
|
|
const existingConfig = {
|
|
settings: {
|
|
searchable: false,
|
|
bulkable: true,
|
|
},
|
|
};
|
|
|
|
const settings = await settingsService.syncSettings(existingConfig, schema);
|
|
|
|
expect(settings).toMatchObject({
|
|
mainField: 'id',
|
|
defaultSortBy: 'id',
|
|
searchable: false,
|
|
bulkable: true,
|
|
});
|
|
});
|
|
|
|
test('Reset mainField if not sortable anymore', async () => {
|
|
const schema = { attributes: {} };
|
|
const existingConfig = {
|
|
settings: {
|
|
mainField: 'id',
|
|
searchable: false,
|
|
bulkable: true,
|
|
},
|
|
};
|
|
|
|
const settings = await settingsService.syncSettings(existingConfig, schema);
|
|
|
|
expect(settings).toMatchObject({
|
|
mainField: 'id',
|
|
defaultSortBy: 'id',
|
|
searchable: false,
|
|
bulkable: true,
|
|
});
|
|
});
|
|
|
|
test('Reset defaultSortBy if not sortable anymore', async () => {
|
|
const schema = { attributes: {} };
|
|
const existingConfig = {
|
|
settings: {
|
|
mainField: 'id',
|
|
searchable: false,
|
|
bulkable: true,
|
|
},
|
|
};
|
|
|
|
const settings = await settingsService.syncSettings(existingConfig, schema);
|
|
|
|
expect(settings).toMatchObject({
|
|
mainField: 'id',
|
|
defaultSortBy: 'id',
|
|
searchable: false,
|
|
bulkable: true,
|
|
});
|
|
});
|
|
});
|
|
});
|