import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ApiRootFacade } from '@goofy-client/api-root-shared';
import { Mock, mock } from '@goofy-client/test-utils';
import { MockComponent } from 'ng-mocks';
import { UserSettingsContainerComponent } from './user-settings-container.component';
import { UserSettingsComponent } from './user-settings/user-settings.component';

describe('UserSettingsContainerComponent', () => {
	let component: UserSettingsContainerComponent;
	let fixture: ComponentFixture<UserSettingsContainerComponent>;

	const apiRootFacade: Mock<ApiRootFacade> = { ...mock(ApiRootFacade), getApiRoot: jest.fn() };

	beforeEach(async () => {
		await TestBed.configureTestingModule({
			declarations: [
				UserSettingsContainerComponent,
				MockComponent(UserSettingsComponent)
			],
			providers: [
				{
					provide: ApiRootFacade,
					useValue: apiRootFacade
				}
			],
		});
	});

	beforeEach(() => {
		fixture = TestBed.createComponent(UserSettingsContainerComponent);
		component = fixture.componentInstance;
		fixture.autoDetectChanges(true);
	});

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

	describe('ngOnInit', () => {

		it('should call apiRoot facade', () => {
			component.ngOnInit();

			expect(apiRootFacade.getApiRoot).toHaveBeenCalled();
		})
	})
});