Skip to content

Commit

Permalink
Merge pull request RedHatInsights#106 from Hyperkid123/upgrade-js-client
Browse files Browse the repository at this point in the history
Update api client to match new routing.
  • Loading branch information
martinpovolny authored Feb 26, 2019
2 parents 3efb0f9 + 297bc65 commit 27ffcd9
Show file tree
Hide file tree
Showing 13 changed files with 55 additions and 43 deletions.
10 changes: 6 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"dependencies": {
"@data-driven-forms/pf4-component-mapper": "^0.4.1",
"@data-driven-forms/react-form-renderer": "^1.6.0",
"@manageiq/service-portal-api": "~1.3.0",
"@manageiq/service-portal-api": "~1.3.1",
"@manageiq/topological_inventory": "~1.1.0",
"@patternfly/patternfly-next": "^1.0.131",
"@patternfly/react-core": "^1.51.6",
Expand Down
4 changes: 2 additions & 2 deletions src/Helpers/Order/OrderHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ const sspDefaultClient = ServicePortalApi.ApiClient.instance;
sspDefaultClient.basePath = SERVICE_PORTAL_API_BASE;

export function getServicePlans(portfolioItemId) {
return api.fetchPlansWithPortfolioItemId(portfolioItemId);
return api.listServicePlans(portfolioItemId);
}

export function listOrders() {
return api.listOrders();
}

export async function sendSubmitOrder({ service_parameters: { providerControlParameters, ...service_parameters }, ...parameters }) {
let order = await api.newOrder();
let order = await api.createOrder();
let orderItem = new ServicePortalApi.OrderItem;
orderItem.count = 1;
orderItem = {
Expand Down
10 changes: 5 additions & 5 deletions src/Helpers/Portfolio/PortfolioHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ export function getPortfolioItem(portfolioId, portfolioItemId) {
}

export function getPortfolio(portfolioId) {
return userApi.fetchPortfolioWithId(portfolioId);
return userApi.showPortfolio(portfolioId);
}

export function getPortfolioItemsWithPortfolio(portfolioId) {
return userApi.fetchPortfolioItemsWithPortfolio(portfolioId);
return fetch(`${SERVICE_PORTAL_API_BASE}/portfolios/${portfolioId}/portfolio_items`).then(data => data.json());
}

// TO DO - change to use the API call that adds multiple items to a portfolio when available
export async function addPortfolio(portfolioData, items) {
let portfolio = await userApi.addPortfolio(portfolioData);
let portfolio = await userApi.createPortfolio(portfolioData);
if (!portfolio)
{return portfolio;}

Expand All @@ -42,7 +42,7 @@ export async function addToPortfolio(portfolioId, items) {
let idx = 0; let newItem = null;

for (idx = 0; idx < items.length; idx++) {
newItem = await userApi.addPortfolioItem (JSON.stringify ({ service_offering_ref: items[idx] }));
newItem = await userApi.createPortfolioItem(JSON.stringify ({ service_offering_ref: items[idx] }));
if (newItem) {
await userApi.addPortfolioItemToPortfolio(portfolioId, JSON.stringify({ portfolio_item_id: newItem.id }));
}
Expand All @@ -52,7 +52,7 @@ export async function addToPortfolio(portfolioId, items) {
}

export async function updatePortfolio(portfolioData) {
await userApi.editPortfolio(portfolioData.id, portfolioData);
await userApi.updatePortfolio(portfolioData.id, portfolioData);
}

export async function removePortfolio(portfolioId) {
Expand Down
5 changes: 5 additions & 0 deletions src/Helpers/Shared/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ export const scrollToTop = () => document.getElementById('root').scrollTo({
top: 0,
left: 0
});

export const filterServiceOffering = ({ display_name, name }, filter) => {
const filterAtrribute = display_name || name;
return filterAtrribute.trim().toLowerCase().includes(filter.toLowerCase());
};
2 changes: 0 additions & 2 deletions src/PresentationalComponents/Portfolio/PorfolioCard.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ const createToolbarActions = (portfolioName, portfolioId) => [
<Button
variant="plain"
aria-label={ `edit-portfolio-${portfolioName}` }
onClick={ () => console.log('Edit portfolio api helper not available.') }
>
<EditAltIcon fill={ ICON_FILL } />
</Button>
Expand All @@ -25,7 +24,6 @@ const createToolbarActions = (portfolioName, portfolioId) => [
key="remove-portfolio-action"
variant="plain"
aria-label={ `remove-portfolio-${portfolioName}` }
onClick={ () => console.log('Remove portfolio api helper not available.') }
>
<TrashIcon fill={ ICON_FILL } />
</Button>
Expand Down
2 changes: 1 addition & 1 deletion src/SmartComponents/Common/OrderModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ const mapStateToProps = ({
isLoading,
selectedItem,
servicePlans,
serviceData: portfolioItems.find(({ id }) => id === itemId)
serviceData: portfolioItems.find(({ id }) => id == itemId) // eslint-disable-line eqeqeq
});

export default withRouter(connect(mapStateToProps)(OrderModal));
38 changes: 21 additions & 17 deletions src/SmartComponents/Order/OrderServiceFormStepConfiguration.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React from 'react';
import propTypes from 'prop-types';
import PropTypes from 'prop-types';
import { withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import { Bullseye, Radio, Form, Title, Stack, StackItem } from '@patternfly/react-core';
import '../../Utilities/jschema.scss';
Expand Down Expand Up @@ -46,7 +47,7 @@ class OrderServiceFormStepConfiguration extends React.Component {
const portfolioItemId = this.props.id;
const service_plan_id = this.props.servicePlans[this.state.selectedPlanIdx].id;
this.props.sendSubmitOrder({ portfolio_item_id: portfolioItemId, service_plan_ref: service_plan_id, service_parameters: data });
this.props.hideModal();
this.props.history.push('/orders');
};

render() {
Expand Down Expand Up @@ -99,20 +100,23 @@ class OrderServiceFormStepConfiguration extends React.Component {
}

OrderServiceFormStepConfiguration.propTypes = {
orderData: propTypes.func,
fetchPlans: propTypes.func,
hideModal: propTypes.func,
showOrder: propTypes.bool,
isLoading: propTypes.bool,
serviceData: propTypes.object,
servicePlans: propTypes.array,
stepParametersValid: propTypes.bool,
fulfilled: propTypes.bool,
error: propTypes.bool,
imageUrl: propTypes.string,
id: propTypes.string,
name: propTypes.string,
sendSubmitOrder: propTypes.func.isRequired
orderData: PropTypes.func,
fetchPlans: PropTypes.func,
hideModal: PropTypes.func,
showOrder: PropTypes.bool,
isLoading: PropTypes.bool,
serviceData: PropTypes.object,
servicePlans: PropTypes.array,
stepParametersValid: PropTypes.bool,
fulfilled: PropTypes.bool,
error: PropTypes.bool,
imageUrl: PropTypes.string,
id: PropTypes.string,
name: PropTypes.string,
sendSubmitOrder: PropTypes.func.isRequired,
history: PropTypes.shape({
push: PropTypes.func.isRequired
}).isRequired
};

OrderServiceFormStepConfiguration.defaultProps = {
Expand All @@ -129,4 +133,4 @@ const mapDispatchToProps = dispatch => ({
sendSubmitOrder: data => dispatch(sendSubmitOrder(data))
});

export default connect(mapStateToProps, mapDispatchToProps)(OrderServiceFormStepConfiguration);
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(OrderServiceFormStepConfiguration));
4 changes: 2 additions & 2 deletions src/SmartComponents/Platform/Platform.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { fetchSelectedPlatform, fetchPlatformItems } from '../../redux/Actions/P
import ContentGallery from '../../SmartComponents/ContentGallery/ContentGallery';
import PlatformToolbar from '../../PresentationalComponents/Platform/PlatformToolbar';
import PlatformItem from '../../PresentationalComponents/Platform/PlatformItem';
import { scrollToTop } from '../../Helpers/Shared/helpers';
import { scrollToTop, filterServiceOffering } from '../../Helpers/Shared/helpers';
import './platform.scss';

class Platform extends Component {
Expand Down Expand Up @@ -37,7 +37,7 @@ class Platform extends Component {
render() {
let filteredItems = {
items: this.props.platformItems
.filter(({ name }) => name.toLowerCase().includes(this.state.filterValue.toLowerCase()))
.filter(item => filterServiceOffering(item, this.state.filterValue))
.map(data => <PlatformItem key={ data.id } { ...data } />),
isLoading: this.props.isPlatformDataLoading
};
Expand Down
3 changes: 2 additions & 1 deletion src/SmartComponents/Portfolio/AddProductsToPortfolio.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import PortfolioOrderToolbar from '../../PresentationalComponents/Portfolio/Port
import PlatformDashboard from '../../PresentationalComponents/Platform/PlatformDashboard';
import { addToPortfolio, fetchPortfolioItemsWithPortfolio } from '../../redux/Actions/PortfolioActions';
import PlatformItem from '../../PresentationalComponents/Platform/PlatformItem';
import { filterServiceOffering } from '../../Helpers/Shared/helpers';

class AddProductsToPortfolio extends Component {
state = {
Expand Down Expand Up @@ -52,7 +53,7 @@ class AddProductsToPortfolio extends Component {
const { selectedPlatforms } = this.state;
const { platformItems } = this.props;
return selectedPlatforms.map(({ id }) => platformItems[id]
? platformItems[id].filter(({ name }) => name.trim().toLowerCase().includes(this.state.searchValue.toLocaleLowerCase())).map(item =>
? platformItems[id].filter(item => filterServiceOffering(item, this.state.searchValue)).map(item =>
<PlatformItem
key={ item.id }
{ ...item }
Expand Down
6 changes: 3 additions & 3 deletions src/SmartComponents/Portfolio/Portfolio.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import './portfolio.scss';
import RemovePortfolioItems from '../../SmartComponents/Portfolio/RemovePortfolioItems';
import { removePortfolioItems } from '../../Helpers/Portfolio/PortfolioHelper';
import OrderModal from '../Common/OrderModal';

import { filterServiceOffering } from '../../Helpers/Shared/helpers';
class Portfolio extends Component {
state = {
portfolioId: '',
Expand Down Expand Up @@ -69,7 +69,7 @@ class Portfolio extends Component {
let filteredItems = [];
if (this.props.portfolioItems && this.props.portfolioItems.portfolioItems) {
filteredItems = this.props.portfolioItems.portfolioItems;
filteredItems = filteredItems.filter(({ name }) => name.toLowerCase().includes(filterValue.toLowerCase()));
filteredItems = filteredItems.filter(item => filterServiceOffering(item, filterValue));
}

return filteredItems;
Expand Down Expand Up @@ -129,7 +129,7 @@ class Portfolio extends Component {

const filteredItems = {
items: this.props.portfolioItems
.filter(({ name }) => name.toLowerCase().includes(this.state.filterValue.toLowerCase()))
.filter(item => filterServiceOffering(item, this.state.filterValue))
.map(item => (
<PortfolioItem
key={ item.id }
Expand Down
4 changes: 2 additions & 2 deletions src/test/redux/actions/order-actions.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ describe('Order actions', () => {
apiClientMock.post(`${SERVICE_PORTAL_API_BASE}/orders`, mockOnce({
body: { id: 123 }
}));
apiClientMock.post(`${SERVICE_PORTAL_API_BASE}/orders/123/items`, mockOnce((req, res) => {
apiClientMock.post(`${SERVICE_PORTAL_API_BASE}/orders/123/order_items`, mockOnce((req, res) => {
expect(JSON.parse(req.body())).toEqual({
count: 1,
provider_control_parameters: { namespace: 'default' },
Expand All @@ -137,7 +137,7 @@ describe('Order actions', () => {
});
return res.status(200);
}));
apiClientMock.post(`${SERVICE_PORTAL_API_BASE}/orders/123`, mockOnce({
apiClientMock.post(`${SERVICE_PORTAL_API_BASE}/orders/123/submit_order`, mockOnce({
status: 200
}));
const expectedActions = [{
Expand Down
8 changes: 5 additions & 3 deletions src/test/redux/actions/portfolio-actions.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ describe('Portfolio actions', () => {
mockStore = configureStore(middlewares);
});

afterEach(() => {
fetchMock.reset();
});

it('should dispatch correct actions after fetching portfolios', () => {
const store = mockStore({
portfolioReducer: {
Expand Down Expand Up @@ -120,9 +124,7 @@ describe('Portfolio actions', () => {
it('should dispatch correct actions after fetchPortfolioItemsWithPortfolio action was called', () => {
const store = mockStore({});

apiClientMock.get(SERVICE_PORTAL_API_BASE + '/portfolios/123/portfolio_items', mockOnce({
body: { data: [ 'foo' ]}
}));
fetchMock.getOnce(SERVICE_PORTAL_API_BASE + '/portfolios/123/portfolio_items', { data: [ 'foo' ]});

const expectedActions = [{
type: `${FETCH_PORTFOLIO_ITEMS_WITH_PORTFOLIO}_PENDING`
Expand Down

0 comments on commit 27ffcd9

Please sign in to comment.