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") {