@@ -821,3 +821,98 @@ func TestFindPreloadWitLimitAndPage(t *testing.T) {
821
821
assert .Equal (t , nil , response .GetData ())
822
822
})
823
823
}
824
+
825
+ func TestBatch (t * testing.T ) {
826
+ t .Run ("should success batch query" , func (t * testing.T ) {
827
+ db , mock , err := sqlmock .New (sqlmock .QueryMatcherOption (sqlmock .QueryMatcherEqual ))
828
+ assert .NoError (t , err )
829
+ query := "UPDATE table a SET a.value = ? where a.id = ? ;"
830
+ mock .ExpectBegin ()
831
+ mock .ExpectExec (query ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewResult (1 , 1 ))
832
+ mock .ExpectCommit ()
833
+
834
+ database := & database {
835
+ config : config .NewDatabaseConfig (),
836
+ connectionRead : getMockedConnection (db ),
837
+ connectionWrite : getMockedConnection (db ),
838
+ }
839
+
840
+ err = database .Exec (query , "1" , "2" )
841
+
842
+ assert .NoError (t , err )
843
+ })
844
+ t .Run ("should error when exec fails" , func (t * testing.T ) {
845
+ db , mock , err := sqlmock .New ()
846
+ assert .NoError (t , err )
847
+ query := "UPDATE table a SET a.value = ? where a.id = ? ;"
848
+ values := []string {"1" , "2" }
849
+ mock .ExpectBegin ()
850
+ mock .ExpectExec (query ).WithArgs ().WillReturnError (errors .New ("some error" ))
851
+ mock .ExpectCommit ()
852
+
853
+ database := & database {
854
+ config : config .NewDatabaseConfig (),
855
+ connectionRead : getMockedConnection (db ),
856
+ connectionWrite : getMockedConnection (db ),
857
+ }
858
+
859
+ err = database .Exec (query , values )
860
+
861
+ assert .Error (t , err )
862
+ })
863
+ t .Run ("should error when begin fails" , func (t * testing.T ) {
864
+ db , mock , err := sqlmock .New ()
865
+ assert .NoError (t , err )
866
+ query := "UPDATE table a SET a.value = ? where a.id = ? ;"
867
+ values := []string {"1" , "2" }
868
+ mock .ExpectBegin ().WillReturnError (errors .New ("some error" ))
869
+ mock .ExpectExec (query ).WithArgs ().WillReturnResult (sqlmock .NewResult (1 , 1 ))
870
+ mock .ExpectCommit ()
871
+
872
+ database := & database {
873
+ config : config .NewDatabaseConfig (),
874
+ connectionRead : getMockedConnection (db ),
875
+ connectionWrite : getMockedConnection (db ),
876
+ }
877
+
878
+ err = database .Exec (query , values )
879
+
880
+ assert .Error (t , err )
881
+ })
882
+ t .Run ("should error when commit fails" , func (t * testing.T ) {
883
+ db , mock , err := sqlmock .New ()
884
+ assert .NoError (t , err )
885
+ query := "UPDATE table a SET a.value = ? where a.id = ? ;"
886
+ values := []string {"1" , "2" }
887
+ mock .ExpectBegin ()
888
+ mock .ExpectExec (query ).WithArgs ().WillReturnResult (sqlmock .NewResult (1 , 1 ))
889
+ mock .ExpectCommit ().WillReturnError (errors .New ("some error" ))
890
+
891
+ database := & database {
892
+ config : config .NewDatabaseConfig (),
893
+ connectionRead : getMockedConnection (db ),
894
+ connectionWrite : getMockedConnection (db ),
895
+ }
896
+
897
+ err = database .Exec (query , values )
898
+
899
+ assert .Error (t , err )
900
+ })
901
+ t .Run ("should error when get DB fails" , func (t * testing.T ) {
902
+ db := & gorm.DB {
903
+ Config : & gorm.Config {},
904
+ }
905
+
906
+ query := "UPDATE table a SET a.value = ? where a.id = ? ;"
907
+ values := []string {"1" , "2" }
908
+
909
+ database := & database {
910
+ config : config .NewDatabaseConfig (),
911
+ connectionWrite : db ,
912
+ }
913
+
914
+ err := database .Exec (query , values )
915
+
916
+ assert .Error (t , err )
917
+ })
918
+ }
0 commit comments