@@ -430,7 +430,7 @@ func TestLoaderRun(t *testing.T) {
430430func TestJobWait (t * testing.T ) {
431431 status := & bigquery.JobStatus {State : 1 }
432432 err := errors .New ("job error" )
433- job := bqfake .NewJob (status , err )
433+ job := bqfake .NewJob (status , bqfake. QueryConfig {}, err )
434434 got , gotErr := job .Wait (context .Background ())
435435
436436 if ! errors .Is (gotErr , err ) {
@@ -441,3 +441,74 @@ func TestJobWait(t *testing.T) {
441441 t .Errorf ("Job.Wait() got = %v, want = %v" , got , job )
442442 }
443443}
444+
445+ func TestNewQueryRunClient (t * testing.T ) {
446+ tests := []struct {
447+ name string
448+ config bqfake.QueryConfig
449+ wantErr bool
450+ }{
451+ {
452+ name : "success" ,
453+ config : bqfake.QueryConfig {
454+ RowIteratorConfig : bqfake.RowIteratorConfig {
455+ Rows : []map [string ]bigquery.Value {
456+ {"okay" : 1.234 },
457+ },
458+ },
459+ },
460+ },
461+ {
462+ name : "read-error" ,
463+ config : bqfake.QueryConfig {
464+ ReadErr : fmt .Errorf ("Fake read error" ),
465+ },
466+ wantErr : true ,
467+ },
468+ {
469+ name : "iter-error" ,
470+ config : bqfake.QueryConfig {
471+ RowIteratorConfig : bqfake.RowIteratorConfig {
472+ IterErr : fmt .Errorf ("Fake iter error" ),
473+ },
474+ },
475+ wantErr : true ,
476+ },
477+ }
478+ for _ , tt := range tests {
479+ t .Run (tt .name , func (t * testing.T ) {
480+ var err error
481+ c := bqfake .NewQueryReadClient (tt .config )
482+ q := c .Query ("SELECT 'fake-query-string'" )
483+ job , err := q .Run (context .Background ())
484+ if err != nil && ! tt .wantErr {
485+ t .Errorf ("Query().Run() error = %v" , err )
486+ }
487+ it , err := job .Read (context .Background ())
488+ if err != nil && ! tt .wantErr {
489+ t .Errorf ("Query().Read() error = %v" , err )
490+ }
491+ if it == nil {
492+ return
493+ }
494+ var row map [string ]bigquery.Value
495+ i := 0
496+ for err = it .Next (& row ); err == nil ; err = it .Next (& row ) {
497+ if len (tt .config .RowIteratorConfig .Rows ) > 0 &&
498+ ! reflect .DeepEqual (row , tt .config .RowIteratorConfig .Rows [i ]) {
499+ t .Errorf ("UpdateSchemaDescription() schema mismatch; got %#v, want %#v" ,
500+ row , tt .config .RowIteratorConfig .Rows [i ])
501+ }
502+ i ++
503+ }
504+ if err == iterator .Done {
505+ return
506+ }
507+ // err != nil.
508+ if err != tt .config .RowIteratorConfig .IterErr {
509+ t .Errorf ("Next() error; got %v, want %v" , err , tt .config .RowIteratorConfig .IterErr )
510+ return
511+ }
512+ })
513+ }
514+ }
0 commit comments