package Ġorg . neo 4 j . graphql Ċ Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Ignore Ċ import Ġorg . junit . Test Ċ import Ġorg . neo 4 j . graph db . Graph Database Service Ċ import Ġorg . neo 4 j . kernel . impl . proc . Pro cedures Ċ import Ġorg . neo 4 j . kernel . internal . Graph Database API Ċ import Ġorg . neo 4 j . test . Test Graph Database Factory Ċ import Ġkotlin . test . assertEquals Ċ Ċ /** Ċ Ġ* Ġ@ author Ġm h Ċ Ġ* Ġ* Ċ Ġ* Ġ@ since Ġ 0 5 . 0 5 . 1 7 Ċ Ġ*/ Ċ class ĠType Naming Test Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdb : ĠGraph Database Service ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Ġ= ĠTest Graph Database Factory (). new Imp er manent Database () ĊĠĠĠĠĠĠĠ Ġ( db Ġas ĠGraph Database API ). dependency Resolver . resolve Dependency ( Pro cedures :: class . java ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . register Function ( GraphQL Procedure :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . register Procedure ( GraphQL Procedure :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġdb ?. execute (" CREATE Ġ(: Person Ġ{ name :' J ane '}) - [: KNO WS ]-> (: Person Ġ{ name :' John '}) ") ?. close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb ?. shutdown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġ@ Ignore (" Bug Ġintroduce ĠBOT H Ġrelationship Ġhandling Ġfor Ġgenerated Ġgraphs , Ġesp Ġin Ġmerge Relationships ") ĊĠĠĠ Ġfun Ġduplicate Property Relationship Both () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb ?. execute (" CREATE Ġ(: Person Ġ{ name :' J ane '}) - [: KNO WS ]-> (: Person Ġ{ name :' John '}) ") ?. close () ĊĠĠĠĠĠĠĠ Ġval Ġgraph QL Ġ= ĠGraph Schema . get GraphQL ( db !! ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" query Ġ{ ĠPerson Ġ{ Ġname , Ġ_ know s Ġ{ Ġname Ġ} Ġ} Ġ} """ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph QL . execute ( query , ĠGraphQL Context ( db !! )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" Person " Ġto ĠlistOf ( map Of (" name " Ġto Ġ" J ane ", Ġ"_ know s " Ġto ĠlistOf ( map Of (" name " Ġto Ġ" John ")) ), Ġmap Of (" name " Ġto Ġ" John ", Ġ"_ know s " Ġto Ġempty List < Map < String , Any >> ())) ), Ġresult . getData ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġduplicate Property Relationship () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb ?. execute (" CREATE Ġ(: Person Ġ{ know s :' J ane '}) - [: know s ]-> (: Friend Ġ{ name :' John '}), (: Person Ġ{ know s :' Alex '}) ") ?. close () ĊĠĠĠĠĠĠĠ Ġval Ġgraph QL Ġ= ĠGraph Schema . get GraphQL ( db !! ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" query Ġ{ ĠPerson Ġ{ Ġknows , Ġ_ know s Ġ{ Ġname Ġ} Ġ} Ġ} """ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph QL . execute ( query , ĠGraphQL Context ( db !! )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" Person " Ġto ĠlistOf ( map Of (" know s " Ġto Ġ" J ane ", Ġ"_ know s " Ġto Ġmap Of (" name " Ġto Ġ" John ")), Ġmap Of (" know s " Ġto Ġ" Alex ", Ġ"_ know s " Ġto Ġnull ))), Ġresult . getData ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdynamic Query Type Access Attributes () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= Ġ""" Ċ type ĠOrder Ġ{ ĊĠĠĠ Ġsid : ĠID ! ĊĠĠĠ Ġname : ĠString ĊĠĠĠ Ġdescription : ĠString ĊĠĠĠ Ġdate : ĠInt ĊĠĠĠ Ġposition : Ġ[ Order Position ] Ġ@ relation ( name :" PART _ OF ", direction :" IN ") Ċ } Ċ Ċ type ĠOrder Position Ġ{ ĊĠĠĠ Ġamount : ĠInt ĊĠĠĠ Ġorder : ĠOrder Ġ@ relation ( name :" PART _ OF ") ĊĠĠĠ Ġsid : ĠID ! Ċ } Ċ Ċ schema Ġ{ ĊĠĠ Ġmutation : ĠMutation Type ĊĠĠ Ġquery : ĠQuery Type Ċ } Ċ type ĠMutation Type Ġ{ ĊĠĠĠ Ġset Order Position Amount ( sid : ID !, Ġamount : Int ) Ġ: Ġ[ Order Position ] Ġ@ cy pher ( statement :" MATCH Ġ( op : Order Position Ġ{ sid :{ sid }}) ĠSET Ġop . amount Ġ= Ġ{ amount } ĠRETURN Ġop ") Ċ Ċ } Ċ Ċ type ĠQuery Type Ġ{ ĊĠĠĠ Ġget Order Position ( sid : ID !) Ġ: Ġ[ Order Position ] Ġ@ cy pher ( statement :" MATCH Ġ( op : Order Position Ġ{ sid : Ġ{ sid }}) ĠRETURN Ġop ") Ċ } """ ĊĊĠĠĠĠĠĠĠ ĠGraph Schema Scanner . store Id l ( db !! , Ġschema ) ĊĠĠĠĠĠĠĠ Ġval Ġgraph QL Ġ= ĠGraph Schema . get GraphQL ( db !! ) ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" query Ġ{ ĠOrder Position Ġ{ Ġamount Ġ} Ġ} """ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph QL . execute ( query , ĠGraphQL Context ( db !! )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" Order Position " Ġto Ġempty List < Long > ()), Ġresult . getData ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdynamic Mutation Conflict sWith Auto Generated () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= Ġ""" Ċ type ĠPerson Ġ{ ĊĠĠĠ Ġname : ĠString Ċ } Ċ schema Ġ{ ĊĠĠ Ġmutation : ĠMutation Type Ċ } Ċ type ĠMutation Type Ġ{ ĊĠĠĠ Ġcreate Person ( name : String ) Ġ: ĠPerson Ġ@ cy pher ( statement :" CREATE Ġ( p : Person Ġ{ name :\" Test \" + { name }}) ĠRETURN Ġp ") Ċ } Ċ """ ĊĊĠĠĠĠĠĠĠ ĠGraph Schema Scanner . store Id l ( db !! , Ġschema ) ĊĠĠĠĠĠĠĠ Ġval Ġgraph QL Ġ= ĠGraph Schema . get GraphQL ( db !! ) ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" mutation Ġ{ Ġcreate Person ( name :" J ane ") Ġ{ name } Ġ} """ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph QL . execute ( query , ĠGraphQL Context ( db !! )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" create Person " Ġto Ġmap Of (" name " Ġto Ġ" Test J ane ")), Ġresult . getData ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdynamic Query Conflict sWith Auto Generated () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb ?. execute (" CREATE Ġ(: Person Ġ{ name :' J ane '}), Ġ(: Person Ġ{ name :' John '}) ") ?. close () ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= Ġ""" Ċ type ĠPerson Ġ{ ĊĠĠĠ Ġname : ĠString Ċ } Ċ schema Ġ{ ĊĠĠ Ġquery : ĠQuery Type Ċ } Ċ type ĠQuery Type Ġ{ ĊĠĠĠ ĠPerson ( name : String ) Ġ: ĠPerson Ġ@ cy pher ( statement :" MATCH Ġ( p : Person Ġ{ name :{ name }}) ĠRETURN Ġp ") Ċ } Ċ """ ĊĊĠĠĠĠĠĠĠ ĠGraph Schema Scanner . store Id l ( db !! , Ġschema ) ĊĠĠĠĠĠĠĠ Ġval Ġgraph QL Ġ= ĠGraph Schema . get GraphQL ( db !! ) ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" query Ġ{ ĠPerson ( name :" J ane ") Ġ{ name } Ġ} """ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph QL . execute ( query , ĠGraphQL Context ( db !! )) ĊĠĠĠĠĠĠĠ Ġprintln ( result ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" Person " Ġto Ġmap Of (" name " Ġto Ġ" J ane ")), Ġresult . getData ()) ĊĠĠĠ Ġ} Ċ } Ċ