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  }