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  }