1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { ComponentFixture, TestBed } from '@angular/core/testing';
3 import { FormsModule } from '@angular/forms';
5 import { NgbDatepickerModule, NgbNavModule, NgbTimepickerModule } from '@ng-bootstrap/ng-bootstrap';
6 import { ToastrModule } from 'ngx-toastr';
7 import { of } from 'rxjs';
9 import { LogsService } from '~/app/shared/api/logs.service';
10 import { SharedModule } from '~/app/shared/shared.module';
11 import { configureTestBed } from '~/testing/unit-test-helper';
12 import { LogsComponent } from './logs.component';
14 describe('LogsComponent', () => {
15 let component: LogsComponent;
16 let fixture: ComponentFixture<LogsComponent>;
17 let logsService: LogsService;
18 let logsServiceSpy: jasmine.Spy;
22 HttpClientTestingModule,
28 ToastrModule.forRoot()
30 declarations: [LogsComponent]
34 logsService = TestBed.inject(LogsService);
35 logsServiceSpy = spyOn(logsService, 'getLogs');
36 logsServiceSpy.and.returnValue(of(null));
37 fixture = TestBed.createComponent(LogsComponent);
38 component = fixture.componentInstance;
41 it('should create', () => {
42 expect(component).toBeTruthy();
45 describe('abstractFilters', () => {
46 it('after initialized', () => {
47 const filters = component.abstractFilters();
48 expect(filters.priority).toBe('All');
49 expect(filters.key).toBe('');
50 expect(filters.yearMonthDay).toBe('');
51 expect(filters.sTime).toBe(0);
52 expect(filters.eTime).toBe(1439);
54 it('change date', () => {
55 component.selectedDate = { year: 2019, month: 1, day: 1 };
56 component.startTime = { hour: 1, minute: 10 };
57 component.endTime = { hour: 12, minute: 10 };
58 const filters = component.abstractFilters();
59 expect(filters.yearMonthDay).toBe('2019-01-01');
60 expect(filters.sTime).toBe(70);
61 expect(filters.eTime).toBe(730);
65 describe('filterLogs', () => {
66 const contentData: Record<string, any> = {
70 stamp: '2019-02-21 09:39:49.572801',
71 message: 'Manager daemon localhost is now available',
76 stamp: '2019-02-21 09:39:49.572801',
77 message: 'Activating manager daemon localhost',
82 stamp: '2019-01-21 09:39:49.572801',
83 message: 'Manager daemon localhost is now available',
88 stamp: '2019-02-21 01:39:49.572801',
89 message: 'Manager daemon localhost is now available',
95 const resetFilter = () => {
96 component.selectedDate = null;
97 component.priority = 'All';
98 component.search = '';
99 component.startTime = { hour: 0, minute: 0 };
100 component.endTime = { hour: 23, minute: 59 };
103 component.contentData = contentData;
106 it('show all log', () => {
107 component.filterLogs();
108 expect(component.clog.length).toBe(4);
111 it('filter by search key', () => {
113 component.search = 'Activating';
114 component.filterLogs();
115 expect(component.clog.length).toBe(1);
116 expect(component.clog[0].name).toBe('search');
119 it('filter by date', () => {
121 component.selectedDate = { year: 2019, month: 1, day: 21 };
122 component.filterLogs();
123 expect(component.clog.length).toBe(1);
124 expect(component.clog[0].name).toBe('date');
127 it('filter by priority', () => {
129 component.priority = '[ERR]';
130 component.filterLogs();
131 expect(component.clog.length).toBe(1);
132 expect(component.clog[0].name).toBe('priority');
135 it('filter by time range', () => {
137 component.startTime = { hour: 1, minute: 0 };
138 component.endTime = { hour: 2, minute: 0 };
139 component.filterLogs();
140 expect(component.clog.length).toBe(1);
141 expect(component.clog[0].name).toBe('time');
145 describe('convert logs to text', () => {
146 it('convert cluster & audit logs to text', () => {
147 const logsPayload = {
151 stamp: '2019-02-21 09:39:49.572801',
152 message: 'Manager daemon localhost is now available',
158 stamp: '2020-12-22T11:18:13.896920+0000',
163 logsServiceSpy.and.returnValue(of(logsPayload));
164 fixture.detectChanges();
165 expect(component.clogText).toContain(logsPayload.clog[0].message);
166 expect(component.auditLogText).toContain(logsPayload.audit_log[0].priority);