Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test coverage for UI components #692

Merged
merged 12 commits into from
Apr 12, 2024
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/* SPDX-License-Identifier: Apache-2.0 */
import { AsyncApiService } from "../../../service/asyncapi/asyncapi.service";
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { ChannelMainComponent } from "./channel-main.component";
import { PublisherService } from "../../../service/publisher.service";
import { MatDivider } from "@angular/material/divider";
import { MatTab, MatTabGroup, MatTabHeader } from "@angular/material/tabs";
import { JsonComponent } from "../../json/json.component";
import { MarkdownModule } from "ngx-markdown";

describe("ChannelMainComponent", () => {
let component: ChannelMainComponent;
let fixture: ComponentFixture<ChannelMainComponent>;

let mockedAsyncApiService = {
getAsyncApi: jest.fn(),
};
let mockedPublisherService = {
getAsyncApi: jest.fn(),
};

beforeEach(() => {
TestBed.configureTestingModule({
imports: [
MatDivider,
MatTabGroup,
MatTab,
MatTabHeader,
MarkdownModule.forRoot(),
],
declarations: [ChannelMainComponent, JsonComponent],
providers: [
{ provide: AsyncApiService, useValue: mockedAsyncApiService },
{ provide: PublisherService, useValue: mockedPublisherService },
],
}).compileComponents();

fixture = TestBed.createComponent(ChannelMainComponent as any);
component = fixture.debugElement.componentInstance;
});

it("should create the component", () => {
expect(component).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/* SPDX-License-Identifier: Apache-2.0 */
import { AsyncApiService } from "../../service/asyncapi/asyncapi.service";
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { ChannelsComponent } from "./channels.component";
import { MatAccordion } from "@angular/material/expansion";

describe("ChannelsComponent", () => {
let component: ChannelsComponent;
let fixture: ComponentFixture<ChannelsComponent>;

let mockedAsyncApiService = {
getAsyncApi: jest.fn(),
};

beforeEach(() => {
TestBed.configureTestingModule({
imports: [MatAccordion],
declarations: [ChannelsComponent],
providers: [
{ provide: AsyncApiService, useValue: mockedAsyncApiService },
],
}).compileComponents();

fixture = TestBed.createComponent(ChannelsComponent as any);
component = fixture.debugElement.componentInstance;
});

it("should create the component", () => {
expect(component).toBeTruthy();
});
});
23 changes: 23 additions & 0 deletions springwolf-ui/src/app/components/header/header.component.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/* SPDX-License-Identifier: Apache-2.0 */
import { MatToolbarModule } from "@angular/material/toolbar";
import { HeaderComponent } from "./header.component";
import { ComponentFixture, TestBed } from "@angular/core/testing";

describe("HeaderComponent", () => {
let component: HeaderComponent;
let fixture: ComponentFixture<HeaderComponent>;

beforeEach(() => {
TestBed.configureTestingModule({
declarations: [HeaderComponent],
imports: [MatToolbarModule],
}).compileComponents();

fixture = TestBed.createComponent(HeaderComponent as any);
component = fixture.debugElement.componentInstance;
});

it("should create the component", () => {
expect(component).toBeTruthy();
});
});
74 changes: 74 additions & 0 deletions springwolf-ui/src/app/components/info/info.component.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/* SPDX-License-Identifier: Apache-2.0 */
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { InfoComponent } from "./info.component";
import { AsyncApiService } from "../../service/asyncapi/asyncapi.service";
import { of } from "rxjs/internal/observable/of";
import { MatChipsModule } from "@angular/material/chips";
import { MarkdownModule } from "ngx-markdown";

describe("InfoComponent", function () {
let component: InfoComponent;
let fixture: ComponentFixture<InfoComponent>;

let mockedAsyncApiService!: { getAsyncApi: jest.Mock };

let info = {
title: "title",
version: "1.0.0",
description: "example",
contact: {
url: "https://test.com",
email: {
name: "springwolf",
href: "link",
},
},
license: {
name: "Apache License 2.0",
},
asyncApiJson: null,
};

beforeEach(() => {
mockedAsyncApiService = {
getAsyncApi: jest.fn(),
};

TestBed.configureTestingModule({
declarations: [InfoComponent],
imports: [MatChipsModule, MarkdownModule.forRoot()],
providers: [
{ provide: AsyncApiService, useValue: mockedAsyncApiService },
],
}).compileComponents();

fixture = TestBed.createComponent(InfoComponent as any);
component = fixture.debugElement.componentInstance;
component.info = info;
});

it("should create the component", () => {
expect(component).toBeTruthy();
});

it("should render the title", async () => {
mockedAsyncApiService.getAsyncApi.mockReturnValue(of());

fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector("h1").textContent).toContain("title");
expect(compiled.querySelector("h5").textContent).toContain(
" API version 1.0.0 - Download AsyncAPI file"
);
});

it("should render the license information", async () => {
mockedAsyncApiService.getAsyncApi.mockReturnValue(of());

fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector("p").textContent).toContain(
"License: Apache License 2.0 https://test.com springwolf "
);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/* SPDX-License-Identifier: Apache-2.0 */
import { ComponentFixture, TestBed } from "@angular/core/testing";

import { SchemaComponent } from "./schema.component";
import { SchemaRangeComponent } from "../range/schema-range.component";
import { MatChipsModule } from "@angular/material/chips";
import { MarkdownModule } from "ngx-markdown";
import { Example } from "../../../models/example.model";
import { JsonComponent } from "../../json/json.component";

describe("SchemaComponent", () => {
let component: SchemaComponent;
let fixture: ComponentFixture<SchemaComponent>;

let mockedSchemaRangeComponent = jest.mock("../range/schema-range.component");

beforeEach(() => {
TestBed.configureTestingModule({
declarations: [SchemaComponent, SchemaRangeComponent, JsonComponent],
imports: [MatChipsModule, MarkdownModule.forRoot()],
providers: [
{ provide: SchemaRangeComponent, useValue: mockedSchemaRangeComponent },
],
}).compileComponents();

fixture = TestBed.createComponent(SchemaComponent as any);
component = fixture.debugElement.componentInstance;
});

it("should create the component", () => {
expect(component).toBeTruthy();
});

it("should render primitive string", async () => {
component.schema = {
title: "String",
type: "string",
example: new Example("string"),
};

fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector(".type").textContent).toContain("string");
expect(compiled.querySelector(".example").textContent).toContain(
"example: string"
);
});
});
31 changes: 31 additions & 0 deletions springwolf-ui/src/app/components/schemas/schemas.component.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/* SPDX-License-Identifier: Apache-2.0 */
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { SchemasComponent } from "./schemas.component";
import { AsyncApiService } from "../../service/asyncapi/asyncapi.service";
import { MatAccordion } from "@angular/material/expansion";

describe("SchemasComponent", () => {
let component: SchemasComponent;
let fixture: ComponentFixture<SchemasComponent>;

let mockedAsyncApiService = {
getAsyncApi: jest.fn(),
};

beforeEach(() => {
TestBed.configureTestingModule({
imports: [MatAccordion],
declarations: [SchemasComponent],
providers: [
{ provide: AsyncApiService, useValue: mockedAsyncApiService },
],
}).compileComponents();

fixture = TestBed.createComponent(SchemasComponent as any);
component = fixture.debugElement.componentInstance;
});

it("should create the component", () => {
expect(component).toBeTruthy();
});
});
27 changes: 27 additions & 0 deletions springwolf-ui/src/app/components/servers/servers.component.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* SPDX-License-Identifier: Apache-2.0 */
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { ServersComponent } from "./servers.component";
import { AsyncApiService } from "../../service/asyncapi/asyncapi.service";

describe("ServerComponent", () => {
let component: ServersComponent;
let fixture: ComponentFixture<ServersComponent>;

let mockedAsyncApiService!: { getAsyncApi: jest.Mock };

beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ServersComponent],
providers: [
{ provide: AsyncApiService, useValue: mockedAsyncApiService },
],
}).compileComponents();

fixture = TestBed.createComponent(ServersComponent as any);
component = fixture.debugElement.componentInstance;
});

it("should create the component", () => {
expect(component).toBeTruthy();
});
});