KevinGG commented on a change in pull request #12372:
URL: https://github.com/apache/beam/pull/12372#discussion_r463182344



##########
File path: 
sdks/python/apache_beam/runners/interactive/extensions/apache-beam-jupyterlab-sidepanel/src/__tests__/kernel/KernelModel.test.ts
##########
@@ -0,0 +1,124 @@
+// 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.
+
+/**
+ * Tests for KernelModel module.
+ *
+ * Non camelcase fields are nbformat fields used in notebooks. Lint is ignored
+ * for them.
+ */
+
+import { KernelModel } from '../../kernel/KernelModel';
+
+const fakeSessionContext = {
+  session: {
+    kernel: {
+      requestExecute: function(): object {
+        return {
+          onIOPub: function(): void {
+            // do nothing
+          }
+        };
+      }
+    }
+  }
+};
+
+it('creates new future with IOPub callbacks when executing new code in 
kernel', () => {
+  const kernelModel = new KernelModel(fakeSessionContext as any);
+  kernelModel.execute('new code');
+  expect(kernelModel.future).not.toBe(null);
+  expect(kernelModel.future.onIOPub).not.toBe(null);
+});
+
+it('handles execute result from IOPub channel', () => {
+  const kernelModel = new KernelModel(fakeSessionContext as any);
+  kernelModel.execute('any code');
+  kernelModel.future.onIOPub({
+    header: {
+      // eslint-disable-next-line @typescript-eslint/camelcase
+      msg_type: 'execute_result'
+    },
+    content: {
+      data: {
+        'text/plain':
+          '\'{"pipelineId": {"metadata": {"name": "pipeline", "inMemoryId": 1, 
"type": "pipeline"}, "pcolls": {"pcollId": {"name": "pcoll", "inMemoryId": 2, 
"type": "pcollection"}}}}\''
+      },
+      channel: 'iopub'
+    }
+  } as any);
+  expect(kernelModel.executeResult).toEqual({
+    pipelineId: {
+      metadata: {
+        name: 'pipeline',
+        inMemoryId: 1,
+        type: 'pipeline'
+      },
+      pcolls: {
+        pcollId: {
+          name: 'pcoll',
+          inMemoryId: 2,
+          type: 'pcollection'
+        }
+      }
+    }
+  });
+});
+
+it('handles display data from IOPub channel', () => {
+  const kernelModel = new KernelModel(fakeSessionContext as any);
+  kernelModel.execute('any code');
+  const displayData = {
+    // eslint-disable-next-line @typescript-eslint/camelcase
+    output_type: 'display_data',
+    data: {
+      'text/html': '<div></div>',
+      'application/javascript': 'console.log(1);'

Review comment:
       It's a valid Javascript statement that logs to the console.
   
   In the test, it is executed. The result shows up in the `terminal`.
   This unit test doesn't do the execution though because it's just a data 
model not a UI component.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to