2022-08-11 10:20:49 +02:00

151 lines
4.2 KiB
JavaScript

'use strict';
const { after } = require('../field');
describe('i18n - Migration - disable localization on a field', () => {
describe('after', () => {
describe('Should not migrate', () => {
test("Doesn't migrate if model isn't localized", async () => {
const find = jest.fn();
global.strapi = {
query() {
return { find };
},
plugins: {
i18n: {
services: {
'content-types': {
isLocalizedContentType: () => false,
},
},
},
},
};
const model = {};
const previousDefinition = {};
await after({ model, definition: model, previousDefinition });
expect(find).not.toHaveBeenCalled();
});
test("Doesn't migrate if no attribute changed (without i18n)", async () => {
const find = jest.fn();
const getLocalizedAttributes = jest.fn(() => []);
global.strapi = {
query() {
return { find };
},
plugins: {
i18n: {
services: {
'content-types': {
isLocalizedContentType: () => true,
getLocalizedAttributes,
},
},
},
},
};
const model = { attributes: { name: {} } };
const previousDefinition = { attributes: { name: {} } };
await after({ model, definition: model, previousDefinition });
expect(getLocalizedAttributes).toHaveBeenCalledTimes(2);
expect(find).not.toHaveBeenCalled();
});
test("Doesn't migrate if no attribute changed (with i18n)", async () => {
const find = jest.fn();
const getLocalizedAttributes = jest.fn(() => ['name']);
global.strapi = {
query() {
return { find };
},
plugins: {
i18n: {
services: {
'content-types': {
isLocalizedContentType: () => true,
getLocalizedAttributes,
},
},
},
},
};
const model = { attributes: { name: {} } };
const previousDefinition = { attributes: { name: {} } };
await after({ model, definition: model, previousDefinition });
expect(getLocalizedAttributes).toHaveBeenCalledTimes(2);
expect(find).not.toHaveBeenCalled();
});
test("Doesn't migrate if field become localized", async () => {
const find = jest.fn();
const getLocalizedAttributes = jest
.fn()
.mockReturnValueOnce(['name'])
.mockReturnValueOnce([]);
global.strapi = {
query() {
return { find };
},
plugins: {
i18n: {
services: {
'content-types': {
isLocalizedContentType: () => true,
getLocalizedAttributes,
},
},
},
},
};
const model = { attributes: { name: {} } };
const previousDefinition = { attributes: { name: {} } };
await after({ model, definition: model, previousDefinition });
expect(getLocalizedAttributes).toHaveBeenCalledTimes(2);
expect(find).not.toHaveBeenCalled();
});
test("Doesn't migrate if field is deleted", async () => {
const find = jest.fn();
const getLocalizedAttributes = jest
.fn()
.mockReturnValueOnce([])
.mockReturnValueOnce(['name']);
global.strapi = {
query() {
return { find };
},
plugins: {
i18n: {
services: {
'content-types': {
isLocalizedContentType: () => true,
getLocalizedAttributes,
},
},
},
},
};
const model = { attributes: {} };
const previousDefinition = { attributes: { name: {} } };
await after({ model, definition: model, previousDefinition });
expect(getLocalizedAttributes).toHaveBeenCalledTimes(2);
expect(find).not.toHaveBeenCalled();
});
});
});
});