(t *testing.T)
| 240 | } |
| 241 | |
| 242 | func TestExecInsert(t *testing.T) { |
| 243 | |
| 244 | // By "Loading" table we force it to exist in this non DDL mock store |
| 245 | mockcsv.LoadTable(mockcsv.SchemaName, "user_event", "id,user_id,event,date\n1,abcabcabc,signup,\"2012-12-24T17:29:39.738Z\"") |
| 246 | |
| 247 | //u.Infof("%p schema", mockSchema) |
| 248 | td.TestContext("select * from user_event") |
| 249 | |
| 250 | db, err := schema.OpenConn("mockcsv", "user_event") |
| 251 | assert.Equal(t, nil, err) |
| 252 | dbTable, ok := db.(*mockcsv.Table) |
| 253 | assert.True(t, ok, "Should be type StaticDataSource but was T %T", db) |
| 254 | assert.Equal(t, 1, dbTable.Length(), "Should have 1 row but was %v", dbTable.Length()) |
| 255 | |
| 256 | sqlText := ` |
| 257 | INSERT into user_event (id, user_id, event, date) |
| 258 | VALUES |
| 259 | (uuid(), "9Ip1aKbeZe2njCDM", "logon", now()) |
| 260 | ` |
| 261 | ctx := td.TestContext(sqlText) |
| 262 | job, err := exec.BuildSqlJob(ctx) |
| 263 | assert.Equal(t, nil, err) |
| 264 | |
| 265 | msgs := make([]schema.Message, 0) |
| 266 | resultWriter := exec.NewResultBuffer(ctx, &msgs) |
| 267 | job.RootTask.Add(resultWriter) |
| 268 | |
| 269 | err = job.Setup() |
| 270 | assert.Equal(t, nil, err) |
| 271 | err = job.Run() |
| 272 | assert.Equal(t, nil, err) |
| 273 | db2, err := schema.OpenConn("mockcsv", "user_event") |
| 274 | assert.Equal(t, nil, err) |
| 275 | dbTable2, ok := db2.(*mockcsv.Table) |
| 276 | assert.True(t, ok, "Should be type StaticDataSource but was T %T", db2) |
| 277 | //u.Infof("db: %#v", dbTable2) |
| 278 | assert.True(t, dbTable2.Length() == 2, "Should have inserted 2 but was %v", dbTable2.Length()) |
| 279 | |
| 280 | // Now lets query it, we are going to use QLBridge Driver |
| 281 | sqlText = ` |
| 282 | select id, user_id, event, date |
| 283 | FROM user_event |
| 284 | WHERE user_id = "9Ip1aKbeZe2njCDM" |
| 285 | ` |
| 286 | sqlDb, err := sql.Open("qlbridge", "mockcsv") |
| 287 | assert.Equal(t, nil, err) |
| 288 | assert.True(t, sqlDb != nil, "has conn: %v", sqlDb) |
| 289 | defer func() { sqlDb.Close() }() |
| 290 | |
| 291 | rows, err := sqlDb.Query(sqlText) |
| 292 | assert.Equal(t, nil, err) |
| 293 | defer rows.Close() |
| 294 | assert.True(t, rows != nil, "has results: %v", rows) |
| 295 | cols, err := rows.Columns() |
| 296 | assert.Equal(t, nil, err) |
| 297 | assert.True(t, len(cols) == 4, "4 cols: %v", cols) |
| 298 | events := make([]*UserEvent, 0) |
| 299 | for rows.Next() { |
nothing calls this directly
no test coverage detected