mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-19 07:53:02 +00:00
55990: Fix issues to move item component after master merge
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
import { fadeIn, fadeInOut } from '../../shared/animations/fade';
|
|
||||||
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
|
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import { Observable } from 'rxjs/Observable';
|
import {fadeIn, fadeInOut} from '../../shared/animations/fade';
|
||||||
|
import {Observable} from 'rxjs';
|
||||||
import {RemoteData} from '../../core/data/remote-data';
|
import {RemoteData} from '../../core/data/remote-data';
|
||||||
import {Item} from '../../core/shared/item.model';
|
import {Item} from '../../core/shared/item.model';
|
||||||
|
import {map} from 'rxjs/operators';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-edit-item-page',
|
selector: 'ds-edit-item-page',
|
||||||
@@ -28,7 +29,7 @@ export class EditItemPageComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.itemRD$ = this.route.data.map((data) => data.item);
|
this.itemRD$ = this.route.data.pipe(map((data) => data.item));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -10,14 +10,13 @@ import {ItemMoveComponent} from './item-move.component';
|
|||||||
import {NotificationsServiceStub} from '../../../shared/testing/notifications-service-stub';
|
import {NotificationsServiceStub} from '../../../shared/testing/notifications-service-stub';
|
||||||
import {NotificationsService} from '../../../shared/notifications/notifications.service';
|
import {NotificationsService} from '../../../shared/notifications/notifications.service';
|
||||||
import {SearchService} from '../../../+search-page/search-service/search.service';
|
import {SearchService} from '../../../+search-page/search-service/search.service';
|
||||||
import {Observable} from 'rxjs/Observable';
|
import {of as observableOf} from 'rxjs';
|
||||||
import 'rxjs/add/observable/of';
|
|
||||||
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
|
|
||||||
import {FormsModule} from '@angular/forms';
|
import {FormsModule} from '@angular/forms';
|
||||||
import {ItemDataService} from '../../../core/data/item-data.service';
|
import {ItemDataService} from '../../../core/data/item-data.service';
|
||||||
import {RestResponse} from '../../../core/cache/response-cache.models';
|
import {RestResponse} from '../../../core/cache/response-cache.models';
|
||||||
import {RemoteData} from '../../../core/data/remote-data';
|
import {RemoteData} from '../../../core/data/remote-data';
|
||||||
import {PaginatedList} from '../../../core/data/paginated-list';
|
import {PaginatedList} from '../../../core/data/paginated-list';
|
||||||
|
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
|
||||||
|
|
||||||
let comp: ItemMoveComponent;
|
let comp: ItemMoveComponent;
|
||||||
let fixture: ComponentFixture<ItemMoveComponent>;
|
let fixture: ComponentFixture<ItemMoveComponent>;
|
||||||
@@ -34,15 +33,15 @@ const routerStub = Object.assign(new RouterStub(), {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const mockItemDataService = jasmine.createSpyObj({
|
const mockItemDataService = jasmine.createSpyObj({
|
||||||
moveToCollection: Observable.of(new RestResponse(true, '200'))
|
moveToCollection: observableOf(new RestResponse(true, '200'))
|
||||||
});
|
});
|
||||||
|
|
||||||
const mockItemDataServiceFail = jasmine.createSpyObj({
|
const mockItemDataServiceFail = jasmine.createSpyObj({
|
||||||
moveToCollection: Observable.of(new RestResponse(false, '500'))
|
moveToCollection: observableOf(new RestResponse(false, '500'))
|
||||||
});
|
});
|
||||||
|
|
||||||
const routeStub = {
|
const routeStub = {
|
||||||
data: Observable.of({
|
data: observableOf({
|
||||||
item: new RemoteData(false, false, true, null, {
|
item: new RemoteData(false, false, true, null, {
|
||||||
id: 'item1'
|
id: 'item1'
|
||||||
})
|
})
|
||||||
@@ -51,7 +50,7 @@ const routeStub = {
|
|||||||
|
|
||||||
const mockSearchService = {
|
const mockSearchService = {
|
||||||
search: () => {
|
search: () => {
|
||||||
return Observable.of(new RemoteData(false, false, true, null,
|
return observableOf(new RemoteData(false, false, true, null,
|
||||||
new PaginatedList(null, [
|
new PaginatedList(null, [
|
||||||
{
|
{
|
||||||
dspaceObject: {
|
dspaceObject: {
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
import {Component, OnInit} from '@angular/core';
|
import {Component, OnInit} from '@angular/core';
|
||||||
import {SearchService} from '../../../+search-page/search-service/search.service';
|
import {SearchService} from '../../../+search-page/search-service/search.service';
|
||||||
import {Observable} from 'rxjs/Observable';
|
import {first, map} from 'rxjs/operators';
|
||||||
import {map} from 'rxjs/operators';
|
|
||||||
import {DSpaceObjectType} from '../../../core/shared/dspace-object-type.model';
|
import {DSpaceObjectType} from '../../../core/shared/dspace-object-type.model';
|
||||||
import {SearchOptions} from '../../../+search-page/search-options.model';
|
import {SearchOptions} from '../../../+search-page/search-options.model';
|
||||||
import {RemoteData} from '../../../core/data/remote-data';
|
import {RemoteData} from '../../../core/data/remote-data';
|
||||||
@@ -16,6 +15,8 @@ import {getSucceededRemoteData} from '../../../core/shared/operators';
|
|||||||
import {ItemDataService} from '../../../core/data/item-data.service';
|
import {ItemDataService} from '../../../core/data/item-data.service';
|
||||||
import {RestResponse} from '../../../core/cache/response-cache.models';
|
import {RestResponse} from '../../../core/cache/response-cache.models';
|
||||||
import {getItemEditPath} from '../../item-page-routing.module';
|
import {getItemEditPath} from '../../item-page-routing.module';
|
||||||
|
import {Observable} from 'rxjs';
|
||||||
|
import {of as observableOf} from 'rxjs';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-item-move',
|
selector: 'ds-item-move',
|
||||||
@@ -25,10 +26,13 @@ import {getItemEditPath} from '../../item-page-routing.module';
|
|||||||
* Component that handles the moving of an item to a different collection
|
* Component that handles the moving of an item to a different collection
|
||||||
*/
|
*/
|
||||||
export class ItemMoveComponent implements OnInit {
|
export class ItemMoveComponent implements OnInit {
|
||||||
|
/**
|
||||||
|
* TODO: There is currently no backend support to change the owningCollection and inherit policies,
|
||||||
|
* TODO: when this is added, the inherit policies option should be used.
|
||||||
|
*/
|
||||||
inheritPolicies = false;
|
inheritPolicies = false;
|
||||||
itemRD$: Observable<RemoteData<Item>>;
|
itemRD$: Observable<RemoteData<Item>>;
|
||||||
collectionSearchResults: Observable<any[]> = Observable.of([]);
|
collectionSearchResults: Observable<any[]> = observableOf([]);
|
||||||
selectedCollection: string;
|
selectedCollection: string;
|
||||||
|
|
||||||
selectedCollectionId: string;
|
selectedCollectionId: string;
|
||||||
@@ -43,8 +47,8 @@ export class ItemMoveComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.itemRD$ = this.route.data.map((data) => data.item).pipe(getSucceededRemoteData()) as Observable<RemoteData<Item>>;
|
this.itemRD$ = this.route.data.pipe(map((data) => data.item),getSucceededRemoteData()) as Observable<RemoteData<Item>>;
|
||||||
this.itemRD$.first().subscribe((rd) => {
|
this.itemRD$.subscribe((rd) => {
|
||||||
this.itemId = rd.payload.id;
|
this.itemId = rd.payload.id;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -67,7 +71,8 @@ export class ItemMoveComponent implements OnInit {
|
|||||||
this.collectionSearchResults = this.searchService.search(new SearchOptions({
|
this.collectionSearchResults = this.searchService.search(new SearchOptions({
|
||||||
dsoType: DSpaceObjectType.COLLECTION,
|
dsoType: DSpaceObjectType.COLLECTION,
|
||||||
query: query
|
query: query
|
||||||
})).first().pipe(
|
})).pipe(
|
||||||
|
first(),
|
||||||
map((rd: RemoteData<PaginatedList<SearchResult<DSpaceObject>>>) => {
|
map((rd: RemoteData<PaginatedList<SearchResult<DSpaceObject>>>) => {
|
||||||
return rd.payload.page.map((searchResult) => {
|
return rd.payload.page.map((searchResult) => {
|
||||||
return {
|
return {
|
||||||
@@ -100,7 +105,7 @@ export class ItemMoveComponent implements OnInit {
|
|||||||
* Moves the item to a new collection based on the selected collection
|
* Moves the item to a new collection based on the selected collection
|
||||||
*/
|
*/
|
||||||
moveCollection() {
|
moveCollection() {
|
||||||
this.itemDataService.moveToCollection(this.itemId, this.selectedCollectionId).first().subscribe(
|
this.itemDataService.moveToCollection(this.itemId, this.selectedCollectionId).pipe(first()).subscribe(
|
||||||
(response: RestResponse) => {
|
(response: RestResponse) => {
|
||||||
this.router.navigate([getItemEditPath(this.itemId)]);
|
this.router.navigate([getItemEditPath(this.itemId)]);
|
||||||
if (response.isSuccessful) {
|
if (response.isSuccessful) {
|
||||||
|
@@ -4,11 +4,11 @@ import {ItemOperationComponent} from './item-operation.component';
|
|||||||
import {TranslateModule} from '@ngx-translate/core';
|
import {TranslateModule} from '@ngx-translate/core';
|
||||||
import {By} from '@angular/platform-browser';
|
import {By} from '@angular/platform-browser';
|
||||||
|
|
||||||
describe('ItemOperationComponent', () => {
|
|
||||||
const itemOperation: ItemOperation = new ItemOperation('key1', 'url1');
|
const itemOperation: ItemOperation = new ItemOperation('key1', 'url1');
|
||||||
|
|
||||||
let fixture;
|
let fixture;
|
||||||
let comp;
|
let comp;
|
||||||
|
describe('ItemOperationComponent', () => {
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
|
|
||||||
import {distinctUntilChanged, map, filter} from 'rxjs/operators';
|
import {distinctUntilChanged, map, filter} from 'rxjs/operators';
|
||||||
import { Injectable } from '@angular/core';import {Store} from '@ngrx/store';
|
import {Store} from '@ngrx/store';
|
||||||
import {Observable} from 'rxjs';
|
import {Observable} from 'rxjs';
|
||||||
import {isNotEmpty, isNotEmptyOperator} from '../../shared/empty.util';
|
import {isNotEmpty, isNotEmptyOperator} from '../../shared/empty.util';
|
||||||
import {BrowseService} from '../browse/browse.service';
|
import {BrowseService} from '../browse/browse.service';
|
||||||
@@ -15,7 +14,7 @@ import {URLCombiner} from '../url-combiner/url-combiner';
|
|||||||
import {DataService} from './data.service';
|
import {DataService} from './data.service';
|
||||||
import {RequestService} from './request.service';
|
import {RequestService} from './request.service';
|
||||||
import {HALEndpointService} from '../shared/hal-endpoint.service';
|
import {HALEndpointService} from '../shared/hal-endpoint.service';
|
||||||
import {FindAllOptions, PostRequest, RestRequest} from './request.models';
|
import {FindAllOptions, PostRequest, PutRequest, RestRequest} from './request.models';
|
||||||
import {RestResponse} from '../cache/response-cache.models';
|
import {RestResponse} from '../cache/response-cache.models';
|
||||||
import {configureRequest, getResponseFromSelflink} from '../shared/operators';
|
import {configureRequest, getResponseFromSelflink} from '../shared/operators';
|
||||||
import {ResponseCacheEntry} from '../cache/response-cache.reducer';
|
import {ResponseCacheEntry} from '../cache/response-cache.reducer';
|
||||||
@@ -62,7 +61,7 @@ export class ItemDataService extends DataService<NormalizedItem, Item> {
|
|||||||
return this.getMoveItemEndpoint(itemId, collectionId).pipe(
|
return this.getMoveItemEndpoint(itemId, collectionId).pipe(
|
||||||
// isNotEmptyOperator(),
|
// isNotEmptyOperator(),
|
||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
map((endpointURL: string) => new PostRequest(this.requestService.generateRequestId(), endpointURL)),
|
map((endpointURL: string) => new PutRequest(this.requestService.generateRequestId(), endpointURL)),
|
||||||
configureRequest(this.requestService),
|
configureRequest(this.requestService),
|
||||||
map((request: RestRequest) => request.href),
|
map((request: RestRequest) => request.href),
|
||||||
getResponseFromSelflink(this.responseCache),
|
getResponseFromSelflink(this.responseCache),
|
||||||
|
Reference in New Issue
Block a user