Update duplicate-action-component

This commit is contained in:
Piotr Pekala 2019-07-25 06:11:51 -07:00
parent 6e23aed7b9
commit 5c99ec64eb
2 changed files with 22 additions and 8 deletions

View File

@ -10,12 +10,15 @@ import { Node } from '../../../../../cartography/models/node';
import { Drawing } from '../../../../../cartography/models/drawing';
import { of } from 'rxjs';
import { DuplicateActionComponent } from './duplicate-action.component';
import { ToasterService } from '../../../../../services/toaster.service';
import { MockedToasterService } from '../../../../../services/toaster.service.spec';
describe('DuplicateActionComponent', () => {
fdescribe('DuplicateActionComponent', () => {
let component: DuplicateActionComponent;
let fixture: ComponentFixture<DuplicateActionComponent>;
let mockedNodeService: MockedNodeService = new MockedNodeService();
let mockedDrawingService: MockedDrawingService = new MockedDrawingService();
let mockedToasterService = new MockedToasterService;
beforeEach(async(() => {
TestBed.configureTestingModule({
@ -24,7 +27,8 @@ describe('DuplicateActionComponent', () => {
{ provide: NodesDataSource, useClass: NodesDataSource },
{ provide: DrawingsDataSource, useClass: DrawingsDataSource },
{ provide: NodeService, useValue: mockedNodeService },
{ provide: DrawingService, useValue: mockedDrawingService }
{ provide: DrawingService, useValue: mockedDrawingService },
{ provide: ToasterService, useValue: mockedToasterService }
],
declarations: [DuplicateActionComponent]
}).compileComponents();
@ -52,7 +56,7 @@ describe('DuplicateActionComponent', () => {
});
it('should call duplicate action in node service', () => {
let node = { node_id: '1' } as Node;
let node = { node_id: '1', status: 'stopped'} as Node;
component.nodes = [node];
component.drawings = [];
spyOn(mockedNodeService, 'duplicate').and.returnValue(of());
@ -65,7 +69,7 @@ describe('DuplicateActionComponent', () => {
it('should call duplicate action in both services', () => {
let drawing = { drawing_id: '1' } as Drawing;
component.drawings = [drawing];
let node = { node_id: '1' } as Node;
let node = { node_id: '1', status: 'stopped' } as Node;
component.nodes = [node];
spyOn(mockedDrawingService, 'duplicate').and.returnValue(of());
spyOn(mockedNodeService, 'duplicate').and.returnValue(of());

View File

@ -7,6 +7,7 @@ import { NodeService } from '../../../../../services/node.service';
import { DrawingService } from '../../../../../services/drawing.service';
import { NodesDataSource } from '../../../../../cartography/datasources/nodes-datasource';
import { DrawingsDataSource } from '../../../../../cartography/datasources/drawings-datasource';
import { ToasterService } from '../../../../../services/toaster.service';
@Component({
selector: 'app-duplicate-action',
@ -22,14 +23,20 @@ export class DuplicateActionComponent {
private nodeService: NodeService,
private nodesDataSource: NodesDataSource,
private drawingService: DrawingService,
private drawingsDataSource: DrawingsDataSource
private drawingsDataSource: DrawingsDataSource,
private toasterService: ToasterService
) {}
duplicate() {
let runningNodes: string = '';
for(let node of this.nodes) {
this.nodeService.duplicate(this.server, node).subscribe((node: Node) => {
this.nodesDataSource.add(node);
});
if (node.status === 'stopped') {
this.nodeService.duplicate(this.server, node).subscribe((node: Node) => {
this.nodesDataSource.add(node);
});
} else {
runningNodes += `${node.name}, `;
}
}
for(let drawing of this.drawings) {
@ -37,5 +44,8 @@ export class DuplicateActionComponent {
this.drawingsDataSource.add(drawing);
})
}
runningNodes = runningNodes.substring(0, runningNodes.length-2);
this.toasterService.error(`Cannot duplicate node data for nodes: ${runningNodes}`);
}
}