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

     1  package tests
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/ravendb/ravendb-go-client"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func nextAndSeedIdentitiesTestNextIdentityFor(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  		user := &User{}
    18  		user.setLastName("Adi")
    19  
    20  		err = session.StoreWithID(user, "users|")
    21  		assert.NoError(t, err)
    22  		err = session.SaveChanges()
    23  		assert.NoError(t, err)
    24  		session.Close()
    25  	}
    26  
    27  	command := ravendb.NewNextIdentityForCommand("users")
    28  	err = store.GetRequestExecutor("").ExecuteCommand(command, nil)
    29  	assert.NoError(t, err)
    30  
    31  	{
    32  		session := openSessionMust(t, store)
    33  		user := &User{}
    34  		user.setLastName("Avivi")
    35  
    36  		err = session.StoreWithID(user, "users|")
    37  		assert.NoError(t, err)
    38  		err = session.SaveChanges()
    39  		assert.NoError(t, err)
    40  		session.Close()
    41  	}
    42  
    43  	{
    44  		var entityWithId1, entityWithId2, entityWithId3, entityWithId4 *User
    45  		session := openSessionMust(t, store)
    46  		err = session.Load(&entityWithId1, "users/1")
    47  		assert.NoError(t, err)
    48  		err = session.Load(&entityWithId2, "users/2")
    49  		assert.NoError(t, err)
    50  		err = session.Load(&entityWithId3, "users/3")
    51  		assert.NoError(t, err)
    52  		err = session.Load(&entityWithId4, "users/4")
    53  		assert.NoError(t, err)
    54  
    55  		assert.NotNil(t, entityWithId1)
    56  		assert.NotNil(t, entityWithId3)
    57  		assert.Nil(t, entityWithId2)
    58  		assert.Nil(t, entityWithId4)
    59  
    60  		assert.Equal(t, *entityWithId1.LastName, "Adi")
    61  		assert.Equal(t, *entityWithId3.LastName, "Avivi")
    62  		session.Close()
    63  	}
    64  }
    65  
    66  func nextAndSeedIdentitiesTestSeedIdentityFor(t *testing.T, driver *RavenTestDriver) {
    67  	var err error
    68  	store := driver.getDocumentStoreMust(t)
    69  	defer store.Close()
    70  
    71  	{
    72  		session := openSessionMust(t, store)
    73  		user := &User{}
    74  		user.setLastName("Adi")
    75  
    76  		err = session.StoreWithID(user, "users|")
    77  		assert.NoError(t, err)
    78  		err = session.SaveChanges()
    79  		assert.NoError(t, err)
    80  		session.Close()
    81  	}
    82  
    83  	command, err := ravendb.NewSeedIdentityForCommand("users", 1990, false)
    84  	assert.NoError(t, err)
    85  	err = store.GetRequestExecutor("").ExecuteCommand(command, nil)
    86  	assert.NoError(t, err)
    87  	result := command.Result
    88  	assert.Equal(t, result, 1990)
    89  
    90  	{
    91  		session := openSessionMust(t, store)
    92  		user := &User{}
    93  		user.setLastName("Avivi")
    94  
    95  		err = session.StoreWithID(user, "users|")
    96  		assert.NoError(t, err)
    97  		err = session.SaveChanges()
    98  		assert.NoError(t, err)
    99  		session.Close()
   100  	}
   101  
   102  	{
   103  		session := openSessionMust(t, store)
   104  		var entityWithId1, entityWithId2, entityWithId1990, entityWithId1991, entityWithId1992 *User
   105  		err = session.Load(&entityWithId1, "users/1")
   106  		assert.NoError(t, err)
   107  
   108  		err = session.Load(&entityWithId2, "users/2")
   109  		assert.NoError(t, err)
   110  
   111  		err = session.Load(&entityWithId1990, "users/1990")
   112  		assert.NoError(t, err)
   113  
   114  		err = session.Load(&entityWithId1991, "users/1991")
   115  		assert.NoError(t, err)
   116  
   117  		err = session.Load(&entityWithId1992, "users/1992")
   118  		assert.NoError(t, err)
   119  
   120  		assert.NotNil(t, entityWithId1)
   121  		assert.NotNil(t, entityWithId1991)
   122  
   123  		assert.Nil(t, entityWithId2)
   124  		assert.Nil(t, entityWithId1990)
   125  		assert.Nil(t, entityWithId1992)
   126  
   127  		assert.Equal(t, *entityWithId1.LastName, "Adi")
   128  		assert.Equal(t, *entityWithId1991.LastName, "Avivi")
   129  		session.Close()
   130  	}
   131  
   132  	command, err = ravendb.NewSeedIdentityForCommand("users", 1975, false)
   133  	assert.NoError(t, err)
   134  	err = store.GetRequestExecutor("").ExecuteCommand(command, nil)
   135  	assert.NoError(t, err)
   136  	assert.Equal(t, command.Result, 1991)
   137  
   138  	{
   139  		op := ravendb.NewGetIdentitiesOperation()
   140  		err = store.Maintenance().Send(op)
   141  		assert.NoError(t, err)
   142  
   143  		identites := op.Command.Result
   144  		n := identites["users|"]
   145  		assert.Equal(t, n, 1991)
   146  	}
   147  }
   148  
   149  func TestNextAndSeedIdentities(t *testing.T) {
   150  	driver := createTestDriver(t)
   151  	destroy := func() { destroyDriver(t, driver) }
   152  	defer recoverTest(t, destroy)
   153  
   154  	nextAndSeedIdentitiesTestNextIdentityFor(t, driver)
   155  	nextAndSeedIdentitiesTestSeedIdentityFor(t, driver)
   156  }