package com.constellio.sdk.tests;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import com.constellio.app.modules.es.navigation.ESViews;
import com.constellio.app.modules.rm.navigation.RMViews;
import com.constellio.app.modules.robots.ui.navigation.RobotViews;
import com.constellio.app.modules.tasks.navigation.TaskViews;
import com.constellio.app.ui.application.Navigation;
import com.constellio.app.ui.application.CoreViews;
import com.constellio.app.ui.pages.base.BaseView;
public class SDKViewNavigation {
public CoreViews coreViews;
public ESViews esViews;
public RMViews rmViews;
public TaskViews taskViews;
public RobotViews robotViews;
public SDKViewNavigation(BaseView view) {
Navigation navigation = mock(Navigation.class, "navigation");
coreViews = mock(CoreViews.class, "coreViews");
esViews = mock(ESViews.class, "esViews");
rmViews = mock(RMViews.class, "rmViews");
taskViews = mock(TaskViews.class, "taskViews");
robotViews = mock(RobotViews.class, "robotViews");
when(view.navigate()).thenReturn(navigation);
when(navigation.to()).thenReturn(coreViews);
when(navigation.to(any(Class.class))).thenAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation)
throws Throwable {
return getMockedViews((Class) invocation.getArguments()[0]);
}
});
}
public <T> T getMockedViews(Class<T> viewsClass) {
if (CoreViews.class.equals(viewsClass)) {
return (T) coreViews;
} else if (RMViews.class.equals(viewsClass)) {
return (T) rmViews;
} else if (ESViews.class.equals(viewsClass)) {
return (T) esViews;
} else if (TaskViews.class.equals(viewsClass)) {
return (T) taskViews;
} else if (RobotViews.class.equals(viewsClass)) {
return (T) robotViews;
} else {
throw new RuntimeException("Unsupported view class : " + viewsClass);
}
}
}