Skip to content
Snippets Groups Projects
Commit e4e6a5a8 authored by Lee Rowlands's avatar Lee Rowlands Committed by Jesse Baker
Browse files

Issue #3501870 by larowlan, wim leers: Block form state not cleared when component is changed

parent 60eebd25
No related branches found
Tags 2.0.0-beta10
1 merge request!580Issue #3501870 Block form state not cleared on component change
Pipeline #404544 passed with warnings
......@@ -160,6 +160,8 @@ export const makeStore = (preloadedState?: Partial<RootState>) => {
action.payload
) {
listenerApi.dispatch(clearFieldValues('component_inputs_form'));
// @todo Remove in www.drupal.org/project/experience_builder/issues/3500152
listenerApi.dispatch(clearFieldValues('block_form'));
}
},
});
......
......@@ -23,7 +23,7 @@ const emptyFormState = {
errors: {},
};
const initialState: FormStateSliceState = {
export const initialState: FormStateSliceState = {
component_inputs_form: emptyFormState,
block_form: emptyFormState,
page_data_form: emptyFormState,
......@@ -77,7 +77,7 @@ export const formStateSlice = createSlice({
clearFieldError: create.reducer(
(state, action: PayloadAction<ClearFieldErrorPayload>) => {
delete state[action.payload.formId].errors[action.payload.fieldName];
return { ...state };
return state;
},
),
setFieldValue: create.reducer(
......
import {
formStateSlice,
initialState,
setFieldError,
setFieldValue,
clearFieldValues,
clearFieldError,
} from '@/features/form/formStateSlice';
import { makeStore } from '@/app/store';
import { setSelectedComponent } from '@/features/ui/uiSlice';
const formId = 'component_inputs_form';
const fieldName = 'b741';
describe('Form state slice 🔪', () => {
it('Should set field value', () => {
const state = formStateSlice.reducer(
initialState,
setFieldValue({
formId,
fieldName,
value: "Okay, let's ride",
}),
);
expect(state.component_inputs_form.values).to.deep.eq({
b741: "Okay, let's ride",
});
});
it('Should set field error', () => {
const state = formStateSlice.reducer(
initialState,
setFieldError({
formId,
fieldName,
type: 'error',
message: 'Its tempo paints my world in gray',
}),
);
expect(state.component_inputs_form.errors).to.deep.eq({
b741: { type: 'error', message: 'Its tempo paints my world in gray' },
});
});
it('Should clear field error', () => {
const state = formStateSlice.reducer(
{
...initialState,
[formId]: {
errors: {
b741: {
type: 'error',
message: 'Its tempo paints my world in gray',
},
},
values: {},
},
},
clearFieldError({ formId, fieldName }),
);
expect(state.component_inputs_form.errors).to.deep.eq({});
});
it('Should clear values', () => {
const state = formStateSlice.reducer(
{
...initialState,
[formId]: {
errors: {},
values: {
b741: "Okay, let's ride",
},
},
},
clearFieldValues(formId),
);
expect(state.component_inputs_form.values).to.deep.eq({});
});
it('Should clear form state when component changes', () => {
const store = makeStore({
formState: {
...initialState,
[formId]: {
errors: {},
values: {
b741: "Okay, let's ride",
},
},
// @todo Remove in www.drupal.org/project/experience_builder/issues/3500152
block_form: {
errors: {},
values: {
birth: 4000,
},
},
},
});
expect(store.getState().formState.component_inputs_form.values).to.deep.eq({
b741: "Okay, let's ride",
});
store.dispatch(setSelectedComponent('clench-the-moment'));
expect(store.getState().formState.component_inputs_form.values).to.deep.eq(
{},
);
// @todo Remove in www.drupal.org/project/experience_builder/issues/3500152
expect(store.getState().formState.block_form.values).to.deep.eq({});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment