mod setup;
use serde_json::json;
use warpgrapher::client::Client;
use warpgrapher::engine::context::RequestContext;
use warpgrapher_macros::wg_test;
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn create_node_with_rel_to_new<RequestCtx: RequestContext>(mut client: Client<RequestCtx>) {
let results0 = client
.create_node(
"Project",
"__typename
id
board {
__typename
id
dst {
... on KanbanBoard {
__typename
id
name
}
}
}",
&json!({
"name": "SPARTAN-V",
"board": {
"dst": {
"KanbanBoard": {
"NEW": {
"name": "SPARTAN-V Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
assert!(results0.is_object());
let p0_board = results0.get("board").unwrap();
assert!(p0_board.is_object());
assert_eq!(p0_board.get("__typename").unwrap(), "ProjectBoardRel");
let p0_board_dst = p0_board.get("dst").unwrap();
assert!(p0_board_dst.is_object());
assert_eq!(p0_board_dst.get("__typename").unwrap(), "KanbanBoard");
assert_eq!(p0_board_dst.get("name").unwrap(), "SPARTAN-V Board");
let results1 = client
.read_node(
"KanbanBoard",
"__typename
id
name",
Some(&json!({
"name": {"EQ": "SPARTAN-V Board"}
})),
None,
)
.await
.unwrap();
assert!(results1.is_array());
let b0 = &results1[0];
assert!(b0.is_object());
assert_eq!(b0.get("__typename").unwrap(), "KanbanBoard");
assert_eq!(b0.get("name").unwrap(), "SPARTAN-V Board");
let results2 = client
.read_node(
"Project",
"__typename
id
name
board {
__typename
dst {
... on KanbanBoard {
__typename
id
name
}
}
}",
Some(&json!({
"name": {"EQ": "SPARTAN-V"}
})),
None,
)
.await
.unwrap();
assert!(results2.is_array());
assert_eq!(results2.as_array().unwrap().len(), 1);
let p1 = &results2[0];
assert_eq!(p1.get("__typename").unwrap(), "Project");
assert_eq!(p1.get("name").unwrap(), "SPARTAN-V");
let p1_board = p1.get("board").unwrap();
assert_eq!(p1_board.get("__typename").unwrap(), "ProjectBoardRel");
let p1_board_dst = p1_board.get("dst").unwrap();
assert_eq!(p1_board_dst.get("__typename").unwrap(), "KanbanBoard");
assert_eq!(p1_board_dst.get("name").unwrap(), "SPARTAN-V Board");
assert_eq!(p1_board_dst.get("id").unwrap(), b0.get("id").unwrap());
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn create_node_with_rel_to_existing<RequestCtx: RequestContext>(
mut client: Client<RequestCtx>,
) {
let results0 = client
.create_node(
"ScrumBoard",
"__typename
id
name
",
&json!({
"name": "SPARTAN-VI Board"
}),
None,
)
.await
.unwrap();
assert!(results0.is_object());
assert_eq!(results0.get("__typename").unwrap(), "ScrumBoard");
let results1 = client
.create_node(
"Project",
"__typename
id
board {
__typename
id
dst {
... on ScrumBoard {
__typename
id
name
}
}
}",
&json!({
"name": "SPARTAN-VI",
"board": {
"dst": {
"ScrumBoard": {
"EXISTING": {
"name": {"EQ": "SPARTAN-VI Board"}
}
}
}
}
}),
None,
)
.await
.unwrap();
assert!(results1.is_object());
assert_eq!(results1.get("__typename").unwrap(), "Project");
let results2 = client
.read_node(
"Project",
"__typename
id
name
board {
dst {
... on ScrumBoard {
__typename
id
name
}
}
}",
Some(&json!({
"name": {"EQ": "SPARTAN-VI"}
})),
None,
)
.await
.unwrap();
assert!(results2.is_array());
assert_eq!(results2.as_array().unwrap().len(), 1);
let p1 = &results2[0];
assert_eq!(p1.get("__typename").unwrap(), "Project");
let p1_board = p1.get("board").unwrap();
let b1 = p1_board.get("dst").unwrap();
assert_eq!(b1.get("__typename").unwrap(), "ScrumBoard");
assert_eq!(b1.get("name").unwrap(), "SPARTAN-VI Board");
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn read_multiple_nodes_with_multiple_rels<RequestCtx: RequestContext>(
mut client: Client<RequestCtx>,
) {
let results0 = client
.create_node(
"Project",
"__typename
id
",
&json!({
"name": "SPARTAN-10",
"board": {
"dst": {
"ScrumBoard": {
"NEW": {
"name": "SPARTAN-10 Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
let results1 = client
.create_node(
"Project",
"__typename
id
",
&json!({
"name": "SPARTAN-11",
"board": {
"dst": {
"KanbanBoard": {
"NEW": {
"name": "SPARTAN-11 Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
let results2 = client
.create_node(
"Project",
"__typename
id
",
&json!({
"name": "SPARTAN-12",
"board": {
"dst": {
"KanbanBoard": {
"NEW": {
"name": "SPARTAN-12 Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
let results3 = client
.read_node(
"Project",
"__typename
id
name
board {
__typename
dst {
__typename
... on ScrumBoard {
id
name
}
... on KanbanBoard {
id
name
}
}
}",
None,
None,
)
.await
.unwrap();
assert!(results3.is_array());
let projects = results3.as_array().unwrap();
let p0 = projects
.iter()
.find(|&x| x.get("id").unwrap() == results0.get("id").unwrap())
.unwrap();
assert!(p0.is_object());
let p0_board = p0.get("board").unwrap();
assert_eq!(p0_board.get("__typename").unwrap(), "ProjectBoardRel");
let b0 = p0_board.get("dst").unwrap();
assert_eq!(b0.get("__typename").unwrap(), "ScrumBoard");
assert_eq!(b0.get("name").unwrap(), "SPARTAN-10 Board");
let p1 = projects
.iter()
.find(|&x| x.get("id").unwrap() == results1.get("id").unwrap())
.unwrap();
assert!(p1.is_object());
let p1_board = p1.get("board").unwrap();
assert_eq!(p1_board.get("__typename").unwrap(), "ProjectBoardRel");
let b1 = p1_board.get("dst").unwrap();
assert_eq!(b1.get("__typename").unwrap(), "KanbanBoard");
assert_eq!(b1.get("name").unwrap(), "SPARTAN-11 Board");
let p2 = projects
.iter()
.find(|&x| x.get("id").unwrap() == results2.get("id").unwrap())
.unwrap();
assert!(p2.is_object());
let p2_board = p2.get("board").unwrap();
assert_eq!(p2_board.get("__typename").unwrap(), "ProjectBoardRel");
let b2 = p2_board.get("dst").unwrap();
assert_eq!(b2.get("__typename").unwrap(), "KanbanBoard");
assert_eq!(b2.get("name").unwrap(), "SPARTAN-12 Board");
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn read_node_with_matching_props_on_rel<RequestCtx: RequestContext>(
mut client: Client<RequestCtx>,
) {
let results0 = client
.create_node(
"Project",
"id",
&json!({
"name": "ORION",
"board": {
"publicized": false,
"dst": {
"ScrumBoard": {
"NEW": {
"name": "ORION Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
assert!(results0.is_object());
let results1 = client
.create_node(
"Project",
"id",
&json!({
"name": "SPARTAN",
"board": {
"publicized": true,
"dst": {
"ScrumBoard": {
"NEW": {
"name": "SPARTAN Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
assert!(results1.is_object());
let results3 = client
.read_node(
"Project",
"__typename
id
name
board {
__typename
publicized
dst {
... on ScrumBoard {
__typename
id
name
}
}
}",
Some(&json!({
"board": {
"publicized": true
}
})),
None,
)
.await
.unwrap();
assert!(results3.is_array());
let projects0 = results3.as_array().unwrap();
assert_eq!(projects0.len(), 1);
let p0 = &projects0[0];
assert!(p0.is_object());
assert_eq!(p0.get("__typename").unwrap(), "Project");
assert_eq!(p0.get("name").unwrap(), "SPARTAN");
let p0_board = p0.get("board").unwrap();
assert_eq!(p0_board.get("__typename").unwrap(), "ProjectBoardRel");
let b0 = p0_board.get("dst").unwrap();
assert_eq!(b0.get("name").unwrap(), "SPARTAN Board");
let results4 = client
.read_node(
"Project",
"__typename
id
name
board {
__typename
dst {
... on ScrumBoard {
__typename
id
name
}
}
}",
Some(&json!({
"board": {
"publicized": false
}
})),
None,
)
.await
.unwrap();
assert!(results4.is_array());
let projects1 = results4.as_array().unwrap();
assert_eq!(projects1.len(), 1);
let p1 = &projects1[0];
assert!(p1.is_object());
assert_eq!(p1.get("__typename").unwrap(), "Project");
assert_eq!(p1.get("name").unwrap(), "ORION");
let p1_board = p1.get("board").unwrap();
assert_eq!(p1_board.get("__typename").unwrap(), "ProjectBoardRel");
let b1 = p1_board.get("dst").unwrap();
assert_eq!(b1.get("name").unwrap(), "ORION Board");
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn read_node_with_matching_props_on_rel_dst_node<RequestCtx: RequestContext>(
mut client: Client<RequestCtx>,
) {
let _results0 = client
.create_node(
"Project",
"id",
&json!({
"name": "ORION",
"board": {
"publicized": false,
"dst": {
"ScrumBoard": {
"NEW": {
"name": "ORION Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
let _results1 = client
.create_node(
"Project",
"id",
&json!({
"name": "SPARTAN",
"board": {
"publicized": false,
"dst": {
"ScrumBoard": {
"NEW": {
"name": "SPARTAN Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
let results2 = client
.read_node(
"Project",
"__typename
id
name
board {
__typename
dst {
... on ScrumBoard {
__typename
id
name
}
... on KanbanBoard {
__typename
id
name
}
}
}
",
Some(&json!({
"board": {
"dst": {
"ScrumBoard": {
"name": {"EQ": "SPARTAN Board"}
}
}
}
})),
None,
)
.await
.unwrap();
assert!(results2.is_array());
let projects = results2.as_array().unwrap();
assert_eq!(projects.len(), 1);
let p0 = &projects[0];
assert!(p0.is_object());
assert_eq!(p0.get("__typename").unwrap(), "Project");
assert_eq!(p0.get("name").unwrap(), "SPARTAN");
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn update_existing_node_with_rel_to_new_node<RequestCtx: RequestContext>(
mut client: Client<RequestCtx>,
) {
let _results0 = client
.create_node(
"Project",
"id",
&json!({
"name": "ORION",
}),
None,
)
.await
.unwrap();
let _results1 = client
.update_node(
"Project",
"__typename
id
name
board {
dst {
... on ScrumBoard {
__typename
id
name
}
}
}
",
Some(&json!({
"name": {"EQ": "ORION"}
})),
&json!({
"board": {
"ADD": {
"dst": {
"KanbanBoard": {
"NEW": {
"name": "ORION Board"
}
}
}
}
}
}),
None,
)
.await
.unwrap();
let results2 = client
.read_node(
"Project",
"__typename
id
name
board {
__typename
dst {
... on ScrumBoard {
id
name
}
... on KanbanBoard {
id
name
}
}
}
",
None,
None,
)
.await
.unwrap();
assert!(results2.is_array());
let projects = results2.as_array().unwrap();
assert_eq!(projects.len(), 1);
let p0 = &projects[0];
assert!(p0.is_object());
assert_eq!(p0.get("__typename").unwrap(), "Project");
assert_eq!(p0.get("name").unwrap(), "ORION");
let p0_board = p0.get("board").unwrap();
assert_eq!(p0_board.get("__typename").unwrap(), "ProjectBoardRel");
assert_eq!(
p0_board.get("dst").unwrap().get("name").unwrap(),
"ORION Board"
);
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn update_existing_node_with_rel_to_existing_node<RequestCtx: RequestContext>(
mut client: Client<RequestCtx>,
) {
let _results0 = client
.create_node(
"Project",
"id",
&json!({
"name": "ORION",
}),
None,
)
.await
.unwrap();
let _results1 = client
.create_node(
"ScrumBoard",
"id",
&json!({
"name": "ORION Board"
}),
None,
)
.await;
let _results2 = client
.update_node(
"Project",
"__typename
id
name
",
Some(&json!({
"name": {"EQ": "ORION"}
})),
&json!({
"board": {
"ADD": {
"dst": {
"ScrumBoard": {
"EXISTING": {
"name": {"EQ": "ORION Board"}
}
}
}
}
}
}),
None,
)
.await
.unwrap();
let results2 = client
.read_node(
"Project",
"__typename
id
name
board {
__typename
dst {
... on ScrumBoard {
id
name
}
}
}
",
None,
None,
)
.await
.unwrap();
assert!(results2.is_array());
let projects = results2.as_array().unwrap();
assert_eq!(projects.len(), 1);
let p0 = &projects[0];
assert!(p0.is_object());
assert_eq!(p0.get("__typename").unwrap(), "Project");
assert_eq!(p0.get("name").unwrap(), "ORION");
let p0_board = p0.get("board").unwrap();
assert_eq!(p0_board.get("__typename").unwrap(), "ProjectBoardRel");
assert_eq!(
p0_board.get("dst").unwrap().get("name").unwrap(),
"ORION Board"
);
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn delete_node_with_matching_props_on_rel_dst_node<RequestCtx: RequestContext>(
mut client: Client<RequestCtx>,
) {
let _results0 = client
.create_node(
"Project",
"id",
&json!({
"name": "ORION",
}),
None,
)
.await
.unwrap();
let _results1 = client
.create_node(
"Project",
"id",
&json!({
"name": "SPARTAN-II",
}),
None,
)
.await
.unwrap();
let _results2 = client
.delete_node(
"Project",
Some(&json!({"name": {"EQ": "ORION"}})),
None,
None,
)
.await
.unwrap();
let results3 = client
.read_node(
"Project",
"__typename
id
name
",
None,
None,
)
.await
.unwrap();
assert!(results3.is_array());
assert_eq!(results3.as_array().unwrap().len(), 1);
assert_eq!(results3[0].get("name").unwrap(), "SPARTAN-II");
}
#[wg_test]
#[allow(clippy::cognitive_complexity, dead_code)]
async fn delete_node<RequestCtx: RequestContext>(mut client: Client<RequestCtx>) {
let _results0 = client
.create_node(
"Project",
"id",
&json!({
"name": "ORION",
"board": {
"dst": {
"ScrumBoard": {
"NEW": {
"name": "ORION Board"
}
}
}
}
}),
None,
)
.await
.unwrap();
let _results1 = client
.delete_node(
"Project",
Some(&json!({"name": {"EQ": "ORION"}})),
Some(&json!({})),
None,
)
.await
.unwrap();
let results2 = client
.read_node(
"Project",
"__typename
id
name
",
None,
None,
)
.await
.unwrap();
assert!(results2.is_array());
assert_eq!(results2.as_array().unwrap().len(), 0);
let results3 = client
.read_node(
"ScrumBoard",
"__typename
id
name
",
None,
None,
)
.await
.unwrap();
assert!(results3.is_array());
assert_eq!(results3.as_array().unwrap().len(), 1);
assert_eq!(results3[0].get("name").unwrap(), "ORION Board");
}