add dummy object for empty input type

Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/9ab00815
Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/9ab00815
Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/9ab00815

Branch: refs/heads/master
Commit: 9ab0081573eae01c2b26a30f99e3d10c26cde1c3
Parents: ca35bb5
Author: daewon <[email protected]>
Authored: Tue Mar 6 20:05:19 2018 +0900
Committer: daewon <[email protected]>
Committed: Tue Mar 6 20:05:19 2018 +0900

----------------------------------------------------------------------
 .../apache/s2graph/core/mysqls/LabelMeta.scala  |   4 +-
 .../graphql/types/S2ManagementType.scala        |   8 +-
 .../org/apache/s2graph/graphql/SchemaTest.scala | 101 ++++++++++++++++---
 3 files changed, 94 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/9ab00815/s2core/src/main/scala/org/apache/s2graph/core/mysqls/LabelMeta.scala
----------------------------------------------------------------------
diff --git 
a/s2core/src/main/scala/org/apache/s2graph/core/mysqls/LabelMeta.scala 
b/s2core/src/main/scala/org/apache/s2graph/core/mysqls/LabelMeta.scala
index c715c47..3f54f49 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/mysqls/LabelMeta.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/mysqls/LabelMeta.scala
@@ -205,7 +205,9 @@ case class LabelMeta(id: Option[Int],
                      defaultValue: String,
                      dataType: String,
                      storeInGlobalIndex: Boolean = false) {
-  lazy val toJson = Json.obj("name" -> name, "defaultValue" -> defaultValue, 
"dataType" -> dataType)
+
+  lazy val toJson = Json.obj("name" -> name, "defaultValue" -> defaultValue, 
"dataType" -> dataType, "storeInGlobalIndex" -> storeInGlobalIndex)
+
   override def equals(other: Any): Boolean = {
     if (!other.isInstanceOf[LabelMeta]) false
     else {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/9ab00815/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2ManagementType.scala
----------------------------------------------------------------------
diff --git 
a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2ManagementType.scala
 
b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2ManagementType.scala
index 3317755..cf0fa32 100644
--- 
a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2ManagementType.scala
+++ 
b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2ManagementType.scala
@@ -208,25 +208,25 @@ class S2ManagementType(repo: GraphRepository) {
   val AddPropServiceType = InputObjectType[Vector[PartialServiceColumn]](
     "Input_Service_ServiceColumn_Props",
     description = "desc",
-    fields = serviceColumnOnServiceWithPropInputObjectFields
+    fields = DummyInputField +: serviceColumnOnServiceWithPropInputObjectFields
   )
 
   val ServiceColumnSelectType = InputObjectType[Vector[PartialServiceColumn]](
     "Input_Service_ServiceColumn",
     description = "desc",
-    fields = serviceColumnOnServiceInputObjectFields
+    fields = DummyInputField +: serviceColumnOnServiceInputObjectFields
   )
 
   val LabelPropType = InputObjectType[Vector[PartialLabelMeta]](
     "Input_Label_Props",
     description = "desc",
-    fields = labelPropsInputFields
+    fields = DummyInputField +: labelPropsInputFields
   )
 
   val InputServiceType = InputObjectType[PartialServiceColumn](
     "Input_Service",
     description = "desc",
-    fields = serviceColumnOnServiceInputObjectFields
+    fields = DummyInputField +: serviceColumnOnServiceInputObjectFields
   )
 
   lazy val serviceField: Field[GraphRepository, Any] = Field(

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/9ab00815/s2graphql/src/test/scala/org/apache/s2graph/graphql/SchemaTest.scala
----------------------------------------------------------------------
diff --git 
a/s2graphql/src/test/scala/org/apache/s2graph/graphql/SchemaTest.scala 
b/s2graphql/src/test/scala/org/apache/s2graph/graphql/SchemaTest.scala
index 6ff3d02..81a6630 100644
--- a/s2graphql/src/test/scala/org/apache/s2graph/graphql/SchemaTest.scala
+++ b/s2graphql/src/test/scala/org/apache/s2graph/graphql/SchemaTest.scala
@@ -1,10 +1,13 @@
 package org.apache.s2graph.graphql
 
+import java.io
+
 import com.typesafe.config.{Config, ConfigFactory}
 import org.apache.s2graph.core.Management.JsonModel.Prop
 import org.apache.s2graph.core.mysqls.{Label, Service}
 import org.apache.s2graph.core.{Management, S2Graph}
 import org.apache.s2graph.core.rest.RequestParser
+import org.apache.s2graph.core.utils.logger
 import org.apache.s2graph.graphql.repository.GraphRepository
 import org.scalatest.{BeforeAndAfterAll, FunSuite, Matchers}
 import play.api.libs.json.{JsObject, JsString, Json}
@@ -18,6 +21,7 @@ import sangria.execution.Executor
 import sangria.execution.deferred.DeferredResolver
 import sangria.parser.QueryParser
 import sangria.renderer.SchemaRenderer
+import sangria.schema.Schema
 
 import scala.util._
 
@@ -27,6 +31,7 @@ class SchemaTest extends FunSuite with Matchers with 
BeforeAndAfterAll {
   var management: Management = _
   var config: Config = _
   var s2Repository: GraphRepository = _
+  var s2Schema: Schema[GraphRepository, Any] = _
 
   override def beforeAll = {
     config = ConfigFactory.load()
@@ -76,6 +81,13 @@ class SchemaTest extends FunSuite with Matchers with 
BeforeAndAfterAll {
 
     val isPrepared = List(serviceTry, serviceColumnTry, 
labelTry).forall(_.isSuccess)
 
+    s2Schema = new SchemaDef(s2Repository).S2GraphSchema
+
+    println("-" * 80)
+    println(SchemaRenderer.renderSchema(s2Schema))
+    println("-" * 80)
+
+
     require(isPrepared, "should created metadata")
   }
 
@@ -83,13 +95,6 @@ class SchemaTest extends FunSuite with Matchers with 
BeforeAndAfterAll {
     graph.shutdown(true)
   }
 
-  test("s2 schema") {
-    val s2Schema = new SchemaDef(s2Repository).S2GraphSchema
-    println(SchemaRenderer.renderSchema(s2Schema))
-
-    true
-  }
-
   test("s2 schema should has types") {
     val s2Schema = new SchemaDef(s2Repository).S2GraphSchema
 
@@ -176,16 +181,84 @@ class SchemaTest extends FunSuite with Matchers with 
BeforeAndAfterAll {
         )
       )
 
+    val actual = Await.result(Executor.execute(s2Schema, query, s2Repository), 
Duration("10 sec"))
+    val maps = actual.asInstanceOf[Map[String, Map[String, Map[String, 
Vector[Map[String, String]]]]]]("data")("__schema")("types")
+
+    val expectedSet = 
expected("data")("__schema")("types").flatMap(_.values.headOption).toSet
+    val actualSet = maps.flatMap(_.values.headOption).toSet
+
+    logger.info(s"expected only has: ${expectedSet -- actualSet}")
+    logger.info(s"actual only has: ${actualSet -- expectedSet}")
+
+    actualSet should be(expectedSet)
+  }
+
+  test("Management query should have service: 'kakao'") {
+    val Success(query) = QueryParser.parse(
+      """
+        query GetServiceAndLabel {
+          Management {
+            Services(name: kakao) {
+              serviceColumns {
+                name
+                props {
+                  name
+                  defaultValue
+                  dataType
+                }
+              }
+            }
+          }
+        }
+        """)
+
+    val actual = Await.result(Executor.execute(s2Schema, query, s2Repository), 
Duration("10 sec"))
+    val actualMap = actual.asInstanceOf[Map[String, Map[String, Map[String, 
Vector[Map[String, Vector[Map[String, Any]]]]]]]]
 
-    val ret = Await.result(Executor.execute(s2Schema, query, s2Repository), 
Duration("10 sec"))
-    val maps = ret.asInstanceOf[Map[String, Map[String, Map[String, 
Vector[Map[String, String]]]]]]("data")("__schema")("types")
+    val expected: Map[String, Map[String, Map[String, Vector[Map[String, 
Vector[Map[String, Any]]]]]]] =
+      Map("data" ->
+        Map("Management" ->
+          Map("Services" ->
+            Vector(
+              Map("serviceColumns" ->
+                Vector(
+                  Map(
+                    "name" -> "user",
+                    "props" ->
+                      Vector(
+                        Map("name" -> "age", "defaultValue" -> "0", "dataType" 
-> "int"),
+                        Map("name" -> "gender", "defaultValue" -> "", 
"dataType" -> "string")
+                      )
+                  )
+                )
+              )
+            )
+          )
+        )
+      )
 
-    val expectedSet = 
(expected("data")("__schema")("types").flatMap(_.values.headOption).toSet)
-    val retSet = (maps.flatMap(_.values.headOption).toSet)
+    true
+  }
 
-    println(expectedSet -- retSet)
-    println(retSet -- expectedSet)
+  test("Management query should have label: 'friends'") {
+    val Success(query) = QueryParser.parse(
+      """
+        query Management {
+          Management {
+           Labels(name: friends) {
+              name
+              props {
+                name
+                defaultValue
+                dataType
+              }
+            }
+          }
+        }
+        """)
 
-    retSet should be(expectedSet)
+    val actual = Await.result(Executor.execute(s2Schema, query, s2Repository), 
Duration("10 sec"))
+    true
   }
+
 }

Reply via email to