github.com/altipla-consulting/ravendb-go-client@v0.1.3/tests/contains_test.go (about) 1 package tests 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 type UserWithFavs struct { 11 ID string 12 Name string 13 Favourites []string 14 } 15 16 func NewUserWithFavs() *UserWithFavs { 17 return &UserWithFavs{} 18 } 19 20 func containsTestcontainsTest(t *testing.T, driver *RavenTestDriver) { 21 var err error 22 store := driver.getDocumentStoreMust(t) 23 defer store.Close() 24 25 { 26 session := openSessionMust(t, store) 27 userCreator := func(name string, favs []string) { 28 user := NewUserWithFavs() 29 user.Name = name 30 user.Favourites = favs 31 32 err = session.Store(user) 33 assert.NoError(t, err) 34 } 35 36 userCreator("John", []string{"java", "c#"}) 37 userCreator("Tarzan", []string{"java", "go"}) 38 userCreator("Jane", []string{"pascal"}) 39 40 err = session.SaveChanges() 41 assert.NoError(t, err) 42 43 session.Close() 44 } 45 46 { 47 session := openSessionMust(t, store) 48 49 q := session.QueryCollectionForType(reflect.TypeOf(&UserWithFavs{})) 50 q = q.ContainsAny("Favourites", []interface{}{"pascal", "go"}) 51 projType := reflect.TypeOf("") 52 q = q.SelectFields(projType, "Name") 53 var pascalOrGoDeveloperNames []string 54 err = q.GetResults(&pascalOrGoDeveloperNames) 55 assert.NoError(t, err) 56 assert.Equal(t, 2, len(pascalOrGoDeveloperNames)) 57 assert.Equal(t, pascalOrGoDeveloperNames[0], "Tarzan") 58 assert.Equal(t, pascalOrGoDeveloperNames[1], "Jane") 59 60 session.Close() 61 } 62 63 { 64 session := openSessionMust(t, store) 65 66 q := session.QueryCollectionForType(reflect.TypeOf(&UserWithFavs{})) 67 q = q.ContainsAll("Favourites", []interface{}{"java"}) 68 projType := reflect.TypeOf("") 69 q = q.SelectFields(projType, "Name") 70 var javaDevelopers []string 71 err = q.GetResults(&javaDevelopers) 72 assert.NoError(t, err) 73 assert.Equal(t, 2, len(javaDevelopers)) 74 assert.Equal(t, javaDevelopers[0], "John") 75 assert.Equal(t, javaDevelopers[1], "Tarzan") 76 77 session.Close() 78 } 79 80 } 81 82 func TestContains(t *testing.T) { 83 driver := createTestDriver(t) 84 destroy := func() { destroyDriver(t, driver) } 85 defer recoverTest(t, destroy) 86 87 containsTestcontainsTest(t, driver) 88 }