github.com/abolfazlbeh/zhycan@v0.0.0-20230819144214-24cf38237387/internal/db/manager_test.go (about)

     1  package db
     2  
     3  import (
     4  	"github.com/abolfazlbeh/zhycan/internal/config"
     5  	"gorm.io/gorm"
     6  	"reflect"
     7  	"testing"
     8  )
     9  
    10  func TestManager_Init(t *testing.T) {
    11  	makeReadyConfigManager()
    12  
    13  	m := manager{}
    14  	m.init()
    15  
    16  	if m.name != "db" {
    17  		t.Errorf("Expected manager name to be 'db', got '%s'", m.name)
    18  	}
    19  }
    20  
    21  func TestManager_CheckInitialization(t *testing.T) {
    22  	makeReadyConfigManager()
    23  
    24  	m := manager{}
    25  	m.init()
    26  
    27  	if len(m.sqliteDbInstances) != 1 {
    28  		t.Errorf("Expected manager have %v instance of sqlite, but got %v", 1, len(m.sqliteDbInstances))
    29  		return
    30  	}
    31  
    32  	if v, ok := m.sqliteDbInstances["server1"]; ok {
    33  		expected := reflect.TypeOf(&SqlWrapper[Sqlite]{})
    34  		got := reflect.ValueOf(v).Type()
    35  		if got != expected {
    36  			t.Errorf("Expected manager one sqlite instance: %v, but got: %v ", expected, got)
    37  			return
    38  		}
    39  	} else {
    40  		t.Errorf("Expected manager have %v instance of sqlite for %v, but got nothing", 1, "server1")
    41  		return
    42  	}
    43  }
    44  
    45  func TestManager_CheckInitializationMongo(t *testing.T) {
    46  	makeReadyConfigManager()
    47  
    48  	m := manager{}
    49  	m.init()
    50  
    51  	if len(m.mongoDbInstances) != 1 {
    52  		t.Errorf("Expected manager have %v instance of mongodb, but got %v", 1, len(m.mongoDbInstances))
    53  		return
    54  	}
    55  
    56  	if v, ok := m.mongoDbInstances["server4"]; ok {
    57  		expected := reflect.TypeOf(&MongoWrapper{})
    58  		got := reflect.ValueOf(v).Type()
    59  		if got != expected {
    60  			t.Errorf("Expected manager one mongodb instance: %v, but got: %v ", expected, got)
    61  			return
    62  		}
    63  	} else {
    64  		t.Errorf("Expected manager have %v instance of mongodb for %v, but got nothing", 1, "server1")
    65  		return
    66  	}
    67  }
    68  
    69  func TestManager_TestGetDbFunc(t *testing.T) {
    70  	makeReadyConfigManager()
    71  
    72  	m := manager{}
    73  	m.init()
    74  
    75  	if len(m.sqliteDbInstances) != 1 {
    76  		t.Errorf("Expected manager have %v instance of sqlite, but got %v", 1, len(m.sqliteDbInstances))
    77  		return
    78  	}
    79  
    80  	db, err := m.GetDb("server1")
    81  	if err != nil {
    82  		t.Errorf("Get Db Instance --> Expected error: %v, but got %v", nil, err)
    83  		return
    84  	}
    85  
    86  	expected := reflect.TypeOf(&gorm.DB{})
    87  	got := reflect.ValueOf(db).Type()
    88  
    89  	if got != expected {
    90  		t.Errorf("Expected manager GetDb function return: %v, but got: %v ", expected, got)
    91  		return
    92  	}
    93  }
    94  
    95  func makeReadyConfigManager() {
    96  	path := "../.."
    97  	initialMode := "test"
    98  	prefix := "ZHYCAN"
    99  
   100  	_ = config.CreateManager(path, initialMode, prefix)
   101  }