github.com/abolfazlbeh/zhycan@v0.0.0-20230819144214-24cf38237387/internal/db/sql_wrapper_test.go (about) 1 package db 2 3 import ( 4 "gorm.io/gorm" 5 "reflect" 6 "testing" 7 ) 8 9 func TestSqlWrapper_Initialize(t *testing.T) { 10 wrapper := &SqlWrapper[Sqlite]{name: "test"} 11 newWrapper, err := NewSqlWrapper[Sqlite]("test", "sqlite") 12 13 if err != nil { 14 t.Errorf("Creating Sql Wrapper --> Expected: %v, but got %v", nil, err) 15 return 16 } 17 18 if !reflect.DeepEqual(wrapper, newWrapper) { 19 t.Errorf("Creating Sql Wrapper --> Expected: %v, but got %v", wrapper, newWrapper) 20 return 21 } 22 } 23 24 func TestSqlWrapper_SqliteConnection(t *testing.T) { 25 makeReadyConfigManager() 26 27 newWrapper, err := NewSqlWrapper[Sqlite]("db/server1", "sqlite") 28 if err != nil { 29 t.Errorf("Creating Sql Wrapper --> Expected: %v, but got %v", nil, err) 30 return 31 } 32 33 //db, err := gorm.Open(sqlite.Open("file:file.db?mode=memory&cache=shared&_fk=1"), &gorm.Config{}) 34 //if err != nil { 35 // t.Errorf("Creating Sql Connection Instance --> Expected: %v, but got %v", nil, err) 36 // return 37 //} 38 39 db2, err := newWrapper.GetDb() 40 if err != nil { 41 t.Errorf("Get database instance --> Expected: %v, but got %v", nil, err) 42 return 43 } 44 45 tx := db2.Exec("SELECT 1") 46 if tx.Error != nil { 47 t.Errorf("Query on connected database --> Expected no Error: %v, but got %v", nil, err) 48 return 49 } 50 } 51 52 func TestSqlWrapper_AddLoggerAndTest(t *testing.T) { 53 makeReadyConfigManager() 54 55 newWrapper, err := NewSqlWrapper[Sqlite]("db/server1", "sqlite") 56 if err != nil { 57 t.Errorf("Creating Sql Wrapper --> Expected: %v, but got %v", nil, err) 58 return 59 } 60 61 db2, err := newWrapper.GetDb() 62 if err != nil { 63 t.Errorf("Get database instance --> Expected: %v, but got %v", nil, err) 64 return 65 } 66 67 tx := db2.Exec("SELECT 1") 68 if tx.Error != nil { 69 t.Errorf("Query on connected database --> Expected no Error: %v, but got %v", nil, err) 70 return 71 } 72 73 } 74 75 func TestSqlWrapper_SqliteConnectionConfiguration(t *testing.T) { 76 77 //db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ 78 // SkipDefaultTransaction: false, 79 // NamingStrategy: nil, 80 // FullSaveAssociations: false, 81 // Logger: nil, 82 // NowFunc: nil, 83 // DryRun: false, 84 // PrepareStmt: false, 85 // DisableAutomaticPing: false, 86 // DisableForeignKeyConstraintWhenMigrating: false, 87 // IgnoreRelationshipsWhenMigrating: false, 88 // DisableNestedTransaction: false, 89 // AllowGlobalUpdate: false, 90 // QueryFields: false, 91 // CreateBatchSize: 0, 92 // TranslateError: false, 93 // ClauseBuilders: nil, 94 // ConnPool: nil, 95 // Dialector: nil, 96 // Plugins: nil, 97 //}) 98 // 99 //db.Logger.LogMode() 100 101 } 102 103 func TestSqlWrapper_MigrateTest(t *testing.T) { 104 makeReadyConfigManager() 105 106 newWrapper, err := NewSqlWrapper[Sqlite]("db/server1", "sqlite") 107 if err != nil { 108 t.Errorf("Creating Sql Wrapper --> Expected: %v, but got %v", nil, err) 109 return 110 } 111 112 db2, err := newWrapper.GetDb() 113 if err != nil { 114 t.Errorf("Get database instance --> Expected: %v, but got %v", nil, err) 115 return 116 } 117 118 type User struct { 119 gorm.Model 120 Name string 121 } 122 123 err = newWrapper.Migrate(&User{}) 124 if err != nil { 125 t.Errorf("Migrating Tables Error --> Expected: %v, but got %v", nil, err) 126 return 127 } 128 129 u := User{Name: "test"} 130 131 result := db2.Create(&u) // pass pointer of data to // Create 132 133 if result.Error != nil { 134 t.Errorf("Result Error --> Expected: %v, but got %v", nil, result.Error) 135 return 136 } 137 138 expectedId := uint(1) 139 resultId := u.ID 140 if resultId != expectedId { 141 t.Errorf("Expected To Get First Inserted Id: %v, but got %v", expectedId, resultId) 142 return 143 } 144 145 expectedRowsAffected := int64(1) 146 if result.RowsAffected != expectedRowsAffected { 147 t.Errorf("Expected To Get Rows Affected: %v, but got %v", expectedRowsAffected, result.RowsAffected) 148 return 149 } 150 }