(t *testing.T)
| 987 | } |
| 988 | |
| 989 | func 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 | |
| 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)) |
nothing calls this directly
no test coverage detected