(t *testing.T)
| 631 | } |
| 632 | |
| 633 | func TestViewQueryWrappers(t *testing.T) { |
| 634 | if !base.TestsDisableGSI() { |
| 635 | t.Skip("views tests are not applicable under GSI") |
| 636 | } |
| 637 | rt := NewRestTesterDefaultCollection(t, nil) // views only use default collection |
| 638 | defer rt.Close() |
| 639 | |
| 640 | ctx := rt.Context() |
| 641 | rt.ServerContext().Database(ctx, "db").SetUserViewsEnabled(true) |
| 642 | |
| 643 | response := rt.SendAdminRequest(http.MethodPut, "/db/admindoc", `{"value":"foo"}`) |
| 644 | RequireStatus(t, response, http.StatusCreated) |
| 645 | response = rt.SendAdminRequest(http.MethodPut, "/db/admindoc2", `{"value":"foo"}`) |
| 646 | RequireStatus(t, response, http.StatusCreated) |
| 647 | response = rt.SendAdminRequest(http.MethodPut, "/db/userdoc", `{"value":"foo", "channels": ["userchannel"]}`) |
| 648 | RequireStatus(t, response, http.StatusCreated) |
| 649 | |
| 650 | response = rt.SendAdminRequest(http.MethodPut, "/db/_design/foodoc", `{"views": {"foobarview": {"map": "function(doc, meta) {if (doc.value == \"foo\") {emit(doc.key, null);}}"}}}`) |
| 651 | assert.Equal(t, http.StatusCreated, response.Code) |
| 652 | |
| 653 | result := rt.WaitForNAdminViewResults(3, "/db/_design/foodoc/_view/foobarview") |
| 654 | assert.Equal(t, 3, result.Len()) |
| 655 | |
| 656 | a := rt.ServerContext().Database(ctx, "db").Authenticator(ctx) |
| 657 | testUser, err := a.NewUser("testUser", "password", channels.BaseSetOf(t, "userchannel")) |
| 658 | assert.NoError(t, err) |
| 659 | err = a.Save(testUser) |
| 660 | assert.NoError(t, err) |
| 661 | |
| 662 | result = rt.WaitForNUserViewResults(1, "/db/_design/foodoc/_view/foobarview", testUser, "password") |
| 663 | assert.NoError(t, err) |
| 664 | assert.Equal(t, 1, result.Len()) |
| 665 | assert.Equal(t, "userdoc", result.Rows[0].ID) |
| 666 | } |
| 667 | |
| 668 | func TestViewQueryWithXattrAndNonXattr(t *testing.T) { |
| 669 |
nothing calls this directly
no test coverage detected