MCPcopy
hub / github.com/dgraph-io/dgraph / TestConditionalUpsertExample0JSON

Function TestConditionalUpsertExample0JSON

dgraph/cmd/alpha/upsert_test.go:989–1052  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

987}
988
989func TestConditionalUpsertExample0JSON(t *testing.T) {
990 require.NoError(t, dropAll())
991 require.NoError(t, alterSchema(`email: string @index(exact) .`))
992
993 // Mutation with wrong name
994 m1 := `
995{
996 "query": "{q(func: eq(email, \"email@company.io\")) {v as uid}}",
997 "cond": " @if(eq(len(v), 0)) ",
998 "set": [
999 {
1000 "uid": "uid(v)",
1001 "name": "Wrong"
1002 },
1003 {
1004 "uid": "uid(v)",
1005 "email": "email@company.io"
1006 }
1007 ]
1008}`
1009 mr, err := mutationWithTs(mutationInp{body: m1, typ: "application/json", commitNow: true})
1010 require.NoError(t, err)
1011 require.True(t, len(mr.keys) == 0)
1012 result := QueryResult{}
1013 require.NoError(t, json.Unmarshal(mr.data, &result))
1014 require.Equal(t, 0, len(result.Queries["q"]))
1015
1016 // query should return the wrong name
1017 q1 := `
1018{
1019 q(func: has(email)) {
1020 uid
1021 name
1022 email
1023 }
1024}`
1025 res, _, err := queryWithTs(queryInp{body: q1, typ: "application/dql"})
1026 require.NoError(t, err)
1027 require.Contains(t, res, "Wrong")
1028
1029 // mutation with correct name
1030 m2 := `
1031{
1032 "query": "{q(func: eq(email, \"email@company.io\")) {v as uid}}",
1033 "cond": "@if(eq(len(v), 1))",
1034 "set": [
1035 {
1036 "uid": "uid(v)",
1037 "name": "Ashish"
1038 }
1039 ]
1040}`
1041 mr, err = mutationWithTs(mutationInp{body: m2, typ: "application/json", commitNow: true})
1042 require.NoError(t, err)
1043 require.True(t, len(mr.keys) == 0)
1044 require.Equal(t, []string{"name"}, splitPreds(mr.preds))
1045 result = QueryResult{}
1046 require.NoError(t, json.Unmarshal(mr.data, &result))

Callers

nothing calls this directly

Calls 5

dropAllFunction · 0.85
alterSchemaFunction · 0.85
mutationWithTsFunction · 0.85
queryWithTsFunction · 0.85
splitPredsFunction · 0.85

Tested by

no test coverage detected