UNPKG

strapi-plugin-i18n

Version:

This plugin enables to create, to read and to update content in different languages, both from the Admin Panel and from the API

123 lines (104 loc) 2.53 kB
'use strict'; const { pick } = require('lodash/fp'); const { createTestBuilder } = require('../../../../test/helpers/builder'); const { createStrapiInstance } = require('../../../../test/helpers/strapi'); const { createAuthRequest } = require('../../../../test/helpers/request'); let strapi; let rq; let data = { products: [], shops: [], }; const productModel = { pluginOptions: { i18n: { localized: true, }, }, attributes: { name: { type: 'string', }, }, connection: 'default', name: 'product', description: '', collectionName: '', }; const shopModel = { pluginOptions: { i18n: { localized: true, }, }, attributes: { name: { type: 'string', }, products: { dominant: true, nature: 'manyToMany', target: 'application::product.product', targetAttribute: 'shops', }, }, connection: 'default', name: 'shop', }; const shops = [ { name: 'market', locale: 'en', }, ]; const products = ({ shop }) => { const shops = [shop[0].id]; const entries = [ { name: 'pomodoro', shops, locale: 'it', }, { name: 'apple', shops, locale: 'en', }, ]; return entries; }; describe('i18n - Relation-list route', () => { const builder = createTestBuilder(); beforeAll(async () => { await builder .addContentTypes([productModel, shopModel]) .addFixtures(shopModel.name, shops) .addFixtures(productModel.name, products) .build(); strapi = await createStrapiInstance(); rq = await createAuthRequest({ strapi }); data.shops = builder.sanitizedFixturesFor(shopModel.name, strapi); data.products = builder.sanitizedFixturesFor(productModel.name, strapi); }); afterAll(async () => { await strapi.destroy(); await builder.cleanup(); }); test('Can filter on default locale', async () => { const res = await rq({ method: 'POST', url: '/content-manager/relations/application::shop.shop/products', }); expect(res.body).toHaveLength(1); expect(res.body[0]).toStrictEqual(pick(['_id', 'id', 'name'], data.products[1])); }); test('Can filter on any locale', async () => { const res = await rq({ method: 'POST', url: '/content-manager/relations/application::shop.shop/products', qs: { _locale: 'it' }, }); expect(res.body).toHaveLength(1); expect(res.body[0]).toStrictEqual(pick(['_id', 'id', 'name'], data.products[0])); }); });