Skip to content
This repository has been archived by the owner on Dec 16, 2024. It is now read-only.

dotCMS/core #21436 Add "bring back" button to the compare contentlet screen #1858

Merged
merged 1 commit into from
Jan 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import {
DotContentCompareComponent,
DotContentCompareEvent
Expand All @@ -17,9 +17,7 @@ import { DotCMSContentlet } from '@dotcms/dotcms-models';
import { DotAlertConfirmService } from '@services/dot-alert-confirm';
import { ConfirmationService } from 'primeng/api';
import { DotRouterService } from '@services/dot-router/dot-router.service';
import { MockDotRouterService } from '@tests/dot-router-service.mock';
import { DotVersionableService } from '@services/dot-verionable/dot-versionable.service';
import { DotHttpErrorManagerService } from '@services/dot-http-error-manager/dot-http-error-manager.service';
import { DotIframeService } from '@components/_common/iframe/service/dot-iframe/dot-iframe.service';

const DotContentCompareEventMOCK = {
inode: '1',
Expand Down Expand Up @@ -53,7 +51,7 @@ describe('DotContentCompareComponent', () => {
let contentCompareTableComponent: DotContentCompareTableComponent;
let dotAlertConfirmService: DotAlertConfirmService;
let confirmationService: ConfirmationService;
let dotRouterService: DotRouterService;
let dotIframeService: DotIframeService;

const messageServiceMock = new MockDotMessageService({
Confirm: 'Confirm',
Expand All @@ -67,25 +65,12 @@ describe('DotContentCompareComponent', () => {
imports: [DotContentCompareModule],
providers: [
{ provide: DotMessageService, useValue: messageServiceMock },
{ provide: DotRouterService, useClass: MockDotRouterService },
DotAlertConfirmService,
ConfirmationService,
{
provide: DotVersionableService,
provide: DotIframeService,
useValue: {
bringBack: jasmine.createSpy().and.returnValue(of({ inode: '123' }))
}
},
{
provide: DotHttpErrorManagerService,
useValue: {
handle: jasmine.createSpy().and.returnValue(
of({
status: {
toString: () => ''
}
})
)
run: jasmine.createSpy()
}
}
]
Expand All @@ -98,7 +83,7 @@ describe('DotContentCompareComponent', () => {
dotContentCompareStore = TestBed.inject(DotContentCompareStore);
dotAlertConfirmService = TestBed.inject(DotAlertConfirmService);
confirmationService = TestBed.inject(ConfirmationService);
dotRouterService = TestBed.inject(DotRouterService);
dotIframeService = TestBed.inject(DotIframeService);

hostComponent = hostFixture.componentInstance;
hostComponent.data = DotContentCompareEventMOCK;
Expand Down Expand Up @@ -141,7 +126,10 @@ describe('DotContentCompareComponent', () => {
'Are you sure you would like to replace your working version with this contentlet version?'
});

expect(dotRouterService.goToURL).toHaveBeenCalledOnceWith('/c/content/123');
expect(dotIframeService.run).toHaveBeenCalledOnceWith({
name: 'getVersionBack',
args: ['123']
});
expect(hostComponent.close.emit).toHaveBeenCalledOnceWith(true);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,9 @@ import {
DotContentCompareStore
} from '@components/dot-content-compare/store/dot-content-compare.store';
import { Observable } from 'rxjs';
import { catchError, filter, map, take } from 'rxjs/operators';
import { DotAlertConfirmService } from '@services/dot-alert-confirm';
import { DotMessageService } from '@services/dot-message/dot-messages.service';
import {
DotVersionable,
DotVersionableService
} from '@services/dot-verionable/dot-versionable.service';
import { DotRouterService } from '@services/dot-router/dot-router.service';
import { DotHttpErrorManagerService } from '@services/dot-http-error-manager/dot-http-error-manager.service';
import { HttpErrorResponse } from '@angular/common/http';
import { DotIframeService } from '@components/_common/iframe/service/dot-iframe/dot-iframe.service';

export interface DotContentCompareEvent {
inode: string;
Expand All @@ -39,10 +32,8 @@ export class DotContentCompareComponent {
constructor(
private store: DotContentCompareStore,
private dotAlertConfirmService: DotAlertConfirmService,
private dotVersionableService: DotVersionableService,
private dotRouterService: DotRouterService,
private dotMessageService: DotMessageService,
private dotHttpErrorManagerService: DotHttpErrorManagerService
private dotIframeService: DotIframeService
) {}

/**
Expand All @@ -53,21 +44,8 @@ export class DotContentCompareComponent {
bringBack(inode: string) {
this.dotAlertConfirmService.confirm({
accept: () => {
this.dotVersionableService
.bringBack(inode)
.pipe(
take(1),
catchError((err: HttpErrorResponse) => {
return this.dotHttpErrorManagerService
.handle(err)
.pipe(map(() => null));
}),
filter((version: DotVersionable) => version != null)
)
.subscribe((version: DotVersionable) => {
this.dotRouterService.goToURL(`/c/content/${version.inode}`);
this.close.emit(true);
});
this.dotIframeService.run({ name: 'getVersionBack', args: [inode] });
this.close.emit(true);
},
reject: () => {},
header: this.dotMessageService.get('Confirm'),
Expand Down