From 4106e7cb2182b4b5582f103173b08ce1b9afdfea Mon Sep 17 00:00:00 2001 From: lotte Date: Tue, 25 Jun 2019 11:17:22 +0200 Subject: [PATCH] fixed remaining issues and tests --- .../search-service/search.service.ts | 3 +- .../config-response-parsing.service.spec.ts | 4 +- .../integration-response-parsing.service.ts | 2 +- .../dso-selector.component.spec.ts | 8 +--- .../claimed-task-actions.component.spec.ts | 6 +-- .../claimed-task-actions.component.ts | 1 - .../mydspace-actions-service.factory.ts | 41 +++++++++++++++++++ .../mydspace-actions/mydspace-actions.ts | 5 ++- .../pool-task-actions.component.spec.ts | 1 - .../pool-task/pool-task-actions.component.ts | 1 - 10 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 src/app/shared/mydspace-actions/mydspace-actions-service.factory.ts diff --git a/src/app/+search-page/search-service/search.service.ts b/src/app/+search-page/search-service/search.service.ts index 0646c2c089..86611cc87b 100644 --- a/src/app/+search-page/search-service/search.service.ts +++ b/src/app/+search-page/search-service/search.service.ts @@ -295,8 +295,7 @@ export class SearchService implements OnDestroy { const scopeObject: Observable> = this.dspaceObjectService.findById(scopeId).pipe(getSucceededRemoteData()); const scopeList: Observable = scopeObject.pipe( switchMap((dsoRD: RemoteData) => { - console.log((dsoRD.payload as any).type); - if ((dsoRD.payload as any).type === Community.type) { + if ((dsoRD.payload as any).type === Community.type.value) { const community: Community = dsoRD.payload as Community; return observableCombineLatest(community.subcommunities, community.collections).pipe( map(([subCommunities, collections]) => { diff --git a/src/app/core/config/config-response-parsing.service.spec.ts b/src/app/core/config/config-response-parsing.service.spec.ts index 7c69f1bdb3..90dd1670b8 100644 --- a/src/app/core/config/config-response-parsing.service.spec.ts +++ b/src/app/core/config/config-response-parsing.service.spec.ts @@ -8,8 +8,8 @@ import { Store } from '@ngrx/store'; import { CoreState } from '../core.reducers'; import { PaginatedList } from '../data/paginated-list'; import { PageInfo } from '../shared/page-info.model'; -import { NormalizedSubmissionDefinitionsModel } from './models/normalized-config-submission-definitions.model'; import { NormalizedSubmissionSectionModel } from './models/normalized-config-submission-section.model'; +import { NormalizedSubmissionDefinitionModel } from './models/normalized-config-submission-definition.model'; describe('ConfigResponseParsingService', () => { let service: ConfigResponseParsingService; @@ -173,7 +173,7 @@ describe('ConfigResponseParsingService', () => { self: 'https://rest.api/config/submissiondefinitions/traditional/sections' }); const definitions = - Object.assign(new NormalizedSubmissionDefinitionsModel(), { + Object.assign(new NormalizedSubmissionDefinitionModel(), { isDefault: true, name: 'traditional', type: 'submissiondefinition', diff --git a/src/app/core/integration/integration-response-parsing.service.ts b/src/app/core/integration/integration-response-parsing.service.ts index a98d206402..8cc0f8d252 100644 --- a/src/app/core/integration/integration-response-parsing.service.ts +++ b/src/app/core/integration/integration-response-parsing.service.ts @@ -42,7 +42,7 @@ export class IntegrationResponseParsingService extends BaseResponseParsingServic protected processResponse(data: PaginatedList): any { const returnList = Array.of(); data.page.forEach((item, index) => { - if (item.type === AuthorityValue.type) { + if (item.type === AuthorityValue.type.value) { data.page[index] = Object.assign(new AuthorityValue(), item); } }); diff --git a/src/app/shared/dso-selector/dso-selector/dso-selector.component.spec.ts b/src/app/shared/dso-selector/dso-selector/dso-selector.component.spec.ts index e33d5d9ba1..234f13f4b1 100644 --- a/src/app/shared/dso-selector/dso-selector/dso-selector.component.spec.ts +++ b/src/app/shared/dso-selector/dso-selector/dso-selector.component.spec.ts @@ -5,10 +5,8 @@ import { DSOSelectorComponent } from './dso-selector.component'; import { SearchService } from '../../../+search-page/search-service/search.service'; import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model'; import { PaginatedSearchOptions } from '../../../+search-page/paginated-search-options.model'; -import { RemoteData } from '../../../core/data/remote-data'; import { ItemSearchResult } from '../../object-collection/shared/item-search-result.model'; import { Item } from '../../../core/shared/item.model'; -import { of as observableOf } from 'rxjs'; import { PaginatedList } from '../../../core/data/paginated-list'; import { MetadataValue } from '../../../core/shared/metadata.models'; import { createSuccessfulRemoteDataObject$ } from '../../testing/utils'; @@ -51,7 +49,7 @@ describe('DSOSelectorComponent', () => { component = fixture.componentInstance; debugElement = fixture.debugElement; component.currentDSOId = currentDSOId; - component.value = type; + component.type = type; fixture.detectChanges(); }); @@ -69,6 +67,4 @@ describe('DSOSelectorComponent', () => { expect(searchService.search).toHaveBeenCalledWith(searchOptions); }); - -}) -; +}); diff --git a/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.spec.ts b/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.spec.ts index 30f1d7775f..5084b3e9fe 100644 --- a/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.spec.ts +++ b/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.spec.ts @@ -11,13 +11,13 @@ import { MockTranslateLoader } from '../../mocks/mock-translate-loader'; import { NotificationsService } from '../../notifications/notifications.service'; import { NotificationsServiceStub } from '../../testing/notifications-service-stub'; import { RouterStub } from '../../testing/router-stub'; -import { RemoteData } from '../../../core/data/remote-data'; import { Item } from '../../../core/shared/item.model'; import { ClaimedTaskDataService } from '../../../core/tasks/claimed-task-data.service'; import { ClaimedTaskActionsComponent } from './claimed-task-actions.component'; import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model'; import { WorkflowItem } from '../../../core/submission/models/workflowitem.model'; import { createSuccessfulRemoteDataObject } from '../../testing/utils'; +import { CoreModule } from '../../../core/core.module'; let component: ClaimedTaskActionsComponent; let fixture: ComponentFixture; @@ -26,7 +26,7 @@ let mockObject: ClaimedTask; let notificationsServiceStub: NotificationsServiceStub; let router: RouterStub; -const mockDataService = jasmine.createSpyObj('PoolTaskDataService', { +const mockDataService = jasmine.createSpyObj('ClaimedTaskDataService', { approveTask: jasmine.createSpy('approveTask'), rejectTask: jasmine.createSpy('rejectTask'), returnToPoolTask: jasmine.createSpy('returnToPoolTask'), @@ -66,7 +66,7 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem); mockObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem), id: '1234' }); -fdescribe('ClaimedTaskActionsComponent', () => { +describe('ClaimedTaskActionsComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ diff --git a/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.ts b/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.ts index c37a7eb4db..0ddb24ec2f 100644 --- a/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.ts +++ b/src/app/shared/mydspace-actions/claimed-task/claimed-task-actions.component.ts @@ -12,7 +12,6 @@ import { isNotUndefined } from '../../empty.util'; import { WorkflowItem } from '../../../core/submission/models/workflowitem.model'; import { RemoteData } from '../../../core/data/remote-data'; import { MyDSpaceActionsComponent } from '../mydspace-actions'; -import { ResourceType } from '../../../core/shared/resource-type'; import { NotificationsService } from '../../notifications/notifications.service'; /** diff --git a/src/app/shared/mydspace-actions/mydspace-actions-service.factory.ts b/src/app/shared/mydspace-actions/mydspace-actions-service.factory.ts new file mode 100644 index 0000000000..48a0630778 --- /dev/null +++ b/src/app/shared/mydspace-actions/mydspace-actions-service.factory.ts @@ -0,0 +1,41 @@ +import { DataService } from '../../core/data/data.service'; +import { ResourceType } from '../../core/shared/resource-type'; +import { WorkspaceitemDataService } from '../../core/submission/workspaceitem-data.service'; +import { ClaimedTaskDataService } from '../../core/tasks/claimed-task-data.service'; +import { PoolTaskDataService } from '../../core/tasks/pool-task-data.service'; +import { WorkflowItemDataService } from '../../core/submission/workflowitem-data.service'; +import { CacheableObject } from '../../core/cache/object-cache.reducer'; +import { ItemDataService } from '../../core/data/item-data.service'; +import { Item } from '../../core/shared/item.model'; +import { PoolTask } from '../../core/tasks/models/pool-task-object.model'; +import { ClaimedTask } from '../../core/tasks/models/claimed-task-object.model'; +import { WorkspaceItem } from '../../core/submission/models/workspaceitem.model'; +import { WorkflowItem } from '../../core/submission/models/workflowitem.model'; + +/** + * Class to return DataService for given ResourceType + */ +export class MydspaceActionsServiceFactory> { + public getConstructor(type: ResourceType): TService { + switch (type) { + case Item.type: { + return ItemDataService as any; + } + case WorkspaceItem.type: { + return WorkspaceitemDataService as any; + } + case WorkflowItem.type: { + return WorkflowItemDataService as any; + } + case ClaimedTask.type: { + return ClaimedTaskDataService as any; + } + case PoolTask.type: { + return PoolTaskDataService as any; + } + default: { + return undefined; + } + } + } +} diff --git a/src/app/shared/mydspace-actions/mydspace-actions.ts b/src/app/shared/mydspace-actions/mydspace-actions.ts index 2e86726be7..8e465644c3 100644 --- a/src/app/shared/mydspace-actions/mydspace-actions.ts +++ b/src/app/shared/mydspace-actions/mydspace-actions.ts @@ -3,6 +3,7 @@ import { Injector, Input } from '@angular/core'; import { find } from 'rxjs/operators'; +import { MydspaceActionsServiceFactory } from './mydspace-actions-service.factory'; import { RemoteData } from '../../core/data/remote-data'; import { DataService } from '../../core/data/data.service'; import { DSpaceObject } from '../../core/shared/dspace-object.model'; @@ -10,7 +11,6 @@ import { ResourceType } from '../../core/shared/resource-type'; import { NotificationOptions } from '../notifications/models/notification-options.model'; import { NotificationsService } from '../notifications/notifications.service'; import { TranslateService } from '@ngx-translate/core'; -import { getMapsToType } from '../../core/cache/builders/build-decorators'; /** * Abstract class for all different representations of mydspace actions @@ -42,7 +42,8 @@ export abstract class MyDSpaceActionsComponent(); + this.objectDataService = injector.get(factory.getConstructor(objectType)); } /** diff --git a/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.spec.ts b/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.spec.ts index 151f0383f4..c06cec3422 100644 --- a/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.spec.ts +++ b/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.spec.ts @@ -11,7 +11,6 @@ import { MockTranslateLoader } from '../../mocks/mock-translate-loader'; import { NotificationsService } from '../../notifications/notifications.service'; import { NotificationsServiceStub } from '../../testing/notifications-service-stub'; import { RouterStub } from '../../testing/router-stub'; -import { RemoteData } from '../../../core/data/remote-data'; import { Item } from '../../../core/shared/item.model'; import { PoolTaskDataService } from '../../../core/tasks/pool-task-data.service'; import { PoolTaskActionsComponent } from './pool-task-actions.component'; diff --git a/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.ts b/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.ts index 2e32541e09..2124c0d9b6 100644 --- a/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.ts +++ b/src/app/shared/mydspace-actions/pool-task/pool-task-actions.component.ts @@ -12,7 +12,6 @@ import { PoolTask } from '../../../core/tasks/models/pool-task-object.model'; import { PoolTaskDataService } from '../../../core/tasks/pool-task-data.service'; import { isNotUndefined } from '../../empty.util'; import { MyDSpaceActionsComponent } from '../mydspace-actions'; -import { ResourceType } from '../../../core/shared/resource-type'; import { NotificationsService } from '../../notifications/notifications.service'; /**