github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/tests/ravendb_12132_test.go (about)

     1  package tests
     2  
     3  import (
     4  	"github.com/ravendb/ravendb-go-client"
     5  	"github.com/stretchr/testify/assert"
     6  	"reflect"
     7  	"testing"
     8  )
     9  
    10  func canCreateClusterTransactionRequest1(t *testing.T, driver *RavenTestDriver) {
    11  	store := driver.getDocumentStoreMust(t)
    12  	{
    13  		session := openSessionMustWithOptions(t, store, &ravendb.SessionOptions{
    14  			Database:        "",
    15  			RequestExecutor: nil,
    16  			TransactionMode: ravendb.TransactionMode_ClusterWide,
    17  			DisableAtomicDocumentWritesInClusterWideTransaction: nil,
    18  		})
    19  
    20  		var err error
    21  		user := &Document{ID: "this/is/my/id", Name: "Grisha"}
    22  		assert.NotNil(t, session.Advanced().ClusterTransaction())
    23  		_, err = session.Advanced().ClusterTransaction().CreateCompareExchangeValue("usernames/ayende", user)
    24  
    25  		assert.NoError(t, err)
    26  
    27  		err = session.SaveChanges()
    28  		assert.NoError(t, err)
    29  
    30  		var result *ravendb.CompareExchangeValue
    31  
    32  		result, err = session.Advanced().ClusterTransaction().GetCompareExchangeValue(reflect.TypeOf(&Document{}), "usernames/ayende")
    33  		userFromCluster, cast := result.GetValue().(*Document)
    34  		assert.True(t, cast)
    35  		assert.NoError(t, err)
    36  		assert.Equal(t, user.Name, userFromCluster.Name)
    37  		assert.Equal(t, user.ID, userFromCluster.ID)
    38  
    39  		session.Close()
    40  	}
    41  
    42  	{
    43  		operation, err := ravendb.NewGetCompareExchangeValueOperation(reflect.TypeOf(&Document{}), "usernames/ayende")
    44  		assert.NoError(t, err)
    45  
    46  		err = store.Operations().Send(operation, nil)
    47  		assert.NoError(t, err)
    48  
    49  		result := operation.Command.Result
    50  
    51  		assert.NotNil(t, result)
    52  
    53  		docFromServer := result.Value.(*Document)
    54  		assert.Equal(t, "Grisha", docFromServer.Name)
    55  		assert.Equal(t, "this/is/my/id", docFromServer.ID)
    56  	}
    57  
    58  	store.Close()
    59  }
    60  
    61  func TestRavenDB12132(t *testing.T) {
    62  	driver := createTestDriver(t)
    63  	destroy := func() { destroyDriver(t, driver) }
    64  	defer recoverTest(t, destroy)
    65  
    66  	// matches the order of Java tests
    67  	canCreateClusterTransactionRequest1(t, driver)
    68  }