mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 09:56:44 +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('Disconnect entity relations', () => { | ||||||
|     describe.each([ |     describe.each([ | ||||||
|       ['directly in the array ([1, 2, 3])', 'object'], |       ['directly in the array ([1, 2, 3])', 'object'], | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Marc-Roig
						Marc-Roig