github.com/altipla-consulting/ravendb-go-client@v0.1.3/tests/regex_query_test.go (about) 1 package tests 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func regexQueryWueriesWithRegexFromDocumentQuery(t *testing.T, driver *RavenTestDriver) { 11 var err error 12 store := driver.getDocumentStoreMust(t) 13 defer store.Close() 14 15 { 16 session := openSessionMust(t, store) 17 18 err = session.Store(NewRegexMe("I love dogs and cats")) 19 assert.NoError(t, err) 20 err = session.Store(NewRegexMe("I love cats")) 21 assert.NoError(t, err) 22 err = session.Store(NewRegexMe("I love dogs")) 23 assert.NoError(t, err) 24 err = session.Store(NewRegexMe("I love bats")) 25 assert.NoError(t, err) 26 err = session.Store(NewRegexMe("dogs love me")) 27 assert.NoError(t, err) 28 err = session.Store(NewRegexMe("cats love me")) 29 assert.NoError(t, err) 30 err = session.SaveChanges() 31 assert.NoError(t, err) 32 33 session.Close() 34 } 35 36 { 37 session := openSessionMust(t, store) 38 39 query := session.Advanced().QueryCollectionForType(reflect.TypeOf(&RegexMe{})) 40 query = query.WhereRegex("text", "^[a-z ]{2,4}love") 41 42 var result []*RegexMe 43 err = query.GetResults(&result) 44 assert.NoError(t, err) 45 assert.Equal(t, len(result), 4) 46 47 iq, err := query.GetIndexQuery() 48 assert.NoError(t, err) 49 assert.Equal(t, iq.GetQuery(), "from RegexMes where regex(text, $p0)") 50 assert.Equal(t, iq.GetQueryParameters()["p0"], "^[a-z ]{2,4}love") 51 52 session.Close() 53 } 54 } 55 56 type RegexMe struct { 57 Text string `json:"text"` 58 } 59 60 func NewRegexMe(text string) *RegexMe { 61 return &RegexMe{ 62 Text: text, 63 } 64 } 65 66 func TestRegexQuery(t *testing.T) { 67 driver := createTestDriver(t) 68 destroy := func() { destroyDriver(t, driver) } 69 defer recoverTest(t, destroy) 70 71 // matches order of Java tests 72 regexQueryWueriesWithRegexFromDocumentQuery(t, driver) 73 }