diff --git a/src/app/core/feedback/feedback-data.service.spec.ts b/src/app/core/feedback/feedback-data.service.spec.ts index f3135a79da..adf42bab63 100644 --- a/src/app/core/feedback/feedback-data.service.spec.ts +++ b/src/app/core/feedback/feedback-data.service.spec.ts @@ -1,5 +1,3 @@ -import { of as observableOf } from 'rxjs'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { FeedbackDataService } from './feedback-data.service'; import { HALLink } from '../shared/hal-link.model'; import { Item } from '../shared/item.model'; @@ -33,8 +31,6 @@ describe('FeedbackDataService', () => { page: '/home' }); - const linkName = 'feedbacks'; - function initTestService(): FeedbackDataService { bundleLink = '/items/0fdc0cd7-ff8c-433d-b33c-9b56108abc07/bundles'; @@ -92,12 +88,12 @@ describe('FeedbackDataService', () => { describe('createFeedback', () => { beforeEach(() => { - spyOn(service, 'postToEndpoint'); + spyOn(service, 'create'); service.createFeedback(feedbackPayload); }); - it('should call postToEndpoint with the linkName and payload', () => { - expect(service.postToEndpoint).toHaveBeenCalledWith(linkName, feedbackPayload); + it('should call postToEndpoint with the payload', () => { + expect(service.create).toHaveBeenCalledWith(feedbackPayload); }); }); diff --git a/src/app/core/feedback/feedback-data.service.ts b/src/app/core/feedback/feedback-data.service.ts index bc9cfd66c4..dc008e46ea 100644 --- a/src/app/core/feedback/feedback-data.service.ts +++ b/src/app/core/feedback/feedback-data.service.ts @@ -1,8 +1,5 @@ import { Injectable } from '@angular/core'; -import { AuthService } from '../auth/auth.service'; import { Observable } from 'rxjs'; -import { map, filter, distinctUntilChanged} from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; import { DataService } from '../data/data.service'; import { Feedback } from './models/feedback.model'; import { FEEDBACK } from './models/feedback.resource-type'; @@ -15,9 +12,7 @@ import { HALEndpointService } from 'src/app/core/shared/hal-endpoint.service'; import { NotificationsService } from 'src/app/shared/notifications/notifications.service'; import { HttpClient } from '@angular/common/http'; import { DSOChangeAnalyzer } from 'src/app/core/data/dso-change-analyzer.service'; -import { getFirstSucceededRemoteData, getRemoteDataPayload, getFirstCompletedRemoteData } from 'src/app/core/shared/operators'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { PostRequest } from 'src/app/core/data/request.models'; +import { getFirstSucceededRemoteData, getRemoteDataPayload } from 'src/app/core/shared/operators'; import { RemoteData } from 'src/app/core/data/remote-data'; /** @@ -55,40 +50,12 @@ export class FeedbackDataService extends DataService { /** * Create feedback - * @param uuid string the id of the feedback - * @return Observable + * @param payload feedback to be sent + * @return Observable * server response */ - createFeedback(payoload: Feedback): Observable> { - return this.postToEndpoint(this.linkPath, payoload); - } - - /** - * Make a new post request - * - * @param linkName - * The endpoint link name - * @param body - * The post request body - * @param options - * The [HttpOptions] object - * @return Observable - * server response - */ - public postToEndpoint(linkName: string, body: any, options?: HttpOptions): Observable> { - const requestId = this.requestService.generateRequestId(); - this.halService.getEndpoint(linkName).pipe( - filter((href: string) => isNotEmpty(href)), - distinctUntilChanged(), - map((endpointURL: string) => { - const request = new PostRequest(requestId, endpointURL, body, options); - return this.requestService.send(request); - }), - ).subscribe(); - - return this.rdbService.buildFromRequestUUID(requestId).pipe( - getFirstCompletedRemoteData(), - ); + createFeedback(payload: Feedback): Observable> { + return this.create(payload); } } diff --git a/src/app/info/feedback/feedback-form/feedback-form.component.spec.ts b/src/app/info/feedback/feedback-form/feedback-form.component.spec.ts index fb71abda95..b23940537e 100644 --- a/src/app/info/feedback/feedback-form/feedback-form.component.spec.ts +++ b/src/app/info/feedback/feedback-form/feedback-form.component.spec.ts @@ -1,5 +1,5 @@ -import { EPersonMock } from './../../../shared/testing/eperson.mock'; -import { FeedbackDataService } from './../../../core/feedback/feedback-data.service'; +import { EPersonMock } from '../../../shared/testing/eperson.mock'; +import { FeedbackDataService } from '../../../core/feedback/feedback-data.service'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { FeedbackFormComponent } from './feedback-form.component'; import { TranslateModule } from '@ngx-translate/core'; @@ -22,7 +22,7 @@ describe('FeedbackFormComponent', () => { let de: DebugElement; const notificationService = new NotificationsServiceStub(); const feedbackDataServiceStub = jasmine.createSpyObj('feedbackDataService', { - createFeedback: of(new Feedback()) + create: of(new Feedback()) }); const authService: AuthServiceStub = Object.assign(new AuthServiceStub(), { getAuthenticatedUserFromStore: () => { @@ -82,7 +82,7 @@ describe('FeedbackFormComponent', () => { it('on submit should call createFeedback of feedbackDataServiceStub service', () => { component.createFeedback(); fixture.detectChanges(); - expect(feedbackDataServiceStub.createFeedback).toHaveBeenCalled(); + expect(feedbackDataServiceStub.create).toHaveBeenCalled(); }); }); diff --git a/src/app/info/feedback/feedback-form/feedback-form.component.ts b/src/app/info/feedback/feedback-form/feedback-form.component.ts index 2878a2b754..552959d7f9 100644 --- a/src/app/info/feedback/feedback-form/feedback-form.component.ts +++ b/src/app/info/feedback/feedback-form/feedback-form.component.ts @@ -1,6 +1,6 @@ -import { RemoteData } from './../../../core/data/remote-data'; -import { NoContent } from './../../../core/shared/NoContent.model'; -import { FeedbackDataService } from './../../../core/feedback/feedback-data.service'; +import { RemoteData } from '../../../core/data/remote-data'; +import { NoContent } from '../../../core/shared/NoContent.model'; +import { FeedbackDataService } from '../../../core/feedback/feedback-data.service'; import { Component, OnInit } from '@angular/core'; import { RouteService } from 'src/app/core/services/route.service'; import { FormBuilder, Validators } from '@angular/forms'; @@ -8,6 +8,7 @@ import { NotificationsService } from 'src/app/shared/notifications/notifications import { TranslateService } from '@ngx-translate/core'; import { AuthService } from 'src/app/core/auth/auth.service'; import { EPerson } from '../../../core/eperson/models/eperson.model'; +import { getFirstCompletedRemoteData } from '../../../core/shared/operators'; @Component({ selector: 'ds-feedback-form', @@ -58,12 +59,10 @@ export class FeedbackFormComponent implements OnInit { * Function to create the feedback from form values */ createFeedback(): void { - this.feedbackDataService.createFeedback(this.feedbackForm.value).subscribe((response: RemoteData) => { + this.feedbackDataService.create(this.feedbackForm.value).pipe(getFirstCompletedRemoteData()).subscribe((response: RemoteData) => { if (response.isSuccess) { this.notificationsService.success(this.translate.instant('info.feedback.create.success')); this.feedbackForm.reset(); - } else { - this.notificationsService.error(response.errorMessage); } }); }