You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by rs...@apache.org on 2023/05/11 05:36:25 UTC

[trafficcontrol] 02/05: Added test case (e2e and unit test for roles)

This is an automated email from the ASF dual-hosted git repository.

rshah pushed a commit to branch feature/tpv2-role-details
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git

commit c235b1a1c0453969ae85dab28f25682f14d03112
Author: Rima Shah <ri...@comcast.com>
AuthorDate: Wed May 3 22:11:05 2023 -0600

    Added test case (e2e and unit test for roles)
---
 .../traffic-portal/src/app/core/core.module.ts     |  1 -
 .../users/roles/tables/roles-table.component.html  |  2 +-
 .../roles/tables/roles-table.component.spec.ts     | 68 ++++++++++++++++++++++
 .../users/roles/tables/roles-table.component.ts    |  5 +-
 4 files changed, 71 insertions(+), 5 deletions(-)

diff --git a/experimental/traffic-portal/src/app/core/core.module.ts b/experimental/traffic-portal/src/app/core/core.module.ts
index 7ea7c23260..93fa833903 100644
--- a/experimental/traffic-portal/src/app/core/core.module.ts
+++ b/experimental/traffic-portal/src/app/core/core.module.ts
@@ -67,7 +67,6 @@ import { TenantsComponent } from "./users/tenants/tenants.component";
 import { UserDetailsComponent } from "./users/user-details/user-details.component";
 import { UserRegistrationDialogComponent } from "./users/user-registration-dialog/user-registration-dialog.component";
 import { UsersComponent } from "./users/users.component";
-import { RolesTableComponent } from "./users/roles/tables/roles-table.component";
 
 export const ROUTES: Routes = [
 	{ component: DashboardComponent, path: "" },
diff --git a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.html b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.html
index 550ed1bead..1ac559b6e1 100644
--- a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.html
+++ b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.html
@@ -12,7 +12,7 @@ limitations under the License.
 
 <mat-card class="table-page-content">
 	<div class="search-container">
-		<input type="search" name="fuzzControl" aria-label="Fuzzy Search Roles" autofocus inputmode="search" role="search" accesskey="/" placeholder="Fuzzy Search" [formControl]="fuzzControl" (input)="updateURL()" />
+		<input type="search" name="fuzzControl" aria-label="Fuzzy Search Roles" inputmode="search" role="search" accesskey="/" placeholder="Fuzzy Search" [formControl]="fuzzControl" (input)="updateURL()" />
 	</div>
 	<tp-generic-table
 		[data]="roles | async"
diff --git a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.spec.ts b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.spec.ts
index e69de29bb2..f7df2655fc 100644
--- a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.spec.ts
+++ b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.spec.ts
@@ -0,0 +1,68 @@
+/*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import { ComponentFixture, fakeAsync, TestBed, tick } from "@angular/core/testing";
+import { MatDialogModule } from "@angular/material/dialog";
+import { RouterTestingModule } from "@angular/router/testing";
+
+import { APITestingModule } from "src/app/api/testing";
+import { RoleTableComponent } from "src/app/core/users/roles/table/roles-table.component";
+
+describe("RoleTableComponent", () => {
+	let component: RoleTableComponent;
+	let fixture: ComponentFixture<RoleTableComponent>;
+
+	beforeEach(async () => {
+		await TestBed.configureTestingModule({
+			declarations: [ RoleTableComponent ],
+			imports: [ APITestingModule, RouterTestingModule, MatDialogModule ]
+		})
+			.compileComponents();
+
+		fixture = TestBed.createComponent(RoleTableComponent);
+		component = fixture.componentInstance;
+		fixture.detectChanges();
+	});
+
+	it("should create", () => {
+		expect(component).toBeTruthy();
+	});
+
+	it("updates the fuzzy search output", fakeAsync(() => {
+		let called = false;
+		const text = "testquest";
+		const spy = jasmine.createSpy("subscriber", (txt: string): void =>{
+			if (!called) {
+				expect(txt).toBe("");
+				called = true;
+			} else {
+				expect(txt).toBe(text);
+			}
+		});
+		component.fuzzySubject.subscribe(spy);
+		tick();
+		expect(spy).toHaveBeenCalled();
+		component.fuzzControl.setValue(text);
+		component.updateURL();
+		tick();
+		expect(spy).toHaveBeenCalledTimes(2);
+	}));
+
+	it("handles contextmenu events", () => {
+		expect(async () => component.handleContextMenu({
+			action: component.contextMenuItems[0].name,
+			data: {name: "test", description: "Can only read", lastUpdated: new Date()}
+		})).not.toThrow();
+	});
+});
diff --git a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.ts b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.ts
index e8bbba1603..814e4863b9 100644
--- a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.ts
+++ b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.ts
@@ -14,15 +14,14 @@
 
 import { Component, type OnInit } from "@angular/core";
 import { FormControl } from "@angular/forms";
+import { ActivatedRoute } from "@angular/router";
 import { BehaviorSubject } from "rxjs";
 import type { ResponseRole } from "trafficops-types";
 
 import { UserService } from "src/app/api";
 import { CurrentUserService } from "src/app/shared/current-user/current-user.service";
-import type { ContextMenuItem } from "src/app/shared/generic-table/generic-table.component";
+import type { ContextMenuActionEvent, ContextMenuItem } from "src/app/shared/generic-table/generic-table.component";
 import { NavigationService } from "src/app/shared/navigation/navigation.service";
-import { ActivatedRoute } from "@angular/router";
-import {ContextMenuActionEvent} from "src/app/shared/generic-table/generic-table.component";
 /**
  * AsnsTableComponent is the controller for the "Asns" table.
  */