mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-16 14:33:03 +00:00
205 lines
6.6 KiB
TypeScript
205 lines
6.6 KiB
TypeScript
import {
|
|
MetadataRegistryCancelFieldAction,
|
|
MetadataRegistryCancelSchemaAction,
|
|
MetadataRegistryDeselectAllFieldAction,
|
|
MetadataRegistryDeselectAllSchemaAction,
|
|
MetadataRegistryDeselectFieldAction,
|
|
MetadataRegistryDeselectSchemaAction,
|
|
MetadataRegistryEditFieldAction,
|
|
MetadataRegistryEditSchemaAction,
|
|
MetadataRegistrySelectFieldAction,
|
|
MetadataRegistrySelectSchemaAction
|
|
} from './metadata-registry.actions';
|
|
import { metadataRegistryReducer, MetadataRegistryState } from './metadata-registry.reducers';
|
|
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
|
import { MetadataField } from '../../../core/metadata/metadata-field.model';
|
|
|
|
class NullAction extends MetadataRegistryEditSchemaAction {
|
|
type = null;
|
|
|
|
constructor() {
|
|
super(undefined);
|
|
}
|
|
}
|
|
|
|
const schema: MetadataSchema = Object.assign(new MetadataSchema(),
|
|
{
|
|
id: 'schema-id',
|
|
_links: {
|
|
self: {
|
|
href: 'http://rest.self/schema/dc'
|
|
},
|
|
},
|
|
prefix: 'dc',
|
|
namespace: 'http://dublincore.org/documents/dcmi-terms/'
|
|
});
|
|
|
|
const schema2: MetadataSchema = Object.assign(new MetadataSchema(),
|
|
{
|
|
id: 'another-schema-id',
|
|
_links: {
|
|
self: {
|
|
href: 'http://rest.self/schema/dcterms',
|
|
},
|
|
},
|
|
prefix: 'dcterms',
|
|
namespace: 'http://purl.org/dc/terms/'
|
|
});
|
|
|
|
const field: MetadataField = Object.assign(new MetadataField(),
|
|
{
|
|
id: 'author-field-id',
|
|
_links: {
|
|
self: {
|
|
href: 'http://rest.self/field/author',
|
|
},
|
|
},
|
|
element: 'contributor',
|
|
qualifier: 'author',
|
|
scopeNote: 'Author of an item',
|
|
schema: schema
|
|
});
|
|
|
|
const field2: MetadataField = Object.assign(new MetadataField(),
|
|
{
|
|
id: 'title-field-id',
|
|
_links: {
|
|
self: {
|
|
href: 'http://rest.self/field/title',
|
|
},
|
|
},
|
|
element: 'title',
|
|
qualifier: null,
|
|
scopeNote: 'Title of an item',
|
|
schema: schema
|
|
});
|
|
|
|
const initialState: MetadataRegistryState = {
|
|
editSchema: null,
|
|
selectedSchemas: [],
|
|
editField: null,
|
|
selectedFields: []
|
|
};
|
|
|
|
const editState: MetadataRegistryState = {
|
|
editSchema: schema,
|
|
selectedSchemas: [],
|
|
editField: field,
|
|
selectedFields: []
|
|
};
|
|
|
|
const selectState: MetadataRegistryState = {
|
|
editSchema: null,
|
|
selectedSchemas: [schema2],
|
|
editField: null,
|
|
selectedFields: [field2]
|
|
};
|
|
|
|
const moreSelectState: MetadataRegistryState = {
|
|
editSchema: null,
|
|
selectedSchemas: [schema, schema2],
|
|
editField: null,
|
|
selectedFields: [field, field2]
|
|
};
|
|
|
|
describe('metadataRegistryReducer', () => {
|
|
|
|
it('should return the current state when no valid actions have been made', () => {
|
|
const state = initialState;
|
|
const action = new NullAction();
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState).toEqual(state);
|
|
});
|
|
|
|
it('should start with an the initial state', () => {
|
|
const state = initialState;
|
|
const action = new NullAction();
|
|
const initState = metadataRegistryReducer(undefined, action);
|
|
|
|
expect(initState).toEqual(state);
|
|
});
|
|
|
|
it('should update the current state to change the editSchema to a new schema when MetadataRegistryEditSchemaAction is dispatched', () => {
|
|
const state = editState;
|
|
const action = new MetadataRegistryEditSchemaAction(schema2);
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.editSchema).toEqual(schema2);
|
|
});
|
|
|
|
it('should update the current state to remove the editSchema from the state when MetadataRegistryCancelSchemaAction is dispatched', () => {
|
|
const state = editState;
|
|
const action = new MetadataRegistryCancelSchemaAction();
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.editSchema).toEqual(null);
|
|
});
|
|
|
|
it('should update the current state to add a given schema to the selectedSchemas when MetadataRegistrySelectSchemaAction is dispatched', () => {
|
|
const state = selectState;
|
|
const action = new MetadataRegistrySelectSchemaAction(schema);
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.selectedSchemas).toContain(schema);
|
|
expect(newState.selectedSchemas).toContain(schema2);
|
|
});
|
|
|
|
it('should update the current state to remove a given schema to the selectedSchemas when MetadataRegistryDeselectSchemaAction is dispatched', () => {
|
|
const state = selectState;
|
|
const action = new MetadataRegistryDeselectSchemaAction(schema2);
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.selectedSchemas).toEqual([]);
|
|
});
|
|
|
|
it('should update the current state to remove a given schema to the selectedSchemas when MetadataRegistryDeselectAllSchemaAction is dispatched', () => {
|
|
const state = selectState;
|
|
const action = new MetadataRegistryDeselectAllSchemaAction();
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.selectedSchemas).toEqual([]);
|
|
});
|
|
|
|
it('should update the current state to change the editField to a new field when MetadataRegistryEditFieldAction is dispatched', () => {
|
|
const state = editState;
|
|
const action = new MetadataRegistryEditFieldAction(field2);
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.editField).toEqual(field2);
|
|
});
|
|
|
|
it('should update the current state to remove the editField from the state when MetadataRegistryCancelFieldAction is dispatched', () => {
|
|
const state = editState;
|
|
const action = new MetadataRegistryCancelFieldAction();
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.editField).toEqual(null);
|
|
});
|
|
|
|
it('should update the current state to add a given field to the selectedFields when MetadataRegistrySelectFieldAction is dispatched', () => {
|
|
const state = selectState;
|
|
const action = new MetadataRegistrySelectFieldAction(field);
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.selectedFields).toContain(field);
|
|
expect(newState.selectedFields).toContain(field2);
|
|
});
|
|
|
|
it('should update the current state to remove a given field to the selectedFields when MetadataRegistryDeselectFieldAction is dispatched', () => {
|
|
const state = selectState;
|
|
const action = new MetadataRegistryDeselectFieldAction(field2);
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.selectedFields).toEqual([]);
|
|
});
|
|
|
|
it('should update the current state to remove a given field to the selectedFields when MetadataRegistryDeselectAllFieldAction is dispatched', () => {
|
|
const state = selectState;
|
|
const action = new MetadataRegistryDeselectAllFieldAction();
|
|
const newState = metadataRegistryReducer(state, action);
|
|
|
|
expect(newState.selectedFields).toEqual([]);
|
|
});
|
|
});
|