github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/store/storetest/store_test_suite.go (about)

     1  package storetest
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/masterhung0112/hk_server/v5/shared/mlog"
     7  	"github.com/masterhung0112/hk_server/v5/store"
     8  	"github.com/stretchr/testify/suite"
     9  )
    10  
    11  type StoreTestBaseSuite interface {
    12  	suite.TestingSuite
    13  
    14  	// InitInitializeStore()
    15  
    16  	SetStore(store store.Store)
    17  	Store() store.Store
    18  
    19  	SetSqlStore(sqlStore SqlStore)
    20  	SqlStore() SqlStore
    21  }
    22  
    23  type StoreTestSuite struct {
    24  	// suite.Suite
    25  
    26  	store    store.Store
    27  	sqlStore SqlStore
    28  	// sqlSupplier storetest.SqlSupplier
    29  }
    30  
    31  /***
    32   * StoreTestSuite implements interface StoreTestBaseSuite
    33   ***/
    34  // func (s *StoreTestSuite) InitInitializeStore() {
    35  // 	if len(StoreTypes) >= 1 && (s.Store() == nil || s.SqlStore() == nil) {
    36  // 		s.SetStore(StoreTypes[0].Store)
    37  // 		s.SetSqlStore(StoreTypes[0].SqlStore)
    38  // 	}
    39  // }
    40  
    41  func (s *StoreTestSuite) SetStore(store store.Store) {
    42  	s.store = store
    43  }
    44  
    45  func (s *StoreTestSuite) Store() store.Store {
    46  	return s.store
    47  }
    48  
    49  func (s *StoreTestSuite) SetSqlStore(sqlStore SqlStore) {
    50  	s.sqlStore = sqlStore
    51  }
    52  
    53  func (s *StoreTestSuite) SqlStore() SqlStore {
    54  	return s.sqlStore
    55  }
    56  
    57  // func StoreTestSuiteWithSqlSupplier(t *testing.T, testSuite StoreTestBaseSuite, executeFunc func(t *testing.T, testSuite StoreTestBaseSuite)) {
    58  // 	for _, st := range StoreTypes {
    59  // 		st := st
    60  // 		t.Run(st.Name, func(t *testing.T) {
    61  // 			if testing.Short() {
    62  // 				t.SkipNow()
    63  // 			}
    64  // 			testSuite.SetStore(st.Store)
    65  // 			testSuite.SetSqlStore(st.SqlStore)
    66  // 			// suite.Run(t, testSuite)
    67  // 			executeFunc(t, testSuite)
    68  // 		})
    69  // 	}
    70  // }
    71  
    72  func StoreTestMysqlTestSuite(t *testing.T, testSuite *suite.Suite) {
    73  	// Setup a global logger to catch tests logging outside of app context
    74  	// The global logger will be stomped by apps initializing but that's fine for testing. Ideally this won't happen.
    75  	mlog.InitGlobalLogger(mlog.NewLogger(&mlog.LoggerConfiguration{
    76  		EnableConsole: true,
    77  		ConsoleJson:   true,
    78  		ConsoleLevel:  "error",
    79  		EnableFile:    false,
    80  	}))
    81  
    82  	// dir, err := ioutil.TempDir("", "")
    83  	// require.NoError(t, err)
    84  	// defer os.RemoveAll(dir)
    85  
    86  	suite.Run(t, testSuite)
    87  
    88  	// suite.Run(t, &FileBackendTestSuite{
    89  	// 	settings: model.FileSettings{
    90  	// 		DriverName: model.NewString(model.IMAGE_DRIVER_LOCAL),
    91  	// 		Directory:  &dir,
    92  	// 	},
    93  	// })
    94  }