/* * Seldon -- open source prediction engine * ======================================= * Copyright 2011-2015 Seldon Technologies Ltd and Rummble Ltd (http://www.seldon.io/) * ********************************************************************************************** * * 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. * ********************************************************************************************** */ package io.seldon.client.test; import io.seldon.client.beans.*; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; /** * Superseded by {@link ApiClientTest} * * Created by: marc on 05/08/2011 at 17:42 */ @Ignore public class ApiBeansTest extends BaseBeansTest { private static final Integer USER_LIMIT = 10; private static final Integer ITEM_LIMIT = 10; private static final Integer USER_ACTION_LIMIT = 10; private static final Integer USER_RECOMMENDATIONS_LIMIT = 10; private static final Integer DIMENSIONS_LIMIT = 15; private List<UserBean> users; private List<ItemBean> items; private List<DimensionBean> dimensions; private List<ItemTypeBean> itemTypes; private List<ActionTypeBean> actionTypes; /** * Users, items and dimensions are made available to all tests. * <p/> * The endpoints used to retrieve these data are tested separately below; should retrieval fail here, * we simply create empty lists. */ @Before public void setup() { setupUsers(); setupItems(); setupDimensions(); setupActionTypes(); setupItemTypes(); } private void setupDimensions() { try { this.dimensions = getDimensions(); } catch (ErrorBeanException e) { this.dimensions = new LinkedList<DimensionBean>(); } } private void setupItems() { try { ItemsBean itemsBean = (ItemsBean) checkedResource(apiService.getItems(ITEM_LIMIT, false)); this.items = itemsBean.getList(); } catch (ErrorBeanException e) { logger.error("Couldn't retrieve items."); this.items = new LinkedList<ItemBean>(); } } private void setupUsers() { try { UsersBean usersBean = (UsersBean) checkedResource(apiService.getUsers(USER_LIMIT, false)); this.users = usersBean.getList(); } catch (ErrorBeanException e) { logger.error("Couldn't retrieve users."); this.users = new LinkedList<UserBean>(); } } private void setupItemTypes() { try { ItemTypesBean itemTypesBean = (ItemTypesBean) checkedResource(apiService.getItemTypes()); this.itemTypes = itemTypesBean.getList(); } catch(ErrorBeanException e) { logger.error("Couldn't retrieve item types."); this.itemTypes = new LinkedList<ItemTypeBean>(); } } private void setupActionTypes() { try { ActionTypesBean actionTypesBean = (ActionTypesBean) checkedResource(apiService.getActionTypes()); this.actionTypes = actionTypesBean.getList(); } catch(ErrorBeanException e) { logger.error("Couldn't retrieve action types."); this.actionTypes = new LinkedList<ActionTypeBean>(); } } @Test public void retrieveUsers() throws ErrorBeanException { UsersBean usersBean = (UsersBean) checkedResource(apiService.getUsers(USER_LIMIT, false)); List<UserBean> userBeans = usersBean.getList(); logUserInfo(userBeans); } @Test public void retrieveUsersFull() throws ErrorBeanException { UsersBean usersBean = (UsersBean) checkedResource(apiService.getUsers(USER_LIMIT, true)); List<UserBean> userBeans = usersBean.getList(); logUserInfo(userBeans); } @Test public void retrieveUsersById() throws ErrorBeanException { for (UserBean user : users) { String userId = user.getId(); UserBean retrievedUser = (UserBean) checkedResource(apiService.getUser(userId, false)); logger.debug("Retrieved: " + retrievedUser); } } @Test public void retrieveUsersFullById() throws ErrorBeanException { for (UserBean user : users) { String userId = user.getId(); UserBean retrievedUser = (UserBean) checkedResource(apiService.getUser(userId, true)); logger.debug("Retrieved: " + retrievedUser); } } @Test public void retrieveItems() throws ErrorBeanException { ItemsBean itemsBean = (ItemsBean) checkedResource(apiService.getItems(ITEM_LIMIT, false)); List<ItemBean> itemsBeanList = itemsBean.getList(); logItemInfo(itemsBeanList); } @Test public void retrieveItemsFull() throws ErrorBeanException { ItemsBean itemsBean = (ItemsBean) checkedResource(apiService.getItems(ITEM_LIMIT, true)); List<ItemBean> itemsBeanList = itemsBean.getList(); logItemInfo(itemsBeanList); } @Test public void retrieveItemsById() throws ErrorBeanException { for (ItemBean item : items) { String itemId = item.getId(); ItemBean itemBean = (ItemBean) checkedResource(apiService.getItem(itemId, false)); logger.debug("Item: " + itemBean); } } @Test public void retrieveItemsFullById() throws ErrorBeanException { for (ItemBean item : items) { String itemId = item.getId(); ItemBean itemBean = (ItemBean) checkedResource(apiService.getItem(itemId, true)); logger.debug("Item: " + itemBean); } } @Test public void retrieveDimensions() throws ErrorBeanException { getDimensions(); } @Test public void retrieveDimensionsById() throws ErrorBeanException { //List<DimensionBean> dimensions = getDimensions(); for (DimensionBean knownDimension : dimensions) { String dimensionId = String.valueOf(knownDimension.getDimId()); DimensionBean dimensionBean = (DimensionBean) checkedResource(apiService.getDimensionById(dimensionId)); logger.debug("Dimension: " + dimensionBean); } } private List<DimensionBean> getDimensions() throws ErrorBeanException { DimensionsBean dimensionsBean = (DimensionsBean) checkedResource(apiService.getDimensions()); List<DimensionBean> dimensions = dimensionsBean.getList(); for (DimensionBean dimension : dimensions) { logger.debug("Dimension: " + dimension); } return dimensions; } @Test public void retrieveActionsForUsers() throws ErrorBeanException { for (UserBean user : users) { String userId = user.getId(); ActionsBean actions = (ActionsBean) checkedResource(apiService.getUserActions(userId, USER_ACTION_LIMIT)); List<ActionBean> actionsList = actions.getList(); for (ActionBean actionBean : actionsList) { logger.debug("Action: " + actionBean); } } } @Test public void retrieveActions() throws ErrorBeanException { ActionsBean actions = (ActionsBean) checkedResource(apiService.getActions()); List<ActionBean> actionsList = actions.getList(); for (ActionBean actionBean : actionsList) { logger.debug("Action: " + actionBean); } } @Test public void retrieveActionsById() throws ErrorBeanException { ActionsBean actions = (ActionsBean) checkedResource(apiService.getActions()); List<ActionBean> actionsList = actions.getList(); for (ActionBean actionBean : actionsList) { String actionId = String.valueOf(actionBean.getActionId()); ActionBean individualActionBean = (ActionBean) checkedResource(apiService.getActionById(actionId)); logger.debug("Action: " + individualActionBean); } } @Test public void retrieveRecommendationsForUser() throws ErrorBeanException { for (UserBean user : users) { String userId = user.getId(); ItemsBean recommendationsBean = (ItemsBean) checkedResource(apiService.getRecommendations(userId)); List<ItemBean> recommendations = recommendationsBean.getList(); for (ItemBean recommendation : recommendations) { logger.debug("Recommendation for user: " + userId + " => " + recommendation); } } } @Test public void retrieveRecommendationsWithDimensionsForUser() throws ErrorBeanException { for (UserBean user : users) { String userId = user.getId(); int limit = Math.min(dimensions.size(), DIMENSIONS_LIMIT); for (DimensionBean dimension : dimensions.subList(0, limit)) { int dimensionId = dimension.getDimId(); @SuppressWarnings({"NullableProblems"}) ItemsBean recommendationsBean = (ItemsBean) checkedResource( apiService.getRecommendations(userId, null, dimensionId, USER_RECOMMENDATIONS_LIMIT,null) ); List<ItemBean> recommendations = recommendationsBean.getList(); for (ItemBean recommendation : recommendations) { logger.debug("Recommendation for user: " + userId + " => in dimension: " + dimension + " => " + recommendation); } } } } @Test public void retrieveItemTypes() throws ErrorBeanException { ItemTypesBean itemTypes = (ItemTypesBean) checkedResource(apiService.getItemTypes()); List<ItemTypeBean> itemTypesList = itemTypes.getList(); for (ItemTypeBean itemTypeBean : itemTypesList) { logger.debug("ItemType: " + itemTypeBean); } } @Test public void retrieveActionTypes() throws ErrorBeanException { ActionTypesBean actionTypes = (ActionTypesBean) checkedResource(apiService.getActionTypes()); List<ActionTypeBean> actionTypesList = actionTypes.getList(); for (ActionTypeBean actionTypeBean : actionTypesList) { logger.debug("actionType: " + actionTypeBean); } } @Test public void retrieveRecommendationByType() throws ErrorBeanException { for(ItemTypeBean t : itemTypes) { for (UserBean user : users) { String userId = user.getId(); ItemsBean recommendationsBean = (ItemsBean) checkedResource(apiService.getRecommendationByItemType(userId, t.getTypeId(), USER_RECOMMENDATIONS_LIMIT)); List<ItemBean> recommendations = recommendationsBean.getList(); for (ItemBean recommendation : recommendations) { logger.debug("RecommendationByType"+ t.getName() + " for user: " + userId + " => " + recommendation); } } } } private void logUserInfo(List<UserBean> userBeans) { for (UserBean userBean : userBeans) { logger.debug(userBean); } } private void logItemInfo(List<ItemBean> itemsBeanList) { for (ItemBean itemBean : itemsBeanList) { logger.debug(itemBean); } } }