Skip to content

Commit dfc8530

Browse files
committed
merged develop
2 parents e392310 + 3b90bc1 commit dfc8530

17 files changed

+183
-15
lines changed

app/controllers/ApiRouter.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,6 @@ class ApiRouter @Inject()(irController: InstanceRegistryController, sysControlle
4949
case POST(p"/labelInstance" ? q"instanceID=$instanceID"& q"label=$label") => irController.labelInstance(instanceID, label)
5050
case POST(p"/postUser") => irController.postUser()
5151
case POST(p"/deleteUser" ? q"userID=$userID") => irController.deleteUser(userID)
52+
case POST(p"/deleteLabel" ? q"instanceID=$instanceID"& q"label=$label") => irController.deleteLabel(instanceID, label)
5253
}
5354
}

app/controllers/InstanceRegistryController.scala

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,5 +321,22 @@ class InstanceRegistryController @Inject()(implicit system: ActorSystem, mat: Ma
321321
}(myExecutionContext)
322322
}
323323

324+
def deleteLabel(instanceID: String, label: String): Action[AnyContent] = authAction.async
325+
{
326+
request =>
327+
ws.url(instanceRegistryUri + "/instances/" + instanceID + "/label/" + label + "/delete")
328+
.withHttpHeaders(("Authorization", s"Bearer ${request.token}"))
329+
.post("")
330+
.map { response =>
331+
response.status match {
332+
// scalastyle:off magic.number
333+
case 202 =>
334+
// scalastyle:on magic.number
335+
Ok(response.body)
336+
case x: Any =>
337+
new Status(x)
338+
}
339+
}(myExecutionContext)
340+
}
324341
}
325342

client/src/app/api/api/api.service.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import {
4141
NEW_LABEL_INSTANCE,
4242
INSTANCE_NETWORK,
4343
DELETE_USER,
44+
DELETE_LABEL,
4445
RECONNECT,
4546
AUTH
4647
} from '../variables';
@@ -197,6 +198,17 @@ export class ApiService {
197198
return this.postAction(DELETE_INSTANCE, instanceId);
198199
}
199200

201+
/**
202+
* Delete a label
203+
* @param InstanceId
204+
* @param labelName
205+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
206+
* @param reportProgress flag to report request and response progress.
207+
*/
208+
public deleteLabel(instanceId: string, labelName: string) {
209+
return this.postLabel(DELETE_LABEL, instanceId, labelName);
210+
}
211+
200212
/**
201213
* Create an Instance
202214
* @param instanceId

client/src/app/api/variables.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export const RECONNECT = 'api/reconnectInstance';
3535
export const AUTH = 'api/authenticate';
3636
export const NEW_LABEL_INSTANCE = 'api/labelInstance';
3737
export const DELETE_USER = 'api/deleteUser';
38+
export const DELETE_LABEL = 'api/deleteLabel';
3839
export const COLLECTION_FORMATS = {
3940
'csv': ',',
4041
'tsv': ' ',

client/src/app/dashboard/dashboard-card/dashboard-card.component.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { MatTableModule, MatInputModule, MatPaginatorModule} from '@angular/mate
2323
import { MatFormFieldModule} from '@angular/material/form-field';
2424
import { MatCheckboxModule} from '@angular/material/checkbox';
2525
import { MatIconModule} from '@angular/material/icon';
26+
import { MatChipsModule } from '@angular/material/chips';
2627
import { CrawlerComponent } from '../crawler/crawler.component';
2728
import { DashboardComponent } from '../../dashboard/dashboard.component';
2829
import { TableAllComponent } from '../table-all/table-all.component';
@@ -42,7 +43,7 @@ describe('component: DashboardCardComponent', () => {
4243
imports: [RouterTestingModule.withRoutes([
4344
{ path: 'dashboard/crawler', component: CrawlerComponent}
4445
]), HttpClientTestingModule, HttpClientModule, MatTableModule, MatInputModule, MatPaginatorModule,
45-
MatFormFieldModule, MatCheckboxModule, MatIconModule],
46+
MatFormFieldModule, MatCheckboxModule, MatIconModule, MatChipsModule],
4647
declarations: [ DashboardCardComponent, CrawlerComponent, DashboardComponent, TableAllComponent,
4748
HeaderComponent]
4849
});

client/src/app/dashboard/dashboard.module.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ import {MatTableModule, MatPaginatorModule, MatSortModule, MatIconModule} from '
4646
import { LabelDialogComponent } from './label-dialog/label-dialog.component';
4747
import { UserAddComponent } from './user-add/user-add.component';
4848
import { DeleteUserComponent } from './delete-user/delete-user.component';
49+
import { LabelDeleteComponent } from './label-delete/label-delete.component';
50+
import {MatChipsModule} from '@angular/material/chips';
4951

5052
@NgModule({
5153
imports: [
@@ -63,7 +65,8 @@ import { DeleteUserComponent } from './delete-user/delete-user.component';
6365
MatTableModule,
6466
MatPaginatorModule,
6567
MatSortModule,
66-
MatIconModule
68+
MatIconModule,
69+
MatChipsModule
6770
],
6871
declarations: [
6972
DashboardCardComponent,
@@ -84,10 +87,11 @@ import { DeleteUserComponent } from './delete-user/delete-user.component';
8487
TableOverviewComponent,
8588
LabelDialogComponent,
8689
UserAddComponent,
87-
DeleteUserComponent
90+
DeleteUserComponent,
91+
LabelDeleteComponent
8892
],
8993
entryComponents: [
90-
DeleteDialogComponent, AddDialogComponent, LabelDialogComponent, UserAddComponent, DeleteUserComponent
94+
DeleteDialogComponent, AddDialogComponent, LabelDialogComponent, UserAddComponent, DeleteUserComponent, LabelDeleteComponent
9195
],
9296
providers: [],
9397
})

client/src/app/dashboard/instance-details/instance-details.component.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { RouterTestingModule } from '@angular/router/testing';
99
import { ApiService } from 'src/app/api/api/api.service';
1010
import { HttpClientTestingModule } from '@angular/common/http/testing';
1111
import { InfoCenterDataSource } from '../info-center/info-center-datasource';
12+
import { MatChipsModule } from '@angular/material/chips';
1213

1314
describe('InstanceDetailsComponent', () => {
1415
let component: InstanceDetailsComponent;
@@ -17,7 +18,7 @@ describe('InstanceDetailsComponent', () => {
1718
beforeEach(async(() => {
1819
TestBed.configureTestingModule({
1920
declarations: [ InstanceDetailsComponent, InfoCenterComponent, TableAllComponent],
20-
imports: [BrowserAnimationsModule, MaterialModule, GraphViewModule, RouterTestingModule, HttpClientTestingModule],
21+
imports: [BrowserAnimationsModule, MaterialModule, GraphViewModule, RouterTestingModule, HttpClientTestingModule, MatChipsModule],
2122
providers: [ApiService]
2223
})
2324
.compileComponents();

client/src/app/dashboard/label-delete/label-delete.component.css

Whitespace-only changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<h2 mat-dialog-title>Delete Instance</h2>
2+
<mat-dialog-content>Are you sure you want to delete "{{data.name}}"</mat-dialog-content>
3+
<mat-dialog-actions>
4+
<button mat-raised-button color="primary" [mat-dialog-close]="1" (click)="onConfirm()">Confirm</button>
5+
<button mat-raised-button color="primary" (click)="onCancel()">Cancel</button>
6+
</mat-dialog-actions>
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing';
2+
import { BrowserModule, By } from '@angular/platform-browser';
3+
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
4+
import { HttpClientModule, HttpClient } from '@angular/common/http';
5+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
6+
import { MatDialogRef, MAT_DIALOG_DATA, MatTableDataSource } from '@angular/material';
7+
import { MatTableModule, MatInputModule, MatPaginatorModule } from '@angular/material';
8+
import { MatIconModule } from '@angular/material/icon';
9+
import { MatFormFieldModule } from '@angular/material/form-field';
10+
import { MatDialogModule } from '@angular/material/dialog';
11+
import { MatChipsModule } from '@angular/material/chips';
12+
import { ApiService } from '../../api/api/api.service';
13+
import { LabelDeleteComponent } from './label-delete.component';
14+
15+
describe('LabelDeleteComponent', () => {
16+
let component: LabelDeleteComponent;
17+
let fixture: ComponentFixture<LabelDeleteComponent>;
18+
19+
const mockDialogRef = {
20+
close: jasmine.createSpy('close')
21+
};
22+
beforeEach(async(() => {
23+
TestBed.configureTestingModule({
24+
declarations: [LabelDeleteComponent],
25+
imports: [HttpClientTestingModule, HttpClientModule, BrowserModule, BrowserAnimationsModule, MatTableModule,
26+
MatInputModule, MatPaginatorModule, MatFormFieldModule, MatIconModule, MatDialogModule, MatChipsModule],
27+
providers: [{
28+
provide: MatDialogRef,
29+
useValue: mockDialogRef
30+
}, {
31+
provide: MAT_DIALOG_DATA,
32+
useValue: {}
33+
}]
34+
})
35+
.compileComponents();
36+
}));
37+
38+
beforeEach(() => {
39+
fixture = TestBed.createComponent(LabelDeleteComponent);
40+
component = fixture.componentInstance;
41+
fixture.detectChanges();
42+
});
43+
44+
it(`should create Label Delete Component`, async(inject([HttpTestingController, ApiService],
45+
(httpClient: HttpTestingController, apiService: ApiService) => {
46+
expect(apiService).toBeTruthy();
47+
})));
48+
49+
it('should check for confirm button inside the Label Delete', () => {
50+
component.onConfirm();
51+
expect(mockDialogRef.close).toHaveBeenCalled();
52+
});
53+
54+
it('should check for cancel button inside the Label Delete', () => {
55+
component.onCancel();
56+
expect(mockDialogRef.close).toHaveBeenCalled();
57+
});
58+
});

0 commit comments

Comments
 (0)