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 }