-
-
Notifications
You must be signed in to change notification settings - Fork 350
Expand file tree
/
Copy pathsettings.component.spec.ts
More file actions
104 lines (93 loc) · 3.61 KB
/
settings.component.spec.ts
File metadata and controls
104 lines (93 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import { HttpClient, HttpHandler } from '@angular/common/http';
import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { MatSelectModule } from '@angular/material/select';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatSliderModule } from '@angular/material/slider';
import { MatCardModule } from '@angular/material/card';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { SettingsComponent } from './settings.component';
import { SettingsService } from '../../service/settings/settings.service';
import { LoaderService } from '../../service/loader/data-loader.service';
import { MockLoaderService } from '../../service/loader/mock-data-loader.service';
import { Data } from 'src/app/model/activity-store';
import { ModalMessageComponent } from 'src/app/component/modal-message/modal-message.component';
let mockLoaderService: MockLoaderService;
const MOCK_DATA = {
'Build and Deployment': {
'Deployment Process': {
'Automated Deployment': {
uuid: 'test-uuid-1',
level: 5,
name: 'Automated Deployment',
},
},
},
};
describe('SettingsComponent', () => {
let component: SettingsComponent;
let fixture: ComponentFixture<SettingsComponent>;
let settingsService: jasmine.SpyObj<SettingsService>;
let modalComponent: jasmine.SpyObj<ModalMessageComponent>;
mockLoaderService = new MockLoaderService(MOCK_DATA as unknown as Data);
beforeEach(async () => {
await mockLoaderService.load();
settingsService = jasmine.createSpyObj('SettingsService', [
'getMaxLevel',
'setMaxLevel',
'getDateFormat',
'setDateFormat',
'getTeamLabel',
'getGroupLabel',
]);
settingsService.getTeamLabel.and.returnValue('Team');
settingsService.getGroupLabel.and.returnValue('Group');
modalComponent = jasmine.createSpyObj('ModalMessageComponent', ['openDialog']);
await TestBed.configureTestingModule({
imports: [
FormsModule,
ReactiveFormsModule,
NoopAnimationsModule,
MatSelectModule,
MatFormFieldModule,
MatInputModule,
MatSliderModule,
MatCardModule,
MatIconModule,
MatButtonModule,
],
declarations: [SettingsComponent],
providers: [
HttpClient,
HttpHandler,
{ provide: SettingsService, useValue: settingsService },
{ provide: LoaderService, useValue: mockLoaderService },
{ provide: ModalMessageComponent, useValue: modalComponent },
],
}).compileComponents();
});
beforeEach(fakeAsync(() => {
fixture = TestBed.createComponent(SettingsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
tick();
fixture.detectChanges();
}));
it('should create', fakeAsync(() => {
expect(component).toBeTruthy();
}));
it('should update max level settings correctly', fakeAsync(() => {
component.onMaxLevelChange(3);
expect(component.selectedMaxLevel).toBe(3);
expect(settingsService.setMaxLevel).toHaveBeenCalledWith(3);
}));
it('should handle max level reset to default', fakeAsync(() => {
component.onMaxLevelChange(5);
expect(component.selectedMaxLevel).toBe(5);
// Remove localStorage when settings' maxLevel is set to activity's maxLevel
expect(settingsService.setMaxLevel).toHaveBeenCalledWith(null);
}));
});