import type { IScope } from 'angular';
import { mock, noop } from 'angular';
import type { ReactWrapper } from 'enzyme';
import { mount } from 'enzyme';
import { set } from 'lodash';
import React from 'react';
import type { IExecutionsProps, IExecutionsState } from './Executions';
import { Executions } from './Executions';
import type { Application } from '../../application';
import { ApplicationModelBuilder } from '../../application/applicationModel.builder';
import { INSIGHT_FILTER_STATE_MODEL } from '../../insight/insightFilterState.model';
import { OVERRIDE_REGISTRY } from '../../overrideRegistry';
import { REACT_MODULE } from '../../reactShims';
import * as State from '../../state';
import { Spinner } from '../../widgets/spinners/Spinner';
describe('', () => {
let component: ReactWrapper;
let application: Application;
let scope: IScope;
function initializeApplication(data?: any) {
set(application, 'executions.activate', noop);
set(application, 'pipelineConfigs.activate', noop);
if (data && data.executions) {
application.executions.data = data.executions;
application.executions.loaded = true;
}
if (data && data.pipelineConfigs) {
application.pipelineConfigs.data = data.pipelineConfigs;
application.pipelineConfigs.loaded = true;
}
component = mount();
}
beforeEach(mock.module(INSIGHT_FILTER_STATE_MODEL, REACT_MODULE, OVERRIDE_REGISTRY));
beforeEach(
mock.inject(($rootScope: IScope) => {
State.initialize();
scope = $rootScope.$new();
application = ApplicationModelBuilder.createApplicationForTests(
'app',
{ key: 'executions', lazy: true, defaultData: [] },
{ key: 'pipelineConfigs', lazy: true, defaultData: [] },
{ key: 'runningExecutions', lazy: true, defaultData: [] },
);
}),
);
it('should not set loading flag to false until executions and pipeline configs have been loaded', (done) => {
initializeApplication();
expect(component.find(Spinner).length).toBe(1);
application.executions.dataUpdated();
application.pipelineConfigs.dataUpdated();
scope.$digest();
setTimeout(() => {
component.setProps({});
expect(component.find(Spinner).length).toBe(0);
done();
}, 100);
});
});