@@ -2,17 +2,19 @@ package bqfake_test
22
33import (
44 "context"
5+ "errors"
56 "fmt"
67 "log"
78 "net/http"
89 "reflect"
910 "testing"
1011 "time"
1112
12- "google.golang.org/api/option"
1313 "cloud.google.com/go/bigquery"
14+ "github.com/google/go-cmp/cmp"
1415 "github.com/googleapis/google-cloud-go-testing/bigquery/bqiface"
1516 "google.golang.org/api/iterator"
17+ "google.golang.org/api/option"
1618
1719 "github.com/m-lab/go/cloudtest/bqfake"
1820)
@@ -55,7 +57,7 @@ func TestNewClientErr(t *testing.T) {
5557 ctx := context .Background ()
5658 // These options are incompatible with one another and generate an error from bigquery.NewClient.
5759 opts := []option.ClientOption {option .WithAPIKey ("asdf" ), option .WithoutAuthentication ()}
58- c , err := bqfake .NewClient (ctx , "fakeProject" , opts ... )
60+ c , err := bqfake .NewClient (ctx , "fakeProject" , map [ string ] * bqfake. Dataset {}, opts ... )
5961 if err == nil {
6062 c .Close ()
6163 t .Fatal ("Should return constructing client error" )
@@ -74,9 +76,82 @@ func TestBadDataset(t *testing.T) {
7476 ds .Table ("Foobar" )
7577}
7678
79+ func TestDatasetMetadata (t * testing.T ) {
80+ tests := []struct {
81+ name string
82+ md * bqiface.DatasetMetadata
83+ want * bqiface.DatasetMetadata
84+ wantErr bool
85+ }{
86+ {
87+ name : "success" ,
88+ md : & bqiface.DatasetMetadata {
89+ DatasetMetadata : bigquery.DatasetMetadata {
90+ Name : "fakeMetadata" ,
91+ },
92+ },
93+ want : & bqiface.DatasetMetadata {
94+ DatasetMetadata : bigquery.DatasetMetadata {
95+ Name : "fakeMetadata" ,
96+ },
97+ },
98+ wantErr : false ,
99+ },
100+ {
101+ name : "error" ,
102+ md : nil ,
103+ wantErr : true ,
104+ },
105+ }
106+
107+ for _ , tt := range tests {
108+ t .Run (tt .name , func (t * testing.T ) {
109+ ds := bqfake .NewDataset (nil , tt .md , nil )
110+ got , err := ds .Metadata (context .Background ())
111+ if (err != nil ) != tt .wantErr {
112+ t .Errorf ("Dataset.Metadata() error = %v, wantErr %v" , err , tt .wantErr )
113+ return
114+ }
115+
116+ if ! tt .wantErr && ! cmp .Equal (got , tt .want ) {
117+ t .Errorf ("Dataset.Metadata() got = %v, want = %v" , got , tt .want )
118+ }
119+ })
120+ }
121+ }
122+
123+ func TestDatasetCreate (t * testing.T ) {
124+ tests := []struct {
125+ name string
126+ err error
127+ wantErr bool
128+ }{
129+ {
130+ name : "success" ,
131+ err : nil ,
132+ wantErr : false ,
133+ },
134+ {
135+ name : "error" ,
136+ err : errors .New ("fakeError" ),
137+ wantErr : true ,
138+ },
139+ }
140+
141+ for _ , tt := range tests {
142+ t .Run (tt .name , func (t * testing.T ) {
143+ ds := bqfake .NewDataset (nil , nil , tt .err )
144+ got := ds .Create (context .Background (), & bqiface.DatasetMetadata {})
145+ if (got != nil ) != tt .wantErr {
146+ t .Errorf ("Dataset.Create() error = %v, wantErr %v" , got , tt .wantErr )
147+ }
148+ })
149+ }
150+ }
151+
77152func TestUninitializedTable (t * testing.T ) {
78153 ctx := context .Background ()
79- c , err := bqfake .NewClient (ctx , "fakeProject" )
154+ c , err := bqfake .NewClient (ctx , "fakeProject" , map [ string ] * bqfake. Dataset {} )
80155 if err != nil {
81156 t .Fatal (err )
82157 }
@@ -113,7 +188,7 @@ func TestUninitializedTable(t *testing.T) {
113188
114189func TestTable (t * testing.T ) {
115190 ctx := context .Background ()
116- c , err := bqfake .NewClient (ctx , "fakeProject" )
191+ c , err := bqfake .NewClient (ctx , "fakeProject" , map [ string ] * bqfake. Dataset {} )
117192 if err != nil {
118193 t .Fatal (err )
119194 }
@@ -149,7 +224,7 @@ func createTable(ctx context.Context, ds bqiface.Dataset, name string) error {
149224
150225func TestTableMetadata (t * testing.T ) {
151226 ctx := context .Background ()
152- c , err := bqfake .NewClient (ctx , "fakeProject" )
227+ c , err := bqfake .NewClient (ctx , "fakeProject" , map [ string ] * bqfake. Dataset {} )
153228 if err != nil {
154229 t .Fatal (err )
155230 }
@@ -179,9 +254,31 @@ func TestTableMetadata(t *testing.T) {
179254 }
180255}
181256
257+ func TestTableUpdate (t * testing.T ) {
258+ want := & bigquery.TableMetadata {
259+ Schema : []* bigquery.FieldSchema {
260+ {
261+ Name : "fakeField" ,
262+ },
263+ },
264+ }
265+ tbl := bqfake .NewTable (bqfake.Dataset {}, "" , & bigquery.TableMetadata {}, nil )
266+ got , err := tbl .Update (context .Background (), bigquery.TableMetadataToUpdate {
267+ Schema : want .Schema ,
268+ }, "" )
269+
270+ if err != nil {
271+ t .Errorf ("Table.Update() error = %v, wantErr = nil" , err )
272+ }
273+
274+ if ! cmp .Equal (got , want ) {
275+ t .Errorf ("Table.Update() got = %v, want = %v" , got , want )
276+ }
277+ }
278+
182279func TestQuery (t * testing.T ) {
183280 ctx := context .Background ()
184- c , err := bqfake .NewClient (ctx , "fakeProject" )
281+ c , err := bqfake .NewClient (ctx , "fakeProject" , map [ string ] * bqfake. Dataset {} )
185282 if err != nil {
186283 t .Fatal (err )
187284 }
0 commit comments