use of org.knime.testing.node.view.NodeViewNodeModel in project knime-core by knime.
the class NodeViewEntTest method testNodeViewEntWithSelectionEventSource.
/**
* Tests the {@link SelectionEventSource} in conjunction with {@link NodeViewEnt}.
*
* @throws IOException
*/
@Test
public void testNodeViewEntWithSelectionEventSource() throws IOException {
var wfm = WorkflowManagerUtil.createEmptyWorkflow();
Function<NodeViewNodeModel, NodeView> nodeViewCreator = m -> NodeViewTest.createNodeView(Page.builder(() -> "blub", "index.html").build());
NativeNodeContainer nnc = WorkflowManagerUtil.createAndAddNode(wfm, new NodeViewNodeFactory(nodeViewCreator));
wfm.executeAllAndWaitUntilDone();
var hiLiteHandler = nnc.getNodeModel().getInHiLiteHandler(0);
hiLiteHandler.fireHiLiteEvent(new RowKey("k1"), new RowKey("k2"));
@SuppressWarnings("unchecked") final BiConsumer<String, SelectionEvent> consumerMock = mock(BiConsumer.class);
var selectionEventSource = SelectionEventSourceTest.createSelectionEventSource(consumerMock);
var initialSelection = selectionEventSource.addEventListenerAndGetInitialEventFor(nnc).map(SelectionEvent::getKeys).orElse(Collections.emptyList());
var nodeViewEnt = new NodeViewEnt(nnc, () -> initialSelection);
assertThat(nodeViewEnt.getInitialSelection(), is(List.of("k1", "k2")));
hiLiteHandler.fireHiLiteEvent(new RowKey("k3"));
await().pollDelay(ONE_HUNDRED_MILLISECONDS).timeout(FIVE_SECONDS).untilAsserted(() -> verify(consumerMock, times(1)).accept(eq("SelectionEvent"), argThat(se -> se.getKeys().equals(List.of("k3")) && se.getMode() == SelectionEventMode.ADD)));
WorkflowManagerUtil.disposeWorkflow(wfm);
}
use of org.knime.testing.node.view.NodeViewNodeModel in project knime-core by knime.
the class NodeViewEntTest method testNodeViewEnt.
/**
* Tests {@link NodeViewEnt#NodeViewEnt(NativeNodeContainer)}.
*
* @throws IOException
*/
@Test
public void testNodeViewEnt() throws IOException {
var wfm = WorkflowManagerUtil.createEmptyWorkflow();
NativeNodeContainer nncWithoutNodeView = WorkflowManagerUtil.createAndAddNode(wfm, new VirtualSubNodeInputNodeFactory(null, new PortType[0]));
Assert.assertThrows(IllegalArgumentException.class, () -> new NodeViewEnt(nncWithoutNodeView));
Function<NodeViewNodeModel, NodeView> nodeViewCreator = m -> {
Page p = Page.builder(() -> "blub", "index.html").build();
return NodeViewTest.createNodeView(p, new TextInitialDataService() {
@Override
public String getInitialData() {
return "dummy initial data";
}
}, null, null);
};
NativeNodeContainer nnc = WorkflowManagerUtil.createAndAddNode(wfm, new NodeViewNodeFactory(nodeViewCreator));
wfm.executeAllAndWaitUntilDone();
nnc.setNodeMessage(NodeMessage.newWarning("node message"));
nnc.getNodeAnnotation().getData().setText("node annotation");
var ent = new NodeViewEnt(nnc, null);
assertThat(ent.getProjectId(), startsWith("workflow"));
assertThat(ent.getWorkflowId(), is("root"));
assertThat(ent.getNodeId(), is("root:2"));
assertThat(ent.getInitialData(), is("dummy initial data"));
assertThat(ent.getInitialSelection(), is(nullValue()));
var resourceInfo = ent.getResourceInfo();
assertThat(resourceInfo.getUrl(), endsWith("index.html"));
assertThat(resourceInfo.getPath(), is(nullValue()));
assertThat(resourceInfo.getType(), is(Resource.Type.HTML.toString()));
assertThat(resourceInfo.getId(), is(PageUtil.getPageId(nnc, false, false)));
var nodeInfo = ent.getNodeInfo();
assertThat(nodeInfo.getNodeName(), is("NodeView"));
assertThat(nodeInfo.getNodeAnnotation(), is("node annotation"));
assertThat(nodeInfo.getNodeState(), is("executed"));
assertThat(nodeInfo.getNodeWarnMessage(), is("node message"));
assertThat(nodeInfo.getNodeErrorMessage(), is(nullValue()));
// a node view as a 'component' without initial data
nodeViewCreator = m -> {
Page p = Page.builder(PageTest.BUNDLE_ID, "files", "component.umd.min.js").build();
return NodeViewTest.createNodeView(p);
};
nnc = WorkflowManagerUtil.createAndAddNode(wfm, new NodeViewNodeFactory(nodeViewCreator));
wfm.executeAllAndWaitUntilDone();
ent = new NodeViewEnt(nnc, null);
resourceInfo = ent.getResourceInfo();
assertThat(ent.getInitialData(), is(nullValue()));
assertThat(resourceInfo.getType(), is(Resource.Type.VUE_COMPONENT_LIB.toString()));
assertThat(resourceInfo.getUrl(), endsWith("component.umd.min.js"));
assertThat(resourceInfo.getPath(), is(nullValue()));
// test to create a node view entity while running headless (e.g. on the executor)
NativeNodeContainer nnc2 = nnc;
runOnExecutor(() -> {
var ent2 = new NodeViewEnt(nnc2, null);
assertThat(ent2.getResourceInfo().getPath(), endsWith("component.umd.min.js"));
assertThat(ent2.getResourceInfo().getUrl(), is(nullValue()));
});
WorkflowManagerUtil.disposeWorkflow(wfm);
}
use of org.knime.testing.node.view.NodeViewNodeModel in project knime-core by knime.
the class JsonReexecuteDataServiceTest method testJsonReexecuteDataService.
@SuppressWarnings("javadoc")
@Test
public void testJsonReexecuteDataService() throws IOException {
var wfm = WorkflowManagerUtil.createEmptyWorkflow();
var page = Page.builder(() -> "content", "index.html").build();
NativeNodeContainer nnc = NodeViewManagerTest.createNodeWithNodeView(wfm, m -> NodeViewTest.createNodeView(page, m));
wfm.executeAllAndWaitUntilDone();
NodeViewManager.getInstance().callTextApplyDataService(nnc, "data to apply");
NodeViewNodeModel model = (NodeViewNodeModel) nnc.getNodeModel();
Awaitility.await().untilAsserted(() -> {
assertThat(model.getPreReexecuteData(), is("data to apply"));
assertThat(model.getExecuteCount(), is(2));
});
WorkflowManagerUtil.disposeWorkflow(wfm);
}
Aggregations