mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-04 11:54:10 +00:00 
			
		
		
		
	Migrate basic actions to immer
Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
		
							parent
							
								
									c11e05fce6
								
							
						
					
					
						commit
						6ed7ef9cdf
					
				@ -34,8 +34,6 @@ const getOppositeRelation = originalRelation => {
 | 
			
		||||
  return originalRelation;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// const addComponentsToState = (state, componentToAddUid, )
 | 
			
		||||
 | 
			
		||||
const addComponentsToState = (state, componentToAddUid, objToUpdate) => {
 | 
			
		||||
  let newObj = objToUpdate;
 | 
			
		||||
  const componentToAdd = state.getIn(['components', componentToAddUid]);
 | 
			
		||||
@ -210,6 +208,55 @@ const reducer = (state = initialState, action) =>
 | 
			
		||||
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      case actions.REMOVE_COMPONENT_FROM_DYNAMIC_ZONE: {
 | 
			
		||||
        const dzAttributeIndex = findAttributeIndex(state.modifiedData.contentType, action.dzName);
 | 
			
		||||
 | 
			
		||||
        draftState.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.splice(
 | 
			
		||||
          action.componentToRemoveIndex,
 | 
			
		||||
          1
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      case actions.REMOVE_FIELD_FROM_DISPLAYED_COMPONENT: {
 | 
			
		||||
        const { attributeToRemoveName, componentUid } = action;
 | 
			
		||||
 | 
			
		||||
        const attributeToRemoveIndex = findAttributeIndex(
 | 
			
		||||
          state.modifiedData.components[componentUid],
 | 
			
		||||
          attributeToRemoveName
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        draftState.modifiedData.components[componentUid].schema.attributes.splice(
 | 
			
		||||
          attributeToRemoveIndex,
 | 
			
		||||
          1
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      case actions.UPDATE_SCHEMA: {
 | 
			
		||||
        const {
 | 
			
		||||
          data: { name, collectionName, category, icon, kind },
 | 
			
		||||
          schemaType,
 | 
			
		||||
          uid,
 | 
			
		||||
        } = action;
 | 
			
		||||
 | 
			
		||||
        draftState.modifiedData[schemaType].schema.collectionName = collectionName;
 | 
			
		||||
        draftState.modifiedData[schemaType].schema.name = name;
 | 
			
		||||
 | 
			
		||||
        if (action.schemaType === 'component') {
 | 
			
		||||
          draftState.modifiedData.component.category = category;
 | 
			
		||||
          draftState.modifiedData.component.schema.icon = icon;
 | 
			
		||||
          const addedComponent = current(draftState.modifiedData.component);
 | 
			
		||||
          draftState.components[uid] = addedComponent;
 | 
			
		||||
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        draftState.modifiedData.contentType.schema.kind = kind;
 | 
			
		||||
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      default:
 | 
			
		||||
        return draftState;
 | 
			
		||||
    }
 | 
			
		||||
@ -430,30 +477,7 @@ const reducer = (state = initialState, action) =>
 | 
			
		||||
//       });
 | 
			
		||||
//     }
 | 
			
		||||
 | 
			
		||||
//     case actions.REMOVE_FIELD_FROM_DISPLAYED_COMPONENT: {
 | 
			
		||||
//       const { attributeToRemoveName, componentUid } = action;
 | 
			
		||||
 | 
			
		||||
//       return state.removeIn([
 | 
			
		||||
//         'modifiedData',
 | 
			
		||||
//         'components',
 | 
			
		||||
//         componentUid,
 | 
			
		||||
//         'schema',
 | 
			
		||||
//         'attributes',
 | 
			
		||||
//         attributeToRemoveName,
 | 
			
		||||
//       ]);
 | 
			
		||||
//     }
 | 
			
		||||
//     case actions.REMOVE_COMPONENT_FROM_DYNAMIC_ZONE:
 | 
			
		||||
//       return state.removeIn([
 | 
			
		||||
//         'modifiedData',
 | 
			
		||||
//         'contentType',
 | 
			
		||||
//         'schema',
 | 
			
		||||
//         'attributes',
 | 
			
		||||
//         action.dzName,
 | 
			
		||||
//         'components',
 | 
			
		||||
//         action.componentToRemoveIndex,
 | 
			
		||||
//       ]);
 | 
			
		||||
 | 
			
		||||
//     // TODO
 | 
			
		||||
//
 | 
			
		||||
//     case actions.REMOVE_FIELD: {
 | 
			
		||||
//       const { mainDataKey, attributeToRemoveName } = action;
 | 
			
		||||
//       const pathToAttributes = ['modifiedData', mainDataKey, 'schema', 'attributes'];
 | 
			
		||||
@ -491,38 +515,6 @@ const reducer = (state = initialState, action) =>
 | 
			
		||||
//       });
 | 
			
		||||
//     }
 | 
			
		||||
 | 
			
		||||
//     case actions.UPDATE_SCHEMA: {
 | 
			
		||||
//       const {
 | 
			
		||||
//         data: { name, collectionName, category, icon, kind },
 | 
			
		||||
//         schemaType,
 | 
			
		||||
//         uid,
 | 
			
		||||
//       } = action;
 | 
			
		||||
 | 
			
		||||
//       let newState = state.updateIn(['modifiedData', schemaType], obj => {
 | 
			
		||||
//         let updatedObj = obj
 | 
			
		||||
//           .updateIn(['schema', 'name'], () => name)
 | 
			
		||||
//           .updateIn(['schema', 'collectionName'], () => collectionName);
 | 
			
		||||
 | 
			
		||||
//         if (action.schemaType === 'component') {
 | 
			
		||||
//           updatedObj = updatedObj
 | 
			
		||||
//             .update('category', () => category)
 | 
			
		||||
//             .updateIn(['schema', 'icon'], () => icon);
 | 
			
		||||
//         }
 | 
			
		||||
//         if (action.schemaType === 'contentType') {
 | 
			
		||||
//           updatedObj = updatedObj.updateIn(['schema', 'kind'], () => kind);
 | 
			
		||||
//         }
 | 
			
		||||
 | 
			
		||||
//         return updatedObj;
 | 
			
		||||
//       });
 | 
			
		||||
 | 
			
		||||
//       if (schemaType === 'component') {
 | 
			
		||||
//         newState = newState.updateIn(['components'], obj => {
 | 
			
		||||
//           return obj.update(uid, () => newState.getIn(['modifiedData', 'component']));
 | 
			
		||||
//         });
 | 
			
		||||
//       }
 | 
			
		||||
 | 
			
		||||
//       return newState;
 | 
			
		||||
//     }
 | 
			
		||||
//     default:
 | 
			
		||||
//       return state;
 | 
			
		||||
//   }
 | 
			
		||||
 | 
			
		||||
@ -557,354 +557,193 @@ describe('CTB | components | DataManagerProvider | reducer | basics actions ', (
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // describe('REMOVE_COMPONENT_FROM_DYNAMIC_ZONE', () => {
 | 
			
		||||
  //   it('Should remove a component from a dynamic zone', () => {
 | 
			
		||||
  //     const state = fromJS({
 | 
			
		||||
  //       components: {
 | 
			
		||||
  //         'default.openingtimes': {
 | 
			
		||||
  //           uid: 'default.openingtimes',
 | 
			
		||||
  //           category: 'default',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             icon: 'calendar',
 | 
			
		||||
  //             name: 'openingtimes',
 | 
			
		||||
  //             description: '',
 | 
			
		||||
  //             connection: 'default',
 | 
			
		||||
  //             collectionName: 'components_openingtimes',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               label: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //                 default: 'something',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               time: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //         'default.dish': {
 | 
			
		||||
  //           uid: 'default.dish',
 | 
			
		||||
  //           category: 'default',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             icon: 'calendar',
 | 
			
		||||
  //             name: 'dish',
 | 
			
		||||
  //             description: '',
 | 
			
		||||
  //             connection: 'default',
 | 
			
		||||
  //             collectionName: 'components_dishes',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               label: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //                 default: 'something',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               time: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {
 | 
			
		||||
  //           'default.dish': {
 | 
			
		||||
  //             uid: 'default.dish',
 | 
			
		||||
  //             category: 'default',
 | 
			
		||||
  //             schema: {
 | 
			
		||||
  //               icon: 'calendar',
 | 
			
		||||
  //               name: 'dish',
 | 
			
		||||
  //               description: '',
 | 
			
		||||
  //               connection: 'default',
 | 
			
		||||
  //               collectionName: 'components_dishes',
 | 
			
		||||
  //               attributes: {
 | 
			
		||||
  //                 label: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                   required: true,
 | 
			
		||||
  //                   default: 'something',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //                 time: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //           'default.openingtimes': {
 | 
			
		||||
  //             uid: 'default.openingtimes',
 | 
			
		||||
  //             category: 'default',
 | 
			
		||||
  //             schema: {
 | 
			
		||||
  //               icon: 'calendar',
 | 
			
		||||
  //               name: 'openingtimes',
 | 
			
		||||
  //               description: '',
 | 
			
		||||
  //               connection: 'default',
 | 
			
		||||
  //               collectionName: 'components_openingtimes',
 | 
			
		||||
  //               attributes: {
 | 
			
		||||
  //                 label: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                   required: true,
 | 
			
		||||
  //                   default: 'something',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //                 time: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //         contentType: {
 | 
			
		||||
  //           uid: 'application::address.address',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'address',
 | 
			
		||||
  //             description: '',
 | 
			
		||||
  //             connection: 'default',
 | 
			
		||||
  //             collectionName: 'addresses',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               geolocation: {
 | 
			
		||||
  //                 type: 'json',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               city: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               postal_coder: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               category: {
 | 
			
		||||
  //                 model: 'category',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               cover: {
 | 
			
		||||
  //                 model: 'file',
 | 
			
		||||
  //                 via: 'related',
 | 
			
		||||
  //                 plugin: 'upload',
 | 
			
		||||
  //                 required: false,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               images: {
 | 
			
		||||
  //                 collection: 'file',
 | 
			
		||||
  //                 via: 'related',
 | 
			
		||||
  //                 plugin: 'upload',
 | 
			
		||||
  //                 required: false,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               full_name: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               dz: {
 | 
			
		||||
  //                 type: 'dynamiczone',
 | 
			
		||||
  //                 components: ['default.openingtimes', 'default.dish'],
 | 
			
		||||
  //               },
 | 
			
		||||
  //               otherDz: {
 | 
			
		||||
  //                 type: 'dynamiczone',
 | 
			
		||||
  //                 components: ['default.openingtimes', 'default.dish'],
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
  describe('REMOVE_COMPONENT_FROM_DYNAMIC_ZONE', () => {
 | 
			
		||||
    it('Should remove a component from a dynamic zone', () => {
 | 
			
		||||
      const components = {
 | 
			
		||||
        'default.openingtimes': {
 | 
			
		||||
          uid: 'default.openingtimes',
 | 
			
		||||
          category: 'default',
 | 
			
		||||
          schema: {
 | 
			
		||||
            icon: 'calendar',
 | 
			
		||||
            name: 'openingtimes',
 | 
			
		||||
            description: '',
 | 
			
		||||
            connection: 'default',
 | 
			
		||||
            collectionName: 'components_openingtimes',
 | 
			
		||||
            attributes: [
 | 
			
		||||
              {
 | 
			
		||||
                name: 'label',
 | 
			
		||||
                type: 'string',
 | 
			
		||||
                required: true,
 | 
			
		||||
                default: 'something',
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                name: 'time',
 | 
			
		||||
                type: 'string',
 | 
			
		||||
              },
 | 
			
		||||
            ],
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        'default.dish': {
 | 
			
		||||
          uid: 'default.dish',
 | 
			
		||||
          category: 'default',
 | 
			
		||||
          schema: {
 | 
			
		||||
            icon: 'calendar',
 | 
			
		||||
            name: 'dish',
 | 
			
		||||
            description: '',
 | 
			
		||||
            connection: 'default',
 | 
			
		||||
            collectionName: 'components_dishes',
 | 
			
		||||
            attributes: [
 | 
			
		||||
              {
 | 
			
		||||
                name: 'label',
 | 
			
		||||
                type: 'string',
 | 
			
		||||
                required: true,
 | 
			
		||||
                default: 'something',
 | 
			
		||||
              },
 | 
			
		||||
 | 
			
		||||
  //     const expected = fromJS({
 | 
			
		||||
  //       components: {
 | 
			
		||||
  //         'default.openingtimes': {
 | 
			
		||||
  //           uid: 'default.openingtimes',
 | 
			
		||||
  //           category: 'default',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             icon: 'calendar',
 | 
			
		||||
  //             name: 'openingtimes',
 | 
			
		||||
  //             description: '',
 | 
			
		||||
  //             connection: 'default',
 | 
			
		||||
  //             collectionName: 'components_openingtimes',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               label: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //                 default: 'something',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               time: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //         'default.dish': {
 | 
			
		||||
  //           uid: 'default.dish',
 | 
			
		||||
  //           category: 'default',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             icon: 'calendar',
 | 
			
		||||
  //             name: 'dish',
 | 
			
		||||
  //             description: '',
 | 
			
		||||
  //             connection: 'default',
 | 
			
		||||
  //             collectionName: 'components_dishes',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               label: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //                 default: 'something',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               time: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {
 | 
			
		||||
  //           'default.dish': {
 | 
			
		||||
  //             uid: 'default.dish',
 | 
			
		||||
  //             category: 'default',
 | 
			
		||||
  //             schema: {
 | 
			
		||||
  //               icon: 'calendar',
 | 
			
		||||
  //               name: 'dish',
 | 
			
		||||
  //               description: '',
 | 
			
		||||
  //               connection: 'default',
 | 
			
		||||
  //               collectionName: 'components_dishes',
 | 
			
		||||
  //               attributes: {
 | 
			
		||||
  //                 label: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                   required: true,
 | 
			
		||||
  //                   default: 'something',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //                 time: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //           'default.openingtimes': {
 | 
			
		||||
  //             uid: 'default.openingtimes',
 | 
			
		||||
  //             category: 'default',
 | 
			
		||||
  //             schema: {
 | 
			
		||||
  //               icon: 'calendar',
 | 
			
		||||
  //               name: 'openingtimes',
 | 
			
		||||
  //               description: '',
 | 
			
		||||
  //               connection: 'default',
 | 
			
		||||
  //               collectionName: 'components_openingtimes',
 | 
			
		||||
  //               attributes: {
 | 
			
		||||
  //                 label: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                   required: true,
 | 
			
		||||
  //                   default: 'something',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //                 time: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //         contentType: {
 | 
			
		||||
  //           uid: 'application::address.address',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'address',
 | 
			
		||||
  //             description: '',
 | 
			
		||||
  //             connection: 'default',
 | 
			
		||||
  //             collectionName: 'addresses',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               geolocation: {
 | 
			
		||||
  //                 type: 'json',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               city: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               postal_coder: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               category: {
 | 
			
		||||
  //                 model: 'category',
 | 
			
		||||
  //               },
 | 
			
		||||
  //               cover: {
 | 
			
		||||
  //                 model: 'file',
 | 
			
		||||
  //                 via: 'related',
 | 
			
		||||
  //                 plugin: 'upload',
 | 
			
		||||
  //                 required: false,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               images: {
 | 
			
		||||
  //                 collection: 'file',
 | 
			
		||||
  //                 via: 'related',
 | 
			
		||||
  //                 plugin: 'upload',
 | 
			
		||||
  //                 required: false,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               full_name: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //                 required: true,
 | 
			
		||||
  //               },
 | 
			
		||||
  //               dz: {
 | 
			
		||||
  //                 type: 'dynamiczone',
 | 
			
		||||
  //                 components: ['default.openingtimes'],
 | 
			
		||||
  //               },
 | 
			
		||||
  //               otherDz: {
 | 
			
		||||
  //                 type: 'dynamiczone',
 | 
			
		||||
  //                 components: ['default.openingtimes', 'default.dish'],
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
              { name: 'time', type: 'string' },
 | 
			
		||||
            ],
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
  //     expect(
 | 
			
		||||
  //       reducer(state, {
 | 
			
		||||
  //         type: actions.REMOVE_COMPONENT_FROM_DYNAMIC_ZONE,
 | 
			
		||||
  //         dzName: 'dz',
 | 
			
		||||
  //         componentToRemoveIndex: 1,
 | 
			
		||||
  //       })
 | 
			
		||||
  //     ).toEqual(expected);
 | 
			
		||||
  //   });
 | 
			
		||||
  // });
 | 
			
		||||
      const modifiedData = {
 | 
			
		||||
        components,
 | 
			
		||||
        contentType: {
 | 
			
		||||
          uid: 'application::address.address',
 | 
			
		||||
          schema: {
 | 
			
		||||
            name: 'address',
 | 
			
		||||
            description: '',
 | 
			
		||||
            connection: 'default',
 | 
			
		||||
            collectionName: 'addresses',
 | 
			
		||||
            attributes: [
 | 
			
		||||
              {
 | 
			
		||||
                name: 'full_name',
 | 
			
		||||
                type: 'string',
 | 
			
		||||
                required: true,
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                name: 'dz',
 | 
			
		||||
                type: 'dynamiczone',
 | 
			
		||||
                components: ['default.openingtimes', 'default.dish'],
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                name: 'otherDz',
 | 
			
		||||
                type: 'dynamiczone',
 | 
			
		||||
                components: ['default.openingtimes', 'default.dish'],
 | 
			
		||||
              },
 | 
			
		||||
            ],
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
      const state = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        components,
 | 
			
		||||
        modifiedData,
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
  // describe('REMOVE_FIELD_FROM_DISPLAYED_COMPONENT', () => {
 | 
			
		||||
  //   it('Should remove the selected field', () => {
 | 
			
		||||
  //     const state = fromJS({
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {
 | 
			
		||||
  //           'default.test': {
 | 
			
		||||
  //             schema: {
 | 
			
		||||
  //               attributes: {
 | 
			
		||||
  //                 text: {
 | 
			
		||||
  //                   type: 'text',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //                 other: {
 | 
			
		||||
  //                   type: 'string',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //                 last: {
 | 
			
		||||
  //                   type: 'integer',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
      const action = {
 | 
			
		||||
        type: actions.REMOVE_COMPONENT_FROM_DYNAMIC_ZONE,
 | 
			
		||||
        dzName: 'dz',
 | 
			
		||||
        componentToRemoveIndex: 1,
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
  //     const expected = fromJS({
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {
 | 
			
		||||
  //           'default.test': {
 | 
			
		||||
  //             schema: {
 | 
			
		||||
  //               attributes: {
 | 
			
		||||
  //                 text: {
 | 
			
		||||
  //                   type: 'text',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //                 last: {
 | 
			
		||||
  //                   type: 'integer',
 | 
			
		||||
  //                 },
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
      const expected = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        components,
 | 
			
		||||
        modifiedData: {
 | 
			
		||||
          components,
 | 
			
		||||
          contentType: {
 | 
			
		||||
            uid: 'application::address.address',
 | 
			
		||||
            schema: {
 | 
			
		||||
              name: 'address',
 | 
			
		||||
              description: '',
 | 
			
		||||
              connection: 'default',
 | 
			
		||||
              collectionName: 'addresses',
 | 
			
		||||
              attributes: [
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'full_name',
 | 
			
		||||
                  type: 'string',
 | 
			
		||||
                  required: true,
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'dz',
 | 
			
		||||
                  type: 'dynamiczone',
 | 
			
		||||
                  components: ['default.openingtimes'],
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'otherDz',
 | 
			
		||||
                  type: 'dynamiczone',
 | 
			
		||||
                  components: ['default.openingtimes', 'default.dish'],
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
  //     expect(
 | 
			
		||||
  //       reducer(state, {
 | 
			
		||||
  //         type: actions.REMOVE_FIELD_FROM_DISPLAYED_COMPONENT,
 | 
			
		||||
  //         componentUid: 'default.test',
 | 
			
		||||
  //         attributeToRemoveName: 'other',
 | 
			
		||||
  //       })
 | 
			
		||||
  //     ).toEqual(expected);
 | 
			
		||||
  //   });
 | 
			
		||||
  // });
 | 
			
		||||
      expect(reducer(state, action)).toEqual(expected);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('REMOVE_FIELD_FROM_DISPLAYED_COMPONENT', () => {
 | 
			
		||||
    it('Should remove the selected field', () => {
 | 
			
		||||
      const state = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        modifiedData: {
 | 
			
		||||
          components: {
 | 
			
		||||
            'default.test': {
 | 
			
		||||
              schema: {
 | 
			
		||||
                attributes: [
 | 
			
		||||
                  {
 | 
			
		||||
                    name: 'text',
 | 
			
		||||
                    type: 'text',
 | 
			
		||||
                  },
 | 
			
		||||
                  {
 | 
			
		||||
                    name: 'other',
 | 
			
		||||
                    type: 'string',
 | 
			
		||||
                  },
 | 
			
		||||
                  {
 | 
			
		||||
                    name: 'last',
 | 
			
		||||
                    type: 'integer',
 | 
			
		||||
                  },
 | 
			
		||||
                ],
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      const action = {
 | 
			
		||||
        type: actions.REMOVE_FIELD_FROM_DISPLAYED_COMPONENT,
 | 
			
		||||
        componentUid: 'default.test',
 | 
			
		||||
        attributeToRemoveName: 'other',
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      const expected = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        modifiedData: {
 | 
			
		||||
          components: {
 | 
			
		||||
            'default.test': {
 | 
			
		||||
              schema: {
 | 
			
		||||
                attributes: [
 | 
			
		||||
                  {
 | 
			
		||||
                    name: 'text',
 | 
			
		||||
                    type: 'text',
 | 
			
		||||
                  },
 | 
			
		||||
                  {
 | 
			
		||||
                    name: 'last',
 | 
			
		||||
                    type: 'integer',
 | 
			
		||||
                  },
 | 
			
		||||
                ],
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      expect(reducer(state, action)).toEqual(expected);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('SET_MODIFIED_DATA', () => {
 | 
			
		||||
    it('Should set the modifiedData object correctly if the user did create a new type', () => {
 | 
			
		||||
@ -974,142 +813,154 @@ describe('CTB | components | DataManagerProvider | reducer | basics actions ', (
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // describe('UPDATE_SCHEMA', () => {
 | 
			
		||||
  //   it('Should update the modified data correctly if the schemaType is a content type', () => {
 | 
			
		||||
  //     const data = {
 | 
			
		||||
  //       name: 'test1',
 | 
			
		||||
  //       collectionName: 'newTest',
 | 
			
		||||
  //     };
 | 
			
		||||
  //     const state = fromJS({
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {},
 | 
			
		||||
  //         contentType: {
 | 
			
		||||
  //           uid: 'test',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'test',
 | 
			
		||||
  //             collectionName: 'test',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               something: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
  //     const expected = fromJS({
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {},
 | 
			
		||||
  //         contentType: {
 | 
			
		||||
  //           uid: 'test',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'test1',
 | 
			
		||||
  //             collectionName: 'newTest',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               something: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
  describe('UPDATE_SCHEMA', () => {
 | 
			
		||||
    it('Should update the modified data correctly if the schemaType is a content type', () => {
 | 
			
		||||
      const data = {
 | 
			
		||||
        name: 'test1',
 | 
			
		||||
        collectionName: 'newTest',
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
  //     expect(
 | 
			
		||||
  //       reducer(state, {
 | 
			
		||||
  //         type: actions.UPDATE_SCHEMA,
 | 
			
		||||
  //         data,
 | 
			
		||||
  //         schemaType: 'contentType',
 | 
			
		||||
  //       })
 | 
			
		||||
  //     ).toEqual(expected);
 | 
			
		||||
  //   });
 | 
			
		||||
      const state = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        modifiedData: {
 | 
			
		||||
          components: {},
 | 
			
		||||
          contentType: {
 | 
			
		||||
            uid: 'test',
 | 
			
		||||
            schema: {
 | 
			
		||||
              name: 'test',
 | 
			
		||||
              collectionName: 'test',
 | 
			
		||||
              attributes: [
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'something',
 | 
			
		||||
                  type: 'string',
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
  //   it('Should update the modified data correctly if the schemaType is a component', () => {
 | 
			
		||||
  //     const data = {
 | 
			
		||||
  //       name: 'newTest',
 | 
			
		||||
  //       collectionName: 'newTest',
 | 
			
		||||
  //       category: 'test',
 | 
			
		||||
  //       icon: 'test',
 | 
			
		||||
  //     };
 | 
			
		||||
  //     const state = fromJS({
 | 
			
		||||
  //       components: {
 | 
			
		||||
  //         test: {
 | 
			
		||||
  //           uid: 'test',
 | 
			
		||||
  //           category: 'default',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'test',
 | 
			
		||||
  //             icon: 'book',
 | 
			
		||||
  //             collectionName: 'components_tests',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               something: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {},
 | 
			
		||||
  //         component: {
 | 
			
		||||
  //           uid: 'test',
 | 
			
		||||
  //           category: 'default',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'test',
 | 
			
		||||
  //             icon: 'book',
 | 
			
		||||
  //             collectionName: 'components_tests',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               something: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
  //     const expected = fromJS({
 | 
			
		||||
  //       components: {
 | 
			
		||||
  //         test: {
 | 
			
		||||
  //           uid: 'test',
 | 
			
		||||
  //           category: 'test',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'newTest',
 | 
			
		||||
  //             icon: 'test',
 | 
			
		||||
  //             collectionName: 'newTest',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               something: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //       modifiedData: {
 | 
			
		||||
  //         components: {},
 | 
			
		||||
  //         component: {
 | 
			
		||||
  //           uid: 'test',
 | 
			
		||||
  //           category: 'test',
 | 
			
		||||
  //           schema: {
 | 
			
		||||
  //             name: 'newTest',
 | 
			
		||||
  //             icon: 'test',
 | 
			
		||||
  //             collectionName: 'newTest',
 | 
			
		||||
  //             attributes: {
 | 
			
		||||
  //               something: {
 | 
			
		||||
  //                 type: 'string',
 | 
			
		||||
  //               },
 | 
			
		||||
  //             },
 | 
			
		||||
  //           },
 | 
			
		||||
  //         },
 | 
			
		||||
  //       },
 | 
			
		||||
  //     });
 | 
			
		||||
      const action = {
 | 
			
		||||
        type: actions.UPDATE_SCHEMA,
 | 
			
		||||
        data,
 | 
			
		||||
        schemaType: 'contentType',
 | 
			
		||||
      };
 | 
			
		||||
      const expected = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        modifiedData: {
 | 
			
		||||
          components: {},
 | 
			
		||||
          contentType: {
 | 
			
		||||
            uid: 'test',
 | 
			
		||||
            schema: {
 | 
			
		||||
              name: 'test1',
 | 
			
		||||
              collectionName: 'newTest',
 | 
			
		||||
              attributes: [
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'something',
 | 
			
		||||
                  type: 'string',
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
  //     expect(
 | 
			
		||||
  //       reducer(state, {
 | 
			
		||||
  //         type: actions.UPDATE_SCHEMA,
 | 
			
		||||
  //         data,
 | 
			
		||||
  //         schemaType: 'component',
 | 
			
		||||
  //         uid: 'test',
 | 
			
		||||
  //       })
 | 
			
		||||
  //     ).toEqual(expected);
 | 
			
		||||
  //   });
 | 
			
		||||
  // });
 | 
			
		||||
      expect(reducer(state, action)).toEqual(expected);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('Should update the modified data correctly if the schemaType is a component', () => {
 | 
			
		||||
      const data = {
 | 
			
		||||
        name: 'newTest',
 | 
			
		||||
        collectionName: 'newTest',
 | 
			
		||||
        category: 'test',
 | 
			
		||||
        icon: 'test',
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      const state = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        components: {
 | 
			
		||||
          test: {
 | 
			
		||||
            uid: 'test',
 | 
			
		||||
            category: 'default',
 | 
			
		||||
            schema: {
 | 
			
		||||
              name: 'test',
 | 
			
		||||
              icon: 'book',
 | 
			
		||||
              collectionName: 'components_tests',
 | 
			
		||||
              attributes: [
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'something',
 | 
			
		||||
                  type: 'string',
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        modifiedData: {
 | 
			
		||||
          components: {},
 | 
			
		||||
          component: {
 | 
			
		||||
            uid: 'test',
 | 
			
		||||
            category: 'default',
 | 
			
		||||
            schema: {
 | 
			
		||||
              name: 'test',
 | 
			
		||||
              icon: 'book',
 | 
			
		||||
              collectionName: 'components_tests',
 | 
			
		||||
              attributes: [
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'something',
 | 
			
		||||
                  type: 'string',
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      const action = {
 | 
			
		||||
        type: actions.UPDATE_SCHEMA,
 | 
			
		||||
        data,
 | 
			
		||||
        schemaType: 'component',
 | 
			
		||||
        uid: 'test',
 | 
			
		||||
      };
 | 
			
		||||
      const expected = {
 | 
			
		||||
        ...initialState,
 | 
			
		||||
        components: {
 | 
			
		||||
          test: {
 | 
			
		||||
            uid: 'test',
 | 
			
		||||
            category: 'test',
 | 
			
		||||
            schema: {
 | 
			
		||||
              name: 'newTest',
 | 
			
		||||
              icon: 'test',
 | 
			
		||||
              collectionName: 'newTest',
 | 
			
		||||
              attributes: [
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'something',
 | 
			
		||||
                  type: 'string',
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        modifiedData: {
 | 
			
		||||
          components: {},
 | 
			
		||||
          component: {
 | 
			
		||||
            uid: 'test',
 | 
			
		||||
            category: 'test',
 | 
			
		||||
            schema: {
 | 
			
		||||
              name: 'newTest',
 | 
			
		||||
              icon: 'test',
 | 
			
		||||
              collectionName: 'newTest',
 | 
			
		||||
              attributes: [
 | 
			
		||||
                {
 | 
			
		||||
                  name: 'something',
 | 
			
		||||
                  type: 'string',
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      expect(reducer(state, action)).toEqual(expected);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user