github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/tests/lazy_aggregation_embedded_test.go (about) 1 package tests 2 3 import ( 4 "testing" 5 6 ravendb "github.com/ravendb/ravendb-go-client" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func lazyAggregationEmbeddedLazyTest(t *testing.T, driver *RavenTestDriver) { 11 var err error 12 store := driver.getDocumentStoreMust(t) 13 defer store.Close() 14 15 { 16 index := NewTaskIndex() 17 18 session := openSessionMust(t, store) 19 20 task1 := &Task{ 21 AssigneeID: "users/1", 22 ID: "tasks/1", 23 } 24 25 task2 := &Task{ 26 AssigneeID: "users/1", 27 ID: "tasks/2", 28 } 29 30 task3 := &Task{ 31 AssigneeID: "users/2", 32 ID: "tasks/3", 33 } 34 35 err = session.Store(task1) 36 assert.NoError(t, err) 37 err = session.Store(task2) 38 assert.NoError(t, err) 39 err = session.Store(task3) 40 assert.NoError(t, err) 41 err = session.SaveChanges() 42 assert.NoError(t, err) 43 44 err = index.Execute(store, nil, "") 45 assert.NoError(t, err) 46 err = driver.waitForIndexing(store, "", 0) 47 assert.NoError(t, err) 48 49 q := session.QueryIndex(index.IndexName) 50 f := ravendb.NewFacetBuilder() 51 f.ByField("AssigneeID").WithDisplayName("AssigneeID") 52 query := q.AggregateByFacet(f.GetFacet()) 53 lazyOperation, err := query.ExecuteLazy() 54 assert.NoError(t, err) 55 facetValue := map[string]*ravendb.FacetResult{} 56 err = lazyOperation.GetValue(&facetValue) 57 assert.NoError(t, err) 58 values := facetValue["AssigneeID"].Values 59 userStats := map[string]int{} 60 for _, value := range values { 61 r := value.Range 62 c := value.Count 63 userStats[r] = c 64 } 65 assert.Equal(t, userStats["users/1"], 2) 66 assert.Equal(t, userStats["users/2"], 1) 67 68 session.Close() 69 } 70 71 } 72 73 func NewTaskIndex() *ravendb.IndexCreationTask { 74 res := ravendb.NewIndexCreationTask("TaskIndex") 75 res.Map = "from task in docs.Tasks select new { task.AssigneeID } " 76 return res 77 } 78 79 type Task struct { 80 ID string 81 AssigneeID string 82 } 83 84 func TestLazyAggregationEmbeddedLazy(t *testing.T) { 85 driver := createTestDriver(t) 86 destroy := func() { destroyDriver(t, driver) } 87 defer recoverTest(t, destroy) 88 89 // matches order of Java tests 90 lazyAggregationEmbeddedLazyTest(t, driver) 91 }