[Management] Fix bug with index pattern creation (#16693)

* Ensure we call scope.apply after route changing

* PR feedback
This commit is contained in:
Chris Roberson 2018-02-16 09:48:53 -05:00 committed by GitHub
parent 6c57778245
commit 7164adb282
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 5 deletions

View file

@ -23,7 +23,8 @@ const services = {
indexPatterns: {},
savedObjectsClient: {},
config: {},
kbnUrl: {},
changeUrl: () => {},
scopeApply: () => {},
};
describe('CreateIndexPatternWizard', () => {
@ -94,4 +95,37 @@ describe('CreateIndexPatternWizard', () => {
expect(component).toMatchSnapshot();
});
it('should create an index pattern', async () => {
const get = jest.fn();
const set = jest.fn();
const create = jest.fn().mockImplementation(() => 'id');
const clear = jest.fn();
const changeUrl = jest.fn();
const component = shallow(
<CreateIndexPatternWizard
loadingDataDocUrl={loadingDataDocUrl}
initialQuery={initialQuery}
services={{
...services,
config: { get, set },
indexPatterns: {
get: () => ({
create,
}),
cache: { clear }
},
changeUrl,
}}
/>
);
component.setState({ indexPattern: 'foo' });
await component.instance().createIndexPattern(null, 'id');
expect(get).toBeCalled();
expect(create).toBeCalled();
expect(clear).toBeCalledWith('id');
expect(changeUrl).toBeCalledWith(`/management/kibana/indices/id`);
});
});

View file

@ -21,7 +21,7 @@ describe('CreateIndexPatternWizardRender', () => {
indexPatterns: {},
savedObjectsClient: {},
config: {},
kbnUrl: {},
changeUrl: () => {},
}
);

View file

@ -19,7 +19,7 @@ export class CreateIndexPatternWizard extends Component {
indexPatterns: PropTypes.object.isRequired,
savedObjectsClient: PropTypes.object.isRequired,
config: PropTypes.object.isRequired,
kbnUrl: PropTypes.object.isRequired,
changeUrl: PropTypes.func.isRequired,
}).isRequired,
}
@ -59,7 +59,7 @@ export class CreateIndexPatternWizard extends Component {
}
services.indexPatterns.cache.clear(createdId);
services.kbnUrl.change(`/management/kibana/indices/${createdId}`);
services.changeUrl(`/management/kibana/indices/${createdId}`);
}
goToTimeFieldStep = (indexPattern) => {

View file

@ -10,6 +10,7 @@ uiRoutes.when('/management/kibana/index', {
template: angularTemplate,
controller: function ($scope, $injector) {
// Wait for the directives to execute
const kbnUrl = $injector.get('kbnUrl');
$scope.$$postDigest(() => {
const $routeParams = $injector.get('$routeParams');
const services = {
@ -17,7 +18,9 @@ uiRoutes.when('/management/kibana/index', {
es: $injector.get('es'),
indexPatterns: $injector.get('indexPatterns'),
savedObjectsClient: $injector.get('Private')(SavedObjectsClientProvider),
kbnUrl: $injector.get('kbnUrl'),
changeUrl: url => {
$scope.$evalAsync(() => kbnUrl.changePath(url));
},
};
const initialQuery = $routeParams.id ? decodeURIComponent($routeParams.id) : undefined;