mirror of
https://github.com/strapi/strapi.git
synced 2025-09-09 00:26:28 +00:00
add content manager relations reordering tests
This commit is contained in:
parent
2639f8418e
commit
1dc0f93876
@ -629,6 +629,143 @@ describe('Relations', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Reorder an entity relations', () => {
|
||||
test('Reorder single relation', async () => {
|
||||
const createdShop = await createEntry(
|
||||
'shop',
|
||||
{
|
||||
name: 'Cazotte Shop',
|
||||
products_om: { connect: [id1, id2, id3] },
|
||||
products_mm: { connect: [id1, id2, id3] },
|
||||
products_mw: { connect: [id1, id2, id3] },
|
||||
myCompo: {
|
||||
compo_products_mw: { connect: [id1, id2, id3] },
|
||||
},
|
||||
},
|
||||
['myCompo']
|
||||
);
|
||||
|
||||
const relationToChange = [{ id: id1, position: { before: id3 } }];
|
||||
const updatedShop = await updateEntry('shop', createdShop.id, {
|
||||
name: 'Cazotte Shop',
|
||||
products_om: { connect: relationToChange },
|
||||
products_mm: { connect: relationToChange },
|
||||
products_mw: { connect: relationToChange },
|
||||
myCompo: {
|
||||
id: createdShop.myCompo.id,
|
||||
compo_products_mw: { connect: relationToChange },
|
||||
},
|
||||
});
|
||||
|
||||
let res;
|
||||
const expectedRelations = [{ id: id3 }, { id: id1 }, { id: id2 }];
|
||||
|
||||
res = await getRelations('default.compo', 'compo_products_mw', updatedShop.myCompo.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_mm', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_mw', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_om', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
});
|
||||
|
||||
test('Reorder multiple relations', async () => {
|
||||
const createdShop = await createEntry(
|
||||
'shop',
|
||||
{
|
||||
name: 'Cazotte Shop',
|
||||
products_om: { connect: [id1, id2, id3] },
|
||||
products_mm: { connect: [id1, id2, id3] },
|
||||
products_mw: { connect: [id1, id2, id3] },
|
||||
myCompo: {
|
||||
compo_products_mw: { connect: [id1, id2, id3] },
|
||||
},
|
||||
},
|
||||
['myCompo']
|
||||
);
|
||||
|
||||
const relationToChange = [
|
||||
{ id: id1, position: { end: true } },
|
||||
{ id: id3, position: { start: true } },
|
||||
{ id: id2, position: { after: id1 } },
|
||||
];
|
||||
const updatedShop = await updateEntry('shop', createdShop.id, {
|
||||
name: 'Cazotte Shop',
|
||||
products_om: { connect: relationToChange },
|
||||
products_mm: { connect: relationToChange },
|
||||
products_mw: { connect: relationToChange },
|
||||
myCompo: {
|
||||
id: createdShop.myCompo.id,
|
||||
compo_products_mw: { connect: relationToChange },
|
||||
},
|
||||
});
|
||||
|
||||
let res;
|
||||
const expectedRelations = [{ id: id2 }, { id: id1 }, { id: id3 }];
|
||||
|
||||
res = await getRelations('default.compo', 'compo_products_mw', updatedShop.myCompo.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_mm', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_mw', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_om', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
});
|
||||
|
||||
test('Invalid reorder with non-strict mode should not give an error', async () => {
|
||||
const createdShop = await createEntry(
|
||||
'shop',
|
||||
{
|
||||
name: 'Cazotte Shop',
|
||||
products_om: { connect: [id1, id2] },
|
||||
products_mm: { connect: [id1, id2] },
|
||||
products_mw: { connect: [id1, id2] },
|
||||
myCompo: {
|
||||
compo_products_mw: { connect: [id1, id2] },
|
||||
},
|
||||
},
|
||||
['myCompo']
|
||||
);
|
||||
|
||||
const relationToChange = [
|
||||
{ id: id1, position: { before: id3 } }, // id3 does not exist, should place it at the end
|
||||
];
|
||||
const updatedShop = await updateEntry('shop', createdShop.id, {
|
||||
name: 'Cazotte Shop',
|
||||
products_om: { options: { strictConnect: false }, connect: relationToChange },
|
||||
products_mm: { options: { strictConnect: false }, connect: relationToChange },
|
||||
products_mw: { options: { strictConnect: false }, connect: relationToChange },
|
||||
myCompo: {
|
||||
id: createdShop.myCompo.id,
|
||||
compo_products_mw: { options: { strictConnect: false }, connect: relationToChange },
|
||||
},
|
||||
});
|
||||
|
||||
let res;
|
||||
const expectedRelations = [{ id: id1 }, { id: id2 }];
|
||||
|
||||
res = await getRelations('default.compo', 'compo_products_mw', updatedShop.myCompo.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_mm', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_mw', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
|
||||
res = await getRelations('api::shop.shop', 'products_om', updatedShop.id);
|
||||
expect(res.results).toMatchObject(expectedRelations);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Disconnect entity relations', () => {
|
||||
describe.each([
|
||||
['directly in the array ([1, 2, 3])', 'object'],
|
||||
|
Loading…
x
Reference in New Issue
Block a user