@@ -3,6 +3,7 @@ package mysqldump
3
3
import (
4
4
"bytes"
5
5
"io/ioutil"
6
+ "reflect"
6
7
"strings"
7
8
"testing"
8
9
@@ -42,7 +43,7 @@ CREATE TABLE 'Test_Table' (~id~ int(11) NOT NULL AUTO_INCREMENT,~email~ char(60)
42
43
43
44
LOCK TABLES ~Test_Table~ WRITE;
44
45
/*!40000 ALTER TABLE ~Test_Table~ DISABLE KEYS */;
45
- INSERT INTO ~Test_Table~ (~id~, ~email~, ~name~) VALUES ('1' ,NULL,'Test Name 1'),('2' ,'[email protected] ','Test Name 2');
46
+ INSERT INTO ~Test_Table~ (~id~, ~email~, ~name~) VALUES (1 ,NULL,'Test Name 1'),(2 ,'[email protected] ','Test Name 2');
46
47
/*!40000 ALTER TABLE ~Test_Table~ ENABLE KEYS */;
47
48
UNLOCK TABLES;
48
49
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
@@ -57,28 +58,52 @@ UNLOCK TABLES;
57
58
58
59
`
59
60
61
+ func mockColumnRows () * sqlmock.Rows {
62
+ var enum struct {}
63
+ col1 := sqlmock .NewColumn ("Field" ).OfType ("VARCHAR" , "" ).Nullable (true )
64
+ col2 := sqlmock .NewColumn ("Type" ).OfType ("TEXT" , "" ).Nullable (true )
65
+ col3 := sqlmock .NewColumn ("Null" ).OfType ("VARCHAR" , "" ).Nullable (true )
66
+ col4 := sqlmock .NewColumn ("Key" ).OfType ("ENUM" , & enum ).Nullable (true )
67
+ col5 := sqlmock .NewColumn ("Default" ).OfType ("TEXT" , "" ).Nullable (true )
68
+ col6 := sqlmock .NewColumn ("Extra" ).OfType ("VARCHAR" , "" ).Nullable (true )
69
+ return sqlmock .NewRowsWithColumnDefinition (col1 , col2 , col3 , col4 , col5 , col6 ).
70
+ AddRow ("id" , "int(11)" , false , nil , 0 , "" ).
71
+ AddRow ("email" , "varchar(255)" , true , nil , nil , "" ).
72
+ AddRow ("name" , "varchar(255)" , true , nil , nil , "" ).
73
+ AddRow ("hash" , "varchar(255)" , true , nil , nil , "VIRTUAL GENERATED" )
74
+ }
75
+
76
+ func c (name string , v interface {}) * sqlmock.Column {
77
+ var t string
78
+ switch reflect .ValueOf (v ).Kind () {
79
+ case reflect .String :
80
+ t = "VARCHAR"
81
+ case reflect .Int :
82
+ t = "INT"
83
+ case reflect .Bool :
84
+ t = "BOOL"
85
+ }
86
+ return sqlmock .NewColumn (name ).OfType (t , v ).Nullable (true )
87
+ }
88
+
60
89
func RunDump (t testing.TB , data * Data ) {
61
90
db , mock , err := sqlmock .New ()
62
91
assert .NoError (t , err , "an error was not expected when opening a stub database connection" )
63
92
defer db .Close ()
64
93
65
94
data .Connection = db
66
- showTablesRows := sqlmock .NewRows ([] string { "Tables_in_Testdb" } ).
95
+ showTablesRows := sqlmock .NewRowsWithColumnDefinition ( c ( "Tables_in_Testdb" , "" ) ).
67
96
AddRow ("Test_Table" )
68
97
69
- showColumnsRows := sqlmock .NewRows ([]string {"Field" , "Type" , "Null" , "Key" , "Default" , "Extra" }).
70
- AddRow ("id" , "int(11)" , false , "" , 0 , "" ).
71
- AddRow ("email" , "varchar(255)" , true , "" , nil , "" ).
72
- AddRow ("name" , "varchar(255)" , true , "" , nil , "" ).
73
- AddRow ("hash" , "varchar(255)" , true , "" , nil , "VIRTUAL GENERATED" )
98
+ showColumnsRows := mockColumnRows ()
74
99
75
- serverVersionRows := sqlmock .NewRows ([] string { "Version()" } ).
100
+ serverVersionRows := sqlmock .NewRowsWithColumnDefinition ( c ( "Version()" , "" ) ).
76
101
AddRow ("test_version" )
77
102
78
- createTableRows := sqlmock .NewRows ([] string { "Table" , "Create Table" } ).
103
+ createTableRows := sqlmock .NewRowsWithColumnDefinition ( c ( "Table" , "" ), c ( " Create Table", "" ) ).
79
104
AddRow ("Test_Table" , "CREATE TABLE 'Test_Table' (`id` int(11) NOT NULL AUTO_INCREMENT,`email` char(60) DEFAULT NULL, `name` char(60), PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=latin1" )
80
105
81
- createTableValueRows := sqlmock .NewRows ([] string { "id" , "email" , "name" } ).
106
+ createTableValueRows := sqlmock .NewRowsWithColumnDefinition ( c ( "id" , 0 ), c ( "email" , "" ), c ( " name", "" ) ).
82
107
AddRow (1 , nil , "Test Name 1" ).
83
108
AddRow (
2 ,
"[email protected] " ,
"Test Name 2" )
84
109
@@ -120,21 +145,18 @@ func TestNoLockOk(t *testing.T) {
120
145
defer db .Close ()
121
146
122
147
data .Connection = db
123
- showTablesRows := sqlmock .NewRows ([] string { "Tables_in_Testdb" } ).
148
+ showTablesRows := sqlmock .NewRowsWithColumnDefinition ( c ( "Tables_in_Testdb" , "" ) ).
124
149
AddRow ("Test_Table" )
125
150
126
- showColumnsRows := sqlmock .NewRows ([]string {"Field" , "Type" , "Null" , "Key" , "Default" , "Extra" }).
127
- AddRow ("id" , "int(11)" , false , "" , 0 , "" ).
128
- AddRow ("email" , "varchar(255)" , true , "" , nil , "" ).
129
- AddRow ("name" , "varchar(255)" , true , "" , nil , "" )
151
+ showColumnsRows := mockColumnRows ()
130
152
131
- serverVersionRows := sqlmock .NewRows ([] string { "Version()" } ).
153
+ serverVersionRows := sqlmock .NewRowsWithColumnDefinition ( c ( "Version()" , "" ) ).
132
154
AddRow ("test_version" )
133
155
134
- createTableRows := sqlmock .NewRows ([] string { "Table" , "Create Table" } ).
156
+ createTableRows := sqlmock .NewRowsWithColumnDefinition ( c ( "Table" , "" ), c ( " Create Table", "" ) ).
135
157
AddRow ("Test_Table" , "CREATE TABLE 'Test_Table' (`id` int(11) NOT NULL AUTO_INCREMENT,`email` char(60) DEFAULT NULL, `name` char(60), PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=latin1" )
136
158
137
- createTableValueRows := sqlmock .NewRows ([] string { "id" , "email" , "name" } ).
159
+ createTableValueRows := sqlmock .NewRowsWithColumnDefinition ( c ( "id" , 0 ), c ( "email" , "" ), c ( " name", "" ) ).
138
160
AddRow (1 , nil , "Test Name 1" ).
139
161
AddRow (
2 ,
"[email protected] " ,
"Test Name 2" )
140
162
0 commit comments