github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/tests/basic_documents_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 basicDocumentscanChangeDocumentCollectionWithDeleteAndSave(t *testing.T, driver *RavenTestDriver) { 11 var err error 12 store := driver.getDocumentStoreMust(t) 13 defer store.Close() 14 15 documentID := "users/1" 16 { 17 session := openSessionMust(t, store) 18 user := &User{} 19 user.setName("Grisha") 20 21 err = session.StoreWithID(user, documentID) 22 assert.NoError(t, err) 23 err = session.SaveChanges() 24 assert.NoError(t, err) 25 session.Close() 26 } 27 28 { 29 session := openSessionMust(t, store) 30 err = session.DeleteByID(documentID, "") 31 assert.NoError(t, err) 32 err = session.SaveChanges() 33 assert.NoError(t, err) 34 session.Close() 35 } 36 37 { 38 session := openSessionMust(t, store) 39 var user *User 40 err = session.Load(&user, documentID) 41 assert.NoError(t, err) 42 assert.Nil(t, user) 43 session.Close() 44 } 45 46 { 47 session := openSessionMust(t, store) 48 person := &Person{} 49 person.Name = "Grisha" 50 err = session.StoreWithID(person, documentID) 51 assert.NoError(t, err) 52 err = session.SaveChanges() 53 assert.NoError(t, err) 54 session.Close() 55 } 56 } 57 58 func basicDocumentsGet(t *testing.T, driver *RavenTestDriver) { 59 var err error 60 store := driver.getDocumentStoreMust(t) 61 defer store.Close() 62 63 dummy, err := entityToDocument(&User{}) 64 assert.NoError(t, err) 65 delete(dummy, "ID") 66 67 { 68 session := openSessionMust(t, store) 69 user1 := &User{} 70 user1.setName("Fitzchak") 71 72 user2 := &User{} 73 user2.setName("Arek") 74 75 err = session.StoreWithID(user1, "users/1") 76 assert.NoError(t, err) 77 err = session.StoreWithID(user2, "users/2") 78 assert.NoError(t, err) 79 80 err = session.SaveChanges() 81 assert.NoError(t, err) 82 session.Close() 83 } 84 requestExecutor := store.GetRequestExecutor("") 85 getDocumentsCommand, err := ravendb.NewGetDocumentsCommand([]string{"users/1", "users/2"}, nil, false) 86 assert.NoError(t, err) 87 err = requestExecutor.ExecuteCommand(getDocumentsCommand, nil) 88 assert.NoError(t, err) 89 docs := getDocumentsCommand.Result 90 assert.Equal(t, len(docs.Results), 2) 91 doc1 := docs.Results[0] 92 doc2 := docs.Results[1] 93 94 assert.NotNil(t, doc1) 95 doc1Properties := objectNodeFieldNames(doc1) 96 assert.True(t, stringArrayContains(doc1Properties, "@metadata")) 97 assert.Equal(t, len(doc1Properties), len(dummy)+1) // +1 for @metadata 98 99 assert.NotNil(t, doc2) 100 doc2Properties := objectNodeFieldNames(doc2) 101 assert.True(t, stringArrayContains(doc2Properties, "@metadata")) 102 assert.Equal(t, len(doc2Properties), len(dummy)+1) // +1 for @metadata 103 104 // Note: we don't expose EntityToJSON in Go 105 /* 106 { 107 session := openSessionMust(t, store) 108 etojs := session.GetEntityToJSON() 109 user1I, err := etojs.ConvertToEntity(reflect.TypeOf(&User{}), "users/1", doc1) 110 assert.NoError(t, err) 111 user1 := user1I.(*User) 112 113 user2I, err := etojs.ConvertToEntity(reflect.TypeOf(&User{}), "users/2", doc2) 114 assert.NoError(t, err) 115 user2 := user2I.(*User) 116 assert.Equal(t, *user1.Name, "Fitzchak") 117 assert.Equal(t, *user2.Name, "Arek") 118 session.Close() 119 } 120 */ 121 122 getDocumentsCommand, err = ravendb.NewGetDocumentsCommand([]string{"users/1", "users/2"}, nil, true) 123 assert.NoError(t, err) 124 err = requestExecutor.ExecuteCommand(getDocumentsCommand, nil) 125 assert.NoError(t, err) 126 docs = getDocumentsCommand.Result 127 assert.Equal(t, len(docs.Results), 2) 128 doc1 = docs.Results[0] 129 doc2 = docs.Results[1] 130 131 assert.NotNil(t, doc1) 132 doc1Properties = objectNodeFieldNames(doc1) 133 assert.True(t, stringArrayContains(doc1Properties, "@metadata")) 134 assert.Equal(t, len(doc1Properties), 1) 135 136 assert.NotNil(t, doc1) 137 doc2Properties = objectNodeFieldNames(doc2) 138 assert.True(t, stringArrayContains(doc2Properties, "@metadata")) 139 assert.Equal(t, len(doc2Properties), 1) 140 } 141 142 func TestBasicDocuments(t *testing.T) { 143 driver := createTestDriver(t) 144 destroy := func() { destroyDriver(t, driver) } 145 defer recoverTest(t, destroy) 146 147 // matches order of Java tests 148 basicDocumentsGet(t, driver) 149 basicDocumentscanChangeDocumentCollectionWithDeleteAndSave(t, driver) 150 }