You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@toree.apache.org by lb...@apache.org on 2016/02/25 17:11:36 UTC

[2/2] incubator-toree git commit: Added tests for display

Added tests for display


Project: http://git-wip-us.apache.org/repos/asf/incubator-toree/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-toree/commit/085c2974
Tree: http://git-wip-us.apache.org/repos/asf/incubator-toree/tree/085c2974
Diff: http://git-wip-us.apache.org/repos/asf/incubator-toree/diff/085c2974

Branch: refs/heads/master
Commit: 085c2974cac984a2eb581367a1c000b953edb1ae
Parents: 8bbd7ee
Author: Gino Bustelo <lb...@apache.org>
Authored: Tue Feb 23 11:10:20 2016 -0600
Committer: Gino Bustelo <lb...@apache.org>
Committed: Tue Feb 23 11:10:20 2016 -0600

----------------------------------------------------------------------
 .../toree/kernel/api/DisplayMethodsSpec.scala   | 160 +++++++++++++++++++
 .../apache/toree/kernel/api/KernelSpec.scala    |  17 ++
 2 files changed, 177 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/085c2974/kernel/src/test/scala/org/apache/toree/kernel/api/DisplayMethodsSpec.scala
----------------------------------------------------------------------
diff --git a/kernel/src/test/scala/org/apache/toree/kernel/api/DisplayMethodsSpec.scala b/kernel/src/test/scala/org/apache/toree/kernel/api/DisplayMethodsSpec.scala
new file mode 100644
index 0000000..0130529
--- /dev/null
+++ b/kernel/src/test/scala/org/apache/toree/kernel/api/DisplayMethodsSpec.scala
@@ -0,0 +1,160 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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 org.apache.toree.kernel.api
+
+import akka.actor.ActorSystem
+import akka.testkit.{ImplicitSender, TestKit, TestProbe}
+import org.apache.toree.kernel.protocol.v5
+import org.apache.toree.kernel.protocol.v5.KernelMessage
+import org.mockito.Mockito._
+import org.scalatest.mock.MockitoSugar
+import org.scalatest.{BeforeAndAfter, FunSpecLike, Matchers}
+import play.api.libs.json.Json
+
+import scala.concurrent.duration._
+
+class DisplayMethodsSpec extends TestKit(
+  ActorSystem("DisplayMethodsSpec")
+) with ImplicitSender with FunSpecLike with Matchers with MockitoSugar
+  with BeforeAndAfter
+{
+  private val MaxDuration = 300.milliseconds
+
+  private var kernelMessageRelayProbe: TestProbe = _
+  private var mockParentHeader: v5.ParentHeader = _
+  private var mockActorLoader: v5.kernel.ActorLoader = _
+  private var mockKernelMessage: v5.KernelMessage = _
+  private var displayMethods: DisplayMethods = _
+
+  before {
+    kernelMessageRelayProbe = TestProbe()
+
+    mockParentHeader = mock[v5.ParentHeader]
+
+    mockActorLoader = mock[v5.kernel.ActorLoader]
+    doReturn(system.actorSelection(kernelMessageRelayProbe.ref.path))
+      .when(mockActorLoader).load(v5.SystemActorType.KernelMessageRelay)
+
+    mockKernelMessage = mock[v5.KernelMessage]
+    doReturn(mockParentHeader).when(mockKernelMessage).header
+
+    displayMethods = new DisplayMethods(mockActorLoader, mockKernelMessage, v5.KMBuilder())
+  }
+
+  describe("DisplayMethods") {
+    describe("#()") {
+      it("should put the header of the given message as the parent header") {
+        val expected = mockKernelMessage.header
+        val actual = displayMethods.kmBuilder.build.parentHeader
+
+        actual should be (expected)
+      }
+    }
+
+    describe("#content") {
+      it("should send a message containing all the contents and mimetype") {
+        val expectedContent = "some text"
+        val expectedMimeType = "some mime type"
+
+        displayMethods.content(expectedMimeType, expectedContent)
+
+        val outgoingMessage = kernelMessageRelayProbe.receiveOne(MaxDuration)
+        val kernelMessage = outgoingMessage.asInstanceOf[KernelMessage]
+
+        val actualDisplayData = Json.parse(kernelMessage.contentString)
+          .as[v5.content.DisplayData].data
+
+        actualDisplayData should contain (expectedMimeType -> expectedContent)
+      }
+    }
+
+    describe("#html") {
+      it("should send a message containing the contents and the html mimetype") {
+        val expectedContent = "some text"
+
+        displayMethods.html(expectedContent)
+
+        val outgoingMessage = kernelMessageRelayProbe.receiveOne(MaxDuration)
+        val kernelMessage = outgoingMessage.asInstanceOf[KernelMessage]
+
+        val actualDisplayData = Json.parse(kernelMessage.contentString)
+          .as[v5.content.DisplayData].data
+
+        actualDisplayData should contain ("text/html" -> expectedContent)
+      }
+    }
+
+    describe("#javascript") {
+      it("should send a message containing the contents and the javascript mimetype") {
+        val expectedContent = "some text"
+
+        displayMethods.javascript(expectedContent)
+
+        val outgoingMessage = kernelMessageRelayProbe.receiveOne(MaxDuration)
+        val kernelMessage = outgoingMessage.asInstanceOf[KernelMessage]
+
+        val actualDisplayData = Json.parse(kernelMessage.contentString)
+          .as[v5.content.DisplayData].data
+
+        actualDisplayData should contain ("application/javascript" -> expectedContent)
+      }
+    }
+
+    describe("#clear") {
+      it("should send a clear-output message with wait false when no args passed") {
+
+        displayMethods.clear()
+
+        val outgoingMessage = kernelMessageRelayProbe.receiveOne(MaxDuration)
+        val kernelMessage = outgoingMessage.asInstanceOf[KernelMessage]
+
+        val actualClearOutput = Json.parse(kernelMessage.contentString)
+          .as[v5.content.ClearOutput]
+
+        actualClearOutput._wait should be (false)
+      }
+
+      it("should send a clear-output message with wait false when false passed") {
+
+        displayMethods.clear(false)
+
+        val outgoingMessage = kernelMessageRelayProbe.receiveOne(MaxDuration)
+        val kernelMessage = outgoingMessage.asInstanceOf[KernelMessage]
+
+        val actualClearOutput = Json.parse(kernelMessage.contentString)
+          .as[v5.content.ClearOutput]
+
+        actualClearOutput._wait should be (false)
+      }
+
+      it("should send a clear-output message with wait true when true passed") {
+
+        displayMethods.clear(true)
+
+        val outgoingMessage = kernelMessageRelayProbe.receiveOne(MaxDuration)
+        val kernelMessage = outgoingMessage.asInstanceOf[KernelMessage]
+
+        val actualClearOutput = Json.parse(kernelMessage.contentString)
+          .as[v5.content.ClearOutput]
+
+        actualClearOutput._wait should be (true)
+      }
+    }
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/085c2974/kernel/src/test/scala/org/apache/toree/kernel/api/KernelSpec.scala
----------------------------------------------------------------------
diff --git a/kernel/src/test/scala/org/apache/toree/kernel/api/KernelSpec.scala b/kernel/src/test/scala/org/apache/toree/kernel/api/KernelSpec.scala
index 20010a3..0118cec 100644
--- a/kernel/src/test/scala/org/apache/toree/kernel/api/KernelSpec.scala
+++ b/kernel/src/test/scala/org/apache/toree/kernel/api/KernelSpec.scala
@@ -176,6 +176,23 @@ class KernelSpec extends FunSpec with Matchers with MockitoSugar
       }
     }
 
+    describe("#display") {
+      it("should throw an exception if the ExecuteRequestState has not been set") {
+        intercept[IllegalArgumentException] {
+          kernel.display
+        }
+      }
+
+      it("should create a DisplayMethods instance if the ExecuteRequestState has been set") {
+        ExecuteRequestState.processIncomingKernelMessage(
+          new KernelMessage(Nil, "", mock[Header], mock[ParentHeader],
+            mock[Metadata], "")
+        )
+
+        kernel.display shouldBe a [DisplayMethods]
+      }
+    }
+
     describe("when spark.master is set in config") {
 
       it("should create SparkConf") {