MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / TestDocCRUDWithCV

Function TestDocCRUDWithCV

rest/api_test.go:3393–3436  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3391}
3392
3393func TestDocCRUDWithCV(t *testing.T) {
3394 rt := NewRestTester(t, nil)
3395 defer rt.Close()
3396
3397 const docID = "doc1"
3398 createVersion := rt.PutDoc(docID, `{"create":true}`)
3399
3400 getDocVersion, _ := rt.GetDoc(docID)
3401 require.Equal(t, createVersion, getDocVersion)
3402
3403 revIDGen := func(v DocVersion) int {
3404 gen, _ := db.ParseRevID(base.TestCtx(t), v.RevTreeID)
3405 return gen
3406 }
3407
3408 updateVersion := rt.UpdateDoc(docID, createVersion, `{"update":true}`)
3409 require.NotEqual(t, createVersion, updateVersion)
3410 assert.Greaterf(t, updateVersion.CV.Value, createVersion.CV.Value, "Expected CV Value to be bumped on update")
3411 assert.Greaterf(t, revIDGen(updateVersion), revIDGen(createVersion), "Expected revision generation to be bumped on update")
3412
3413 getDocVersion, _ = rt.GetDoc(docID)
3414 require.Equal(t, updateVersion, getDocVersion)
3415
3416 // fetch by CV (using the first create version to test cache retrieval)
3417 resp := rt.SendAdminRequest(http.MethodGet, fmt.Sprintf("/{{.keyspace}}/%s?rev=%s", docID, url.QueryEscape(createVersion.CV.String())), "")
3418 RequireStatus(t, resp, http.StatusOK)
3419 assert.NotContains(t, resp.BodyString(), `"update":true`)
3420 assert.Contains(t, resp.BodyString(), `"create":true`)
3421 assert.Contains(t, resp.BodyString(), `"_cv":"`+createVersion.CV.String()+`"`)
3422 assert.Contains(t, resp.BodyString(), `"_rev":"`+createVersion.RevTreeID+`"`)
3423
3424 // fetch by CV - updated version
3425 resp = rt.SendAdminRequest(http.MethodGet, fmt.Sprintf("/{{.keyspace}}/%s?rev=%s", docID, url.QueryEscape(updateVersion.CV.String())), "")
3426 RequireStatus(t, resp, http.StatusOK)
3427 assert.NotContains(t, resp.BodyString(), `"create":true`)
3428 assert.Contains(t, resp.BodyString(), `"update":true`)
3429 assert.Contains(t, resp.BodyString(), `"_cv":"`+updateVersion.CV.String()+`"`)
3430 assert.Contains(t, resp.BodyString(), `"_rev":"`+updateVersion.RevTreeID+`"`)
3431
3432 deleteVersion := rt.DeleteDoc(docID, updateVersion)
3433 require.NotEqual(t, updateVersion, deleteVersion)
3434 assert.Greaterf(t, deleteVersion.CV.Value, updateVersion.CV.Value, "Expected CV Value to be bumped on delete")
3435 assert.Greaterf(t, revIDGen(deleteVersion), revIDGen(updateVersion), "Expected revision generation to be bumped on delete")
3436}
3437
3438func TestFetchBackupWhenOppositeRevIsDeleted(t *testing.T) {
3439 rt := NewRestTester(t, &RestTesterConfig{

Callers

nothing calls this directly

Calls 14

CloseMethod · 0.95
PutDocMethod · 0.95
GetDocMethod · 0.95
UpdateDocMethod · 0.95
SendAdminRequestMethod · 0.95
DeleteDocMethod · 0.95
ParseRevIDFunction · 0.92
TestCtxFunction · 0.92
NewRestTesterFunction · 0.85
RequireStatusFunction · 0.85
BodyStringMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected