/* * Copyright 2017 TWO SIGMA OPEN SOURCE, LLC * * 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 com.twosigma.beaker.widgets; import com.twosigma.beaker.KernelTest; import com.twosigma.beaker.jupyter.SearchMessages; import com.twosigma.beaker.jupyter.comm.Comm; import com.twosigma.beaker.jupyter.msg.JupyterMessages; import com.twosigma.jupyter.message.Message; import java.io.Serializable; import java.util.List; import java.util.Map; import static com.twosigma.beaker.jupyter.msg.JupyterMessages.COMM_OPEN; import static com.twosigma.beaker.widgets.Widget.DISPLAY; import static com.twosigma.beaker.widgets.Widget.METHOD; import static org.assertj.core.api.Assertions.assertThat; public class TestWidgetUtils { public static void verifyOpenCommMsg(List<Message> messages, String modelNameValue, String viewNameValue) { Message widget = SearchMessages.getListWidgetsByViewName(messages, viewNameValue).get(0); Message layout = SearchMessages.getLayoutForWidget(messages, widget); verifyTypeMsg(widget,COMM_OPEN); Map data = getData(widget); assertThat(data.get(Layout.LAYOUT)).isEqualTo(Layout.IPY_MODEL + layout.getContent().get(Comm.COMM_ID)); assertThat(data.get(Widget.MODEL_MODULE)).isEqualTo(Widget.MODEL_MODULE_VALUE); assertThat(data.get(Widget.VIEW_MODULE)).isEqualTo(Widget.VIEW_MODULE_VALUE); assertThat(data.get(Widget.MODEL_NAME)).isEqualTo(modelNameValue); assertThat(data.get(Widget.VIEW_NAME)).isEqualTo(viewNameValue); } public static void verifyOpenCommMsgWitoutLayout(List<Message> messages, String modelNameValue, String viewNameValue) { Message message = SearchMessages.getListWidgetsByViewName(messages, viewNameValue).get(0); verifyTypeMsg(message,COMM_OPEN); Map data = getData(message); assertThat(data.get(Widget.MODEL_NAME)).isEqualTo(modelNameValue); assertThat(data.get(Widget.VIEW_NAME)).isEqualTo(viewNameValue); } public static void verifyInternalOpenCommMsg(Message message, String modelNameValue, String viewNameValue) { verifyTypeMsg(message,COMM_OPEN); Map data = getData(message); assertThat(data.get(Widget.MODEL_MODULE)).isEqualTo(BeakerxWidget.MODEL_MODULE_VALUE); assertThat(data.get(Widget.VIEW_MODULE)).isEqualTo(BeakerxWidget.VIEW_MODULE_VALUE); assertThat(data.get(Widget.MODEL_NAME)).isEqualTo(modelNameValue); assertThat(data.get(Widget.VIEW_NAME)).isEqualTo(viewNameValue); } public static void verifyInternalOpenCommMsgWitLayout(List<Message> messages, String modelNameValue, String viewNameValue) { Message widget = SearchMessages.getListWidgetsByViewName(messages, viewNameValue).get(0); Message layout = SearchMessages.getLayoutForWidget(messages, widget); verifyTypeMsg(widget,COMM_OPEN); Map data = getData(widget); assertThat(data.get(Layout.LAYOUT)).isEqualTo(Layout.IPY_MODEL + layout.getContent().get(Comm.COMM_ID)); assertThat(data.get(Widget.MODEL_MODULE)).isEqualTo(BeakerxWidget.MODEL_MODULE_VALUE); assertThat(data.get(Widget.VIEW_MODULE)).isEqualTo(BeakerxWidget.VIEW_MODULE_VALUE); assertThat(data.get(Widget.MODEL_NAME)).isEqualTo(modelNameValue); assertThat(data.get(Widget.VIEW_NAME)).isEqualTo(viewNameValue); } public static void verifyTypeMsg(Message widget, JupyterMessages jupyterMessages) { assertThat(widget.getHeader().getType()).isEqualTo(jupyterMessages.getName()); } @SuppressWarnings("unchecked") public static Map getData(Message message) { Map<String, Serializable> content = getContent(message); return (Map) content.get(Comm.DATA); } public static Map getContent(Message message) { return message.getContent(); } public static <T> void verifyMsgForProperty(KernelTest kernel, String propertyName, T expected) { Object actual = getValueForProperty(kernel, propertyName, expected.getClass()); assertThat(actual).isEqualTo(expected); } public static <T> T getValueForProperty(KernelTest kernel, String propertyName, Class<T> clazz) { assertThat(kernel.getPublishedMessages().size()).isEqualTo(1); Message message = kernel.getPublishedMessages().get(0); return getValueForProperty(message, propertyName, clazz); } public static <T> T getValueForProperty(Message message, String propertyName, Class<T> clazz) { Map data = TestWidgetUtils.getData(message); assertThat(data.get(Comm.METHOD)).isEqualTo(Comm.UPDATE); Object o = ((Map) data.get(Comm.STATE)).get(propertyName); return clazz.cast(o); } public static void verifyDisplayMsg(Message message) { Map data = getData(message); assertThat(data.get(METHOD)).isEqualTo(DISPLAY); } public static void verifyDisplayMsg(List<Message> messages) { List<Message> result = SearchMessages.getListByDataAttr(messages, METHOD, DISPLAY); assertThat(result.size()).isGreaterThan(0); assertThat(result.get(0)).isNotNull(); } }