@@ -3,11 +3,12 @@ package mysqldump
33import (
44 "bytes"
55 "database/sql"
6+ "errors"
67 "reflect"
78 "strings"
89 "testing"
910
10- sqlmock "github.com/DATA-DOG/go-sqlmock"
11+ "github.com/DATA-DOG/go-sqlmock"
1112 "github.com/stretchr/testify/assert"
1213)
1314
@@ -122,7 +123,7 @@ func TestGetServerVersionOk(t *testing.T) {
122123 assert .Equal (t , "test_version" , meta .ServerVersion )
123124}
124125
125- func TestCreateTableSQLOk (t * testing.T ) {
126+ func TestCreateSQLSQLOk (t * testing.T ) {
126127 data , mock , err := getMockData ()
127128 assert .NoError (t , err , "an error was not expected when opening a stub database connection" )
128129 defer data .Close ()
@@ -147,6 +148,83 @@ func TestCreateTableSQLOk(t *testing.T) {
147148 }
148149}
149150
151+ func TestCreateSQLQueryFail (t * testing.T ) {
152+ data , mock , err := getMockData ()
153+ assert .NoError (t , err , "an error was not expected when opening a stub database connection" )
154+ defer data .Close ()
155+
156+ queryError := errors .New ("query failure" )
157+ mock .ExpectQuery ("^SHOW CREATE TABLE `Test_Table`$" ).WillReturnError (queryError )
158+
159+ table := data .createTable ("Test_Table" )
160+
161+ result , err := table .CreateSQL ()
162+ assert .Error (t , err )
163+ assert .Equal (t , queryError , err )
164+
165+ // we make sure that all expectations were met
166+ assert .NoError (t , mock .ExpectationsWereMet (), "there were unfulfilled expections" )
167+
168+ expectedResult := ""
169+
170+ if ! reflect .DeepEqual (result , expectedResult ) {
171+ t .Fatalf ("expected %#v, got %#v" , expectedResult , result )
172+ }
173+ }
174+
175+ func TestCreateSQLWrongTable (t * testing.T ) {
176+ data , mock , err := getMockData ()
177+ assert .NoError (t , err , "an error was not expected when opening a stub database connection" )
178+ defer data .Close ()
179+
180+ rows := sqlmock .NewRows ([]string {"Table" , "Create Table" }).
181+ AddRow ("Diff_Table" , "CREATE TABLE 'Test_Table' (`id` int(11) NOT NULL AUTO_INCREMENT,`s` char(60) DEFAULT NULL, PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=latin1" )
182+
183+ mock .ExpectQuery ("^SHOW CREATE TABLE `Test_Table`$" ).WillReturnRows (rows )
184+
185+ table := data .createTable ("Test_Table" )
186+
187+ result , err := table .CreateSQL ()
188+ assert .Error (t , err )
189+ expectedError := errors .New ("returned table is not the same as requested table" )
190+ assert .Equal (t , expectedError , err )
191+
192+ // we make sure that all expectations were met
193+ assert .NoError (t , mock .ExpectationsWereMet (), "there were unfulfilled expections" )
194+
195+ expectedResult := ""
196+
197+ if ! reflect .DeepEqual (result , expectedResult ) {
198+ t .Fatalf ("expected %#v, got %#v" , expectedResult , result )
199+ }
200+ }
201+
202+ func TestCreateTableInvalidColumns (t * testing.T ) {
203+ data , mock , err := getMockData ()
204+ assert .NoError (t , err , "an error was not expected when opening a stub database connection" )
205+ defer data .Close ()
206+
207+ rows := sqlmock .NewRows ([]string {"Table" }).
208+ AddRow ("Test_Table" )
209+
210+ mock .ExpectQuery ("^SHOW CREATE TABLE `Test_Table`$" ).WillReturnRows (rows )
211+
212+ table := data .createTable ("Test_Table" )
213+
214+ result , err := table .CreateSQL ()
215+ assert .Error (t , err )
216+ assert .Equal (t , errors .New ("database column information is malformed" ), err )
217+
218+ // we make sure that all expectations were met
219+ assert .NoError (t , mock .ExpectationsWereMet (), "there were unfulfilled expections" )
220+
221+ expectedResult := ""
222+
223+ if ! reflect .DeepEqual (result , expectedResult ) {
224+ t .Fatalf ("expected %#v, got %#v" , expectedResult , result )
225+ }
226+ }
227+
150228func mockTableSelect (mock sqlmock.Sqlmock , name string ) {
151229 cols := sqlmock .NewRows ([]string {"Field" , "Extra" }).
152230 AddRow ("id" , "" ).
0 commit comments