mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 21:43:04 +00:00
[DSC-76] Delete pending json patch operations
This commit is contained in:
@@ -20,6 +20,7 @@ export const JsonPatchOperationsActionTypes = {
|
||||
ROLLBACK_JSON_PATCH_OPERATIONS: type('dspace/core/patch/ROLLBACK_JSON_PATCH_OPERATIONS'),
|
||||
FLUSH_JSON_PATCH_OPERATIONS: type('dspace/core/patch/FLUSH_JSON_PATCH_OPERATIONS'),
|
||||
START_TRANSACTION_JSON_PATCH_OPERATIONS: type('dspace/core/patch/START_TRANSACTION_JSON_PATCH_OPERATIONS'),
|
||||
DELETE_PENDING_JSON_PATCH_OPERATIONS: type('dspace/core/patch/DELETE_PENDING_JSON_PATCH_OPERATIONS'),
|
||||
};
|
||||
|
||||
/* tslint:disable:max-classes-per-file */
|
||||
@@ -261,6 +262,13 @@ export class NewPatchReplaceOperationAction implements Action {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An ngrx action to delete all pending JSON Patch Operations.
|
||||
*/
|
||||
export class DeletePendingJsonPatchOperationsAction implements Action {
|
||||
type = JsonPatchOperationsActionTypes.DELETE_PENDING_JSON_PATCH_OPERATIONS;
|
||||
}
|
||||
|
||||
/* tslint:enable:max-classes-per-file */
|
||||
|
||||
/**
|
||||
@@ -276,4 +284,5 @@ export type PatchOperationsActions
|
||||
| NewPatchRemoveOperationAction
|
||||
| NewPatchReplaceOperationAction
|
||||
| RollbacktPatchOperationsAction
|
||||
| StartTransactionPatchOperationsAction;
|
||||
| StartTransactionPatchOperationsAction
|
||||
| DeletePendingJsonPatchOperationsAction;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import * as deepFreeze from 'deep-freeze';
|
||||
|
||||
import {
|
||||
CommitPatchOperationsAction,
|
||||
CommitPatchOperationsAction, DeletePendingJsonPatchOperationsAction,
|
||||
FlushPatchOperationsAction,
|
||||
NewPatchAddOperationAction,
|
||||
NewPatchRemoveOperationAction,
|
||||
@@ -323,4 +323,19 @@ describe('jsonPatchOperationsReducer test suite', () => {
|
||||
|
||||
});
|
||||
|
||||
describe('When DeletePendingJsonPatchOperationsAction has been dispatched', () => {
|
||||
it('should set set the JsonPatchOperationsState to null ', () => {
|
||||
const action = new DeletePendingJsonPatchOperationsAction();
|
||||
initState = Object.assign({}, testState, {
|
||||
[testJsonPatchResourceType]: Object.assign({}, testState[testJsonPatchResourceType], {
|
||||
transactionStartTime: startTimestamp,
|
||||
commitPending: true
|
||||
})
|
||||
});
|
||||
const newState = jsonPatchOperationsReducer(initState, action);
|
||||
|
||||
expect(newState).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
@@ -11,7 +11,8 @@ import {
|
||||
NewPatchReplaceOperationAction,
|
||||
CommitPatchOperationsAction,
|
||||
StartTransactionPatchOperationsAction,
|
||||
RollbacktPatchOperationsAction
|
||||
RollbacktPatchOperationsAction,
|
||||
DeletePendingJsonPatchOperationsAction
|
||||
} from './json-patch-operations.actions';
|
||||
import { JsonPatchOperationModel, JsonPatchOperationType } from './json-patch.model';
|
||||
|
||||
@@ -101,6 +102,10 @@ export function jsonPatchOperationsReducer(state = initialState, action: PatchOp
|
||||
return startTransactionPatchOperations(state, action as StartTransactionPatchOperationsAction);
|
||||
}
|
||||
|
||||
case JsonPatchOperationsActionTypes.DELETE_PENDING_JSON_PATCH_OPERATIONS: {
|
||||
return deletePendingOperations(state, action as DeletePendingJsonPatchOperationsAction);
|
||||
}
|
||||
|
||||
default: {
|
||||
return state;
|
||||
}
|
||||
@@ -178,6 +183,20 @@ function rollbackOperations(state: JsonPatchOperationsState, action: RollbacktPa
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the JsonPatchOperationsState to its initial value.
|
||||
*
|
||||
* @param state
|
||||
* the current state
|
||||
* @param action
|
||||
* an DeletePendingJsonPatchOperationsAction
|
||||
* @return JsonPatchOperationsState
|
||||
* the new state.
|
||||
*/
|
||||
function deletePendingOperations(state: JsonPatchOperationsState, action: DeletePendingJsonPatchOperationsAction): JsonPatchOperationsState {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add new JSON patch operation list.
|
||||
*
|
||||
|
@@ -17,6 +17,7 @@ import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||
import { JsonPatchOperationsEntry, JsonPatchOperationsResourceEntry } from './json-patch-operations.reducer';
|
||||
import {
|
||||
CommitPatchOperationsAction,
|
||||
DeletePendingJsonPatchOperationsAction,
|
||||
RollbacktPatchOperationsAction,
|
||||
StartTransactionPatchOperationsAction
|
||||
} from './json-patch-operations.actions';
|
||||
@@ -288,4 +289,19 @@ describe('JsonPatchOperationsService test suite', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('deletePendingJsonPatchOperations', () => {
|
||||
beforeEach(() => {
|
||||
store.dispatch.and.callFake(() => { /* */ });
|
||||
});
|
||||
|
||||
it('should dispatch a new DeletePendingJsonPatchOperationsAction', () => {
|
||||
|
||||
const expectedAction = new DeletePendingJsonPatchOperationsAction();
|
||||
scheduler.schedule(() => service.deletePendingJsonPatchOperations());
|
||||
scheduler.flush();
|
||||
|
||||
expect(store.dispatch).toHaveBeenCalledWith(expectedAction);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
@@ -10,7 +10,7 @@ import { CoreState } from '../core.reducers';
|
||||
import { jsonPatchOperationsByResourceType } from './selectors';
|
||||
import { JsonPatchOperationsResourceEntry } from './json-patch-operations.reducer';
|
||||
import {
|
||||
CommitPatchOperationsAction,
|
||||
CommitPatchOperationsAction, DeletePendingJsonPatchOperationsAction,
|
||||
RollbacktPatchOperationsAction,
|
||||
StartTransactionPatchOperationsAction
|
||||
} from './json-patch-operations.actions';
|
||||
@@ -105,6 +105,13 @@ export abstract class JsonPatchOperationsService<ResponseDefinitionDomain, Patch
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch an action to delete all pending JSON patch Operations.
|
||||
*/
|
||||
public deletePendingJsonPatchOperations() {
|
||||
this.store.dispatch(new DeletePendingJsonPatchOperationsAction());
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an instance for RestRequest class
|
||||
*
|
||||
|
Reference in New Issue
Block a user