datasurvey/src/main/webapp/app/account/settings/settings.component.spec.ts

98 lines
2.8 KiB
TypeScript

jest.mock('@ngx-translate/core');
jest.mock('app/core/auth/account.service');
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { FormBuilder } from '@angular/forms';
import { throwError, of } from 'rxjs';
import { TranslateService } from '@ngx-translate/core';
import { AccountService } from 'app/core/auth/account.service';
import { Account } from 'app/core/auth/account.model';
import { SettingsComponent } from './settings.component';
describe('Component Tests', () => {
describe('SettingsComponent', () => {
let comp: SettingsComponent;
let fixture: ComponentFixture<SettingsComponent>;
let mockAccountService: AccountService;
const account: Account = {
id: 0,
firstName: 'John',
lastName: 'Doe',
activated: true,
email: 'john.doe@mail.com',
langKey: 'es',
login: 'john',
authorities: [],
imageUrl: '',
};
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
declarations: [SettingsComponent],
providers: [FormBuilder, TranslateService, AccountService],
})
.overrideTemplate(SettingsComponent, '')
.compileComponents();
})
);
beforeEach(() => {
fixture = TestBed.createComponent(SettingsComponent);
comp = fixture.componentInstance;
mockAccountService = TestBed.inject(AccountService);
mockAccountService.identity = jest.fn(() => of(account));
mockAccountService.getAuthenticationState = jest.fn(() => of(account));
});
it('should send the current identity upon save', () => {
// GIVEN
mockAccountService.save = jest.fn(() => of({}));
const settingsFormValues = {
firstName: 'John',
lastName: 'Doe',
email: 'john.doe@mail.com',
langKey: 'es',
};
// WHEN
comp.ngOnInit();
comp.save();
// THEN
expect(mockAccountService.identity).toHaveBeenCalled();
expect(mockAccountService.save).toHaveBeenCalledWith(account);
expect(mockAccountService.authenticate).toHaveBeenCalledWith(account);
expect(comp.settingsForm.value).toEqual(settingsFormValues);
});
it('should notify of success upon successful save', () => {
// GIVEN
mockAccountService.save = jest.fn(() => of({}));
// WHEN
comp.ngOnInit();
comp.save();
// THEN
expect(comp.success).toBe(true);
});
it('should notify of error upon failed save', () => {
// GIVEN
mockAccountService.save = jest.fn(() => throwError('ERROR'));
// WHEN
comp.ngOnInit();
comp.save();
// THEN
expect(comp.success).toBe(false);
});
});
});