153 lines
4.8 KiB
JavaScript
153 lines
4.8 KiB
JavaScript
/**
|
|
* Copyright 2017 Red Hat Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License. You may obtain
|
|
* a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
import configureMockStore from 'redux-mock-store';
|
|
import thunkMiddleware from 'redux-thunk';
|
|
|
|
import EnvironmentConfigurationActions from '../../js/actions/EnvironmentConfigurationActions';
|
|
import NotificationActions from '../../js/actions/NotificationActions';
|
|
import MistralApiService from '../../js/services/MistralApiService';
|
|
import { mockGetIntl } from './utils';
|
|
|
|
const mockStore = configureMockStore([
|
|
thunkMiddleware.withExtraArgument(mockGetIntl)
|
|
]);
|
|
|
|
describe('fetchEnvironmentConfiguration', () => {
|
|
const store = mockStore({});
|
|
|
|
it('dispatches fetchEnvironmentConfigurationSuccess', () => {
|
|
const response = {
|
|
'General Deployment Options': {
|
|
environment_groups: [
|
|
{
|
|
description:
|
|
'Enable basic configuration required for OpenStack Deployment',
|
|
environments: [
|
|
{
|
|
enabled: true,
|
|
description: null,
|
|
file: 'overcloud-resource-registry-puppet.yaml',
|
|
title: 'Default Configuration'
|
|
}
|
|
],
|
|
title: null
|
|
}
|
|
],
|
|
description: null,
|
|
title: 'General Deployment Options'
|
|
}
|
|
};
|
|
const normalizedResponse = {
|
|
environmentGroups: {
|
|
'Enable basic configuration required for OpenStack Deployment': {
|
|
description:
|
|
'Enable basic configuration required for OpenStack Deployment',
|
|
environments: ['overcloud-resource-registry-puppet.yaml'],
|
|
title: null
|
|
}
|
|
},
|
|
environments: {
|
|
'overcloud-resource-registry-puppet.yaml': {
|
|
description: null,
|
|
enabled: true,
|
|
file: 'overcloud-resource-registry-puppet.yaml',
|
|
title: 'Default Configuration'
|
|
}
|
|
},
|
|
topics: {
|
|
'General Deployment Options': {
|
|
description: null,
|
|
environment_groups: [
|
|
'Enable basic configuration required for OpenStack Deployment'
|
|
],
|
|
title: 'General Deployment Options'
|
|
}
|
|
}
|
|
};
|
|
MistralApiService.runAction = jest
|
|
.fn()
|
|
.mockReturnValue(() => Promise.resolve(response));
|
|
return store
|
|
.dispatch(
|
|
EnvironmentConfigurationActions.fetchEnvironmentConfiguration('myPlan')
|
|
)
|
|
.then(() => {
|
|
expect(MistralApiService.runAction).toHaveBeenCalled();
|
|
expect(store.getActions()).toEqual([
|
|
EnvironmentConfigurationActions.fetchEnvironmentConfigurationPending(),
|
|
EnvironmentConfigurationActions.fetchEnvironmentConfigurationSuccess(
|
|
normalizedResponse
|
|
)
|
|
]);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('updateEnvironmentConfiguration', () => {
|
|
const store = mockStore({});
|
|
|
|
beforeEach(() => {
|
|
MistralApiService.runAction = jest.fn().mockReturnValue(() =>
|
|
Promise.resolve({
|
|
template: 'overcloud.yaml',
|
|
environments: [
|
|
{
|
|
path: 'overcloud-resource-registry-puppet.yaml'
|
|
},
|
|
{
|
|
path: 'environments/puppet-pacemaker.yaml'
|
|
},
|
|
{
|
|
path: 'environments/network-isolation.yaml'
|
|
}
|
|
]
|
|
})
|
|
);
|
|
NotificationActions.notify = jest.fn(() => ({ type: 'NOTIFY' }));
|
|
});
|
|
|
|
it('dispatches actions', () => {
|
|
return store
|
|
.dispatch(
|
|
EnvironmentConfigurationActions.updateEnvironmentConfiguration('myPlan')
|
|
)
|
|
.then(() => {
|
|
expect(MistralApiService.runAction).toHaveBeenCalled();
|
|
expect(store.getActions()).toEqual([
|
|
EnvironmentConfigurationActions.updateEnvironmentConfigurationPending(),
|
|
EnvironmentConfigurationActions.updateEnvironmentConfigurationSuccess(
|
|
[
|
|
'overcloud-resource-registry-puppet.yaml',
|
|
'environments/puppet-pacemaker.yaml',
|
|
'environments/network-isolation.yaml'
|
|
]
|
|
),
|
|
NotificationActions.notify({ type: 'NOTIFY' })
|
|
]);
|
|
});
|
|
|
|
// const result = EnvironmentConfigurationActions.updateEnvironmentConfiguration(
|
|
// 'myPlan'
|
|
// );
|
|
// const mockDispatch = jest.fn();
|
|
// result(mockDispatch, jest.fn(), mockGetIntl).then(() => {
|
|
// console.log(mockDispatch);
|
|
// expect(mockDispatch.mock.calls).toEqual(true);
|
|
// });
|
|
});
|
|
});
|