github.com/altipla-consulting/ravendb-go-client@v0.1.3/tests/next_and_seed_identities_test.go (about) 1 package tests 2 3 import ( 4 "testing" 5 6 "github.com/altipla-consulting/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 }