package org.bonitasoft.web.rest.server.datastore.application;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.bonitasoft.engine.business.application.ApplicationCreator;
import org.bonitasoft.engine.business.application.ApplicationField;
import org.bonitasoft.engine.business.application.ApplicationState;
import org.bonitasoft.engine.business.application.ApplicationUpdater;
import org.bonitasoft.engine.business.application.impl.ApplicationImpl;
import org.bonitasoft.web.rest.model.application.ApplicationItem;
import org.bonitasoft.web.rest.server.APITestWithMock;
import org.junit.Before;
import org.junit.Test;
public class ApplicationItemConverterTest extends APITestWithMock {
private static final String STATE = ApplicationState.DEACTIVATED.name();
private static final long UPDATED_BY = 12L;
private static final long CREATED_BY = 11;
private static final String ICON_PATH = "/icon.jpg";
private static final String DESCRIPTION = "App description";
private static final String VERSION = "1.0";
private static final String TOKEN = "app";
private static final String DISPLAY_NAME = "display app name";
private static final Date CREATION_DATE = new Date();
private static final Date UPDATE_DATE = new Date(CREATION_DATE.getTime() + 1000);
private static final long PROFILE_ID = 1L;
private static final long HOME_PAGE_ID = 2L;
private static final long LAYOUT_ID = 3L;
private static final long THEME_ID = 4L;
private ApplicationItemConverter converter;
@Before
public void setUp() throws Exception {
converter = new ApplicationItemConverter();
}
@Test
public void toApplicationItem_should_map_all_fields() throws Exception {
//given
final ApplicationImpl application = new ApplicationImpl(TOKEN, VERSION, DESCRIPTION, LAYOUT_ID, THEME_ID);
application.setId(15);
application.setDisplayName(DISPLAY_NAME);
application.setIconPath(ICON_PATH);
application.setCreationDate(CREATION_DATE);
application.setCreatedBy(CREATED_BY);
application.setLastUpdateDate(UPDATE_DATE);
application.setUpdatedBy(UPDATED_BY);
application.setState(STATE);
application.setProfileId(PROFILE_ID);
application.setHomePageId(HOME_PAGE_ID);
//when
final ApplicationItem item = converter.toApplicationItem(application);
//then
assertThat(item).isNotNull();
assertThat(item.getId().toLong()).isEqualTo(15);
assertThat(item.getToken()).isEqualTo(TOKEN);
assertThat(item.getDisplayName()).isEqualTo(DISPLAY_NAME);
assertThat(item.getVersion()).isEqualTo(VERSION);
assertThat(item.getDescription()).isEqualTo(DESCRIPTION);
assertThat(item.getIconPath()).isEqualTo(ICON_PATH);
assertThat(item.getCreationDate()).isEqualTo(String.valueOf(CREATION_DATE.getTime()));
assertThat(item.getCreatedBy()).isEqualTo(CREATED_BY);
assertThat(item.getLastUpdateDate()).isEqualTo(String.valueOf(UPDATE_DATE.getTime()));
assertThat(item.getUpdatedBy()).isEqualTo(UPDATED_BY);
assertThat(item.getState()).isEqualTo(STATE);
assertThat(item.getProfileId().toLong()).isEqualTo(PROFILE_ID);
assertThat(item.getHomePageId().toLong()).isEqualTo(HOME_PAGE_ID);
assertThat(item.getLayoutId().toLong()).isEqualTo(LAYOUT_ID);
}
@Test
public void applicationItem_with_null_homepage_id_should_not_return_null() throws Exception {
//given
final ApplicationImpl application = new ApplicationImpl(DISPLAY_NAME, VERSION, DESCRIPTION, LAYOUT_ID, THEME_ID);
application.setId(15);
application.setDisplayName(DISPLAY_NAME);
application.setIconPath(ICON_PATH);
application.setCreationDate(CREATION_DATE);
application.setCreatedBy(CREATED_BY);
application.setLastUpdateDate(UPDATE_DATE);
application.setUpdatedBy(UPDATED_BY);
application.setState(STATE);
application.setProfileId(PROFILE_ID);
application.setHomePageId(null);
//when
final ApplicationItem item = converter.toApplicationItem(application);
//then
assertThat(item).isNotNull();
assertThat(item.getAttributeValue(ApplicationItem.ATTRIBUTE_HOME_PAGE_ID)).isEqualTo("-1");
}
@Test
public void applicationItem_with_null_Layout_id_should_not_return_null() throws Exception {
//given
final ApplicationImpl application = new ApplicationImpl(DISPLAY_NAME, VERSION, DESCRIPTION, null, THEME_ID);
application.setId(15);
application.setDisplayName(DISPLAY_NAME);
application.setIconPath(ICON_PATH);
application.setCreationDate(CREATION_DATE);
application.setCreatedBy(CREATED_BY);
application.setLastUpdateDate(UPDATE_DATE);
application.setUpdatedBy(UPDATED_BY);
application.setState(STATE);
application.setProfileId(PROFILE_ID);
application.setHomePageId(null);
//when
final ApplicationItem item = converter.toApplicationItem(application);
//then
assertThat(item).isNotNull();
assertThat(item.getAttributeValue(ApplicationItem.ATTRIBUTE_LAYOUT_ID)).isEqualTo("-1");
}
@Test
public void applicationItem_with_null_Theme_id_should_not_return_null() throws Exception {
//given
final ApplicationImpl application = new ApplicationImpl(DISPLAY_NAME, VERSION, DESCRIPTION, LAYOUT_ID, null);
application.setId(15);
application.setDisplayName(DISPLAY_NAME);
application.setIconPath(ICON_PATH);
application.setCreationDate(CREATION_DATE);
application.setCreatedBy(CREATED_BY);
application.setLastUpdateDate(UPDATE_DATE);
application.setUpdatedBy(UPDATED_BY);
application.setState(STATE);
application.setProfileId(PROFILE_ID);
application.setHomePageId(null);
//when
final ApplicationItem item = converter.toApplicationItem(application);
//then
assertThat(item).isNotNull();
assertThat(item.getAttributeValue(ApplicationItem.ATTRIBUTE_THEME_ID)).isEqualTo("-1");
}
@Test
public void toApplicationCreator_should_map_all_fields() throws Exception {
//given
final ApplicationItem item = new ApplicationItem();
item.setToken(TOKEN);
item.setDisplayName(DISPLAY_NAME);
item.setVersion(VERSION);
item.setDescription(DESCRIPTION);
item.setIconPath(ICON_PATH);
item.setProfileId(PROFILE_ID);
//when
final ApplicationCreator creator = converter.toApplicationCreator(item);
//then
assertThat(creator).isNotNull();
final Map<ApplicationField, Serializable> fields = creator.getFields();
assertThat(fields.get(ApplicationField.TOKEN)).isEqualTo(TOKEN);
assertThat(fields.get(ApplicationField.DISPLAY_NAME)).isEqualTo(DISPLAY_NAME);
assertThat(fields.get(ApplicationField.VERSION)).isEqualTo(VERSION);
assertThat(fields.get(ApplicationField.DESCRIPTION)).isEqualTo(DESCRIPTION);
assertThat(fields.get(ApplicationField.ICON_PATH)).isEqualTo(ICON_PATH);
assertThat(fields.get(ApplicationField.PROFILE_ID)).isEqualTo(PROFILE_ID);
}
@Test
public void toApplicationUpdater_should_map_all_fields() {
//given
final HashMap<String, String> fields = new HashMap<String, String>();
fields.put(ApplicationItem.ATTRIBUTE_TOKEN, TOKEN);
fields.put(ApplicationItem.ATTRIBUTE_DISPLAY_NAME, DISPLAY_NAME);
fields.put(ApplicationItem.ATTRIBUTE_DESCRIPTION, DESCRIPTION);
fields.put(ApplicationItem.ATTRIBUTE_VERSION, VERSION);
fields.put(ApplicationItem.ATTRIBUTE_ICON_PATH, ICON_PATH);
fields.put(ApplicationItem.ATTRIBUTE_PROFILE_ID, String.valueOf(PROFILE_ID));
fields.put(ApplicationItem.ATTRIBUTE_HOME_PAGE_ID, String.valueOf(HOME_PAGE_ID));
fields.put(ApplicationItem.ATTRIBUTE_STATE, STATE);
//when
final ApplicationUpdater updater = converter.toApplicationUpdater(fields);
//then
assertThat(updater).isNotNull();
assertThat(updater.getFields().get(ApplicationField.TOKEN)).isEqualTo(TOKEN);
assertThat(updater.getFields().get(ApplicationField.DISPLAY_NAME)).isEqualTo(DISPLAY_NAME);
assertThat(updater.getFields().get(ApplicationField.DESCRIPTION)).isEqualTo(DESCRIPTION);
assertThat(updater.getFields().get(ApplicationField.VERSION)).isEqualTo(VERSION);
assertThat(updater.getFields().get(ApplicationField.ICON_PATH)).isEqualTo(ICON_PATH);
assertThat(updater.getFields().get(ApplicationField.PROFILE_ID)).isEqualTo(PROFILE_ID);
assertThat(updater.getFields().get(ApplicationField.HOME_PAGE_ID)).isEqualTo(HOME_PAGE_ID);
}
@Test
public void update_with_no_homePageId_should_send_null() {
//given
final HashMap<String, String> fields = new HashMap<String, String>();
fields.put(ApplicationItem.ATTRIBUTE_HOME_PAGE_ID, "-1");
//when
final ApplicationUpdater updater = converter.toApplicationUpdater(fields);
//then
assertThat(updater).isNotNull();
assertThat(updater.getFields().get(ApplicationField.HOME_PAGE_ID)).isEqualTo(null);
}
@Test
public void update_with_no_layout_page_should_send_null() {
//given
final HashMap<String, String> fields = new HashMap<String, String>();
fields.put(ApplicationItem.ATTRIBUTE_LAYOUT_ID, "-1");
//when
final ApplicationUpdater updater = converter.toApplicationUpdater(fields);
//then
assertThat(updater).isNotNull();
assertThat(updater.getFields().get(ApplicationField.LAYOUT_ID)).isEqualTo(null);
}
@Test
public void update_with_no_Theme_page_should_send_null() {
//given
final HashMap<String, String> fields = new HashMap<String, String>();
fields.put(ApplicationItem.ATTRIBUTE_THEME_ID, "-1");
//when
final ApplicationUpdater updater = converter.toApplicationUpdater(fields);
//then
assertThat(updater).isNotNull();
assertThat(updater.getFields().get(ApplicationField.THEME_ID)).isEqualTo(null);
}
}