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

Function TestMultipleMutationMerge

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

Source from the content-addressed store, hash-verified

2498}
2499
2500func TestMultipleMutationMerge(t *testing.T) {
2501 require.NoError(t, dropAll())
2502 require.NoError(t, alterSchema(`
2503name: string @index(term) .
2504email: [string] @index(exact) @upsert .`))
2505
2506 m1 := `
2507{
2508 set {
2509 _:user1 <name> "user1" .
2510 _:user1 <email> "user_email1@company1.io" .
2511 _:user2 <name> "user2" .
2512 _:user2 <email> "user_email2@company1.io" .
2513 }
2514}`
2515 mr, err := mutationWithTs(mutationInp{body: m1, typ: "application/rdf", commitNow: true})
2516 require.NoError(t, err)
2517 require.True(t, len(mr.keys) == 0)
2518 require.Equal(t, []string{"email", "name"}, splitPreds(mr.preds))
2519
2520 q1 := `
2521{
2522 q(func: has(name)) {
2523 uid
2524 }
2525}`
2526 res, _, err := queryWithTs(queryInp{body: q1, typ: "application/dql"})
2527 require.NoError(t, err)
2528 var result struct {
2529 Data struct {
2530 Q []struct {
2531 UID string `json:"uid"`
2532 } `json:"q"`
2533 } `json:"data"`
2534 }
2535 require.NoError(t, json.Unmarshal([]byte(res), &result))
2536 require.Equal(t, 2, len(result.Data.Q))
2537
2538 m2 := `
2539upsert {
2540 query {
2541 # filter is needed to ensure that we do not get same UIDs in u1 and u2
2542 q1(func: eq(email, "user_email1@company1.io")) @filter(not(eq(email, "user_email2@company1.io"))) {
2543 u1 as uid
2544 }
2545
2546 q2(func: eq(email, "user_email2@company1.io")) @filter(not(eq(email, "user_email1@company1.io"))) {
2547 u2 as uid
2548 }
2549
2550 q3(func: eq(email, "user_email1@company1.io")) @filter(eq(email, "user_email2@company1.io")) {
2551 u3 as uid
2552 }
2553 }
2554
2555 # case when both emails do not exist
2556 mutation @if(eq(len(u1), 0) AND eq(len(u2), 0) AND eq(len(u3), 0)) {
2557 set {

Callers

nothing calls this directly

Calls 5

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

Tested by

no test coverage detected