strapi/packages/plugins/i18n/tests/graphql.test.e2e.js

119 lines
2.7 KiB
JavaScript
Raw Normal View History

'use strict';
// Helpers.
2021-04-29 11:11:46 +02:00
const { createTestBuilder } = require('../../../../test/helpers/builder');
const { createStrapiInstance } = require('../../../../test/helpers/strapi');
const { createAuthRequest } = require('../../../../test/helpers/request');
const builder = createTestBuilder();
let strapi;
let rq;
let graphqlQuery;
let localeId;
const recipesModel = {
attributes: {
name: {
type: 'string',
},
},
pluginOptions: {
i18n: {
localized: true,
},
},
name: 'recipes',
description: '',
collectionName: '',
};
describe('Test Graphql API create localization', () => {
beforeAll(async () => {
await builder.addContentType(recipesModel).build();
strapi = await createStrapiInstance();
rq = await createAuthRequest({ strapi });
graphqlQuery = body => {
return rq({
url: '/graphql',
method: 'POST',
body,
});
};
2021-08-06 18:09:49 +02:00
const locale = await strapi.query('plugin::i18n.locale').create({
2021-06-28 22:37:19 +02:00
data: { code: 'fr', name: 'French' },
});
localeId = locale.id;
});
afterAll(async () => {
2021-08-06 18:09:49 +02:00
await strapi.query('plugin::i18n.locale').delete({ where: { id: localeId } });
await strapi.query('api::recipes.recipes').deleteMany();
await strapi.destroy();
await builder.cleanup();
});
test('Create localization for a model with plural name', async () => {
const createResponse = await graphqlQuery({
query: /* GraphQL */ `
mutation createRecipe($input: createRecipeInput) {
createRecipe(input: $input) {
recipe {
id
name
locale
}
}
}
`,
variables: {
input: {
data: {
name: 'Recipe Name',
},
},
},
});
expect(createResponse.statusCode).toBe(200);
expect(createResponse.body.data.createRecipe.recipe).toMatchObject({
name: 'Recipe Name',
locale: 'en',
});
const recipeId = createResponse.body.data.createRecipe.recipe.id;
const createLocalizationResponse = await graphqlQuery({
query: /* GraphQL */ `
mutation createRecipeLocalization($input: updateRecipeInput!) {
createRecipeLocalization(input: $input) {
id
name
locale
}
}
`,
variables: {
input: {
where: {
id: recipeId,
},
data: {
name: 'Recipe Name fr',
locale: 'fr',
},
},
},
});
expect(createLocalizationResponse.statusCode).toBe(200);
expect(createLocalizationResponse.body.data.createRecipeLocalization).toMatchObject({
name: 'Recipe Name fr',
locale: 'fr',
});
});
});