@@ -12,6 +12,7 @@ import (
1212 "testing"
1313 "time"
1414
15+ "github.com/google/go-cmp/cmp"
1516 "github.com/qri-io/dataset"
1617 "github.com/qri-io/dataset/dsio"
1718 "github.com/qri-io/dataset/dstest"
@@ -20,6 +21,7 @@ import (
2021 "github.com/qri-io/qfs"
2122 "github.com/qri-io/qri/base/toqtype"
2223 testPeers "github.com/qri-io/qri/config/test"
24+ "github.com/qri-io/qri/event"
2325)
2426
2527func TestLoadDataset (t * testing.T ) {
@@ -47,7 +49,7 @@ func TestLoadDataset(t *testing.T) {
4749 info := testPeers .GetTestPeerInfo (10 )
4850 pk := info .PrivKey
4951
50- apath , err := WriteDataset (ctx , & sync.Mutex {}, fs , ds , pk , SaveSwitches {})
52+ apath , err := WriteDataset (ctx , & sync.Mutex {}, fs , event . NilBus , ds , pk , SaveSwitches {})
5153 if err != nil {
5254 t .Errorf (err .Error ())
5355 return
@@ -156,7 +158,7 @@ func TestCreateDataset(t *testing.T) {
156158 t .Fatalf ("creating test case: %s" , err )
157159 }
158160
159- _ , err = CreateDataset (ctx , fs , fs , tc .Input , c .prev , privKey , SaveSwitches {ShouldRender : true })
161+ _ , err = CreateDataset (ctx , fs , fs , event . NilBus , tc .Input , c .prev , privKey , SaveSwitches {ShouldRender : true })
160162 if err == nil {
161163 t .Fatalf ("CreateDataset expected error. got nil" )
162164 }
@@ -189,7 +191,7 @@ func TestCreateDataset(t *testing.T) {
189191 t .Fatalf ("creating test case: %s" , err )
190192 }
191193
192- path , err := CreateDataset (ctx , fs , fs , tc .Input , c .prev , privKey , SaveSwitches {ShouldRender : true })
194+ path , err := CreateDataset (ctx , fs , fs , event . NilBus , tc .Input , c .prev , privKey , SaveSwitches {ShouldRender : true })
193195 if err != nil {
194196 t .Fatalf ("CreateDataset: %s" , err )
195197 }
@@ -218,7 +220,7 @@ func TestCreateDataset(t *testing.T) {
218220 }
219221
220222 t .Run ("no_priv_key" , func (t * testing.T ) {
221- _ , err := CreateDataset (ctx , fs , fs , nil , nil , nil , SaveSwitches {ShouldRender : true })
223+ _ , err := CreateDataset (ctx , fs , fs , event . NilBus , nil , nil , nil , SaveSwitches {ShouldRender : true })
222224 if err == nil {
223225 t .Fatal ("expected call without prvate key to error" )
224226 }
@@ -242,7 +244,7 @@ func TestCreateDataset(t *testing.T) {
242244 t .Errorf ("case nil body and previous body files, error reading data file: %s" , err .Error ())
243245 }
244246 expectedErr := "bodyfile or previous bodyfile needed"
245- _ , err = CreateDataset (ctx , fs , fs , ds , nil , privKey , SaveSwitches {ShouldRender : true })
247+ _ , err = CreateDataset (ctx , fs , fs , event . NilBus , ds , nil , privKey , SaveSwitches {ShouldRender : true })
246248 if err .Error () != expectedErr {
247249 t .Errorf ("case nil body and previous body files, error mismatch: expected '%s', got '%s'" , expectedErr , err .Error ())
248250 }
@@ -272,7 +274,7 @@ func TestCreateDataset(t *testing.T) {
272274 }
273275 ds .SetBodyFile (qfs .NewMemfileBytes ("body.csv" , bodyBytes ))
274276
275- path , err := CreateDataset (ctx , fs , fs , ds , dsPrev , privKey , SaveSwitches {ShouldRender : true })
277+ path , err := CreateDataset (ctx , fs , fs , event . NilBus , ds , dsPrev , privKey , SaveSwitches {ShouldRender : true })
276278 if err != nil && err .Error () != expectedErr {
277279 t .Fatalf ("mismatch: expected %q, got %q" , expectedErr , err .Error ())
278280 } else if err == nil {
@@ -312,7 +314,7 @@ func TestDatasetSaveCustomTimestamp(t *testing.T) {
312314 }
313315 ds .SetBodyFile (qfs .NewMemfileBytes ("/body.json" , []byte (`[]` )))
314316
315- path , err := CreateDataset (ctx , fs , fs , ds , nil , privKey , SaveSwitches {})
317+ path , err := CreateDataset (ctx , fs , fs , event . NilBus , ds , nil , privKey , SaveSwitches {})
316318 if err != nil {
317319 t .Fatal (err )
318320 }
@@ -324,6 +326,47 @@ func TestDatasetSaveCustomTimestamp(t *testing.T) {
324326 }
325327}
326328
329+ func TestDatasetSaveEvents (t * testing.T ) {
330+ ctx , cancel := context .WithCancel (context .Background ())
331+ defer cancel ()
332+
333+ fs := qfs .NewMemFS ()
334+ privKey := testPeers .GetTestPeerInfo (10 ).PrivKey
335+ bus := event .NewBus (ctx )
336+
337+ fired := map [event.Type ]int {}
338+ bus .Subscribe (func (ctx context.Context , t event.Type , payload interface {}) error {
339+ fired [t ]++
340+ return nil
341+ },
342+ event .ETDatasetSaveStarted ,
343+ event .ETDatasetSaveProgress ,
344+ event .ETDatasetSaveCompleted ,
345+ )
346+
347+ ds := & dataset.Dataset {
348+ Commit : & dataset.Commit {
349+ Timestamp : time .Date (2100 , 1 , 2 , 3 , 4 , 5 , 6 , time .Local ),
350+ },
351+ Structure : & dataset.Structure {Format : "json" , Schema : dataset .BaseSchemaArray },
352+ }
353+ ds .SetBodyFile (qfs .NewMemfileBytes ("/body.json" , []byte (`[]` )))
354+
355+ if _ , err := CreateDataset (ctx , fs , fs , bus , ds , nil , privKey , SaveSwitches {}); err != nil {
356+ t .Fatal (err )
357+ }
358+
359+ expect := map [event.Type ]int {
360+ event .ETDatasetSaveStarted : 1 ,
361+ event .ETDatasetSaveProgress : 2 ,
362+ event .ETDatasetSaveCompleted : 1 ,
363+ }
364+
365+ if diff := cmp .Diff (expect , fired ); diff != "" {
366+ t .Errorf ("fired event count mismatch. (-want +got):%s\n " , diff )
367+ }
368+ }
369+
327370// BaseTabularSchema is the base schema for tabular data
328371// NOTE: Do not use if possible, prefer github.com/qri-io/dataset/tabular
329372// TODO(dustmop): Possibly move this to tabular package
@@ -374,7 +417,7 @@ func TestCreateDatasetBodyTooLarge(t *testing.T) {
374417 }
375418 nextDs .SetBodyFile (qfs .NewMemfileBytes (testBodyPath , testBodyBytes ))
376419
377- path , err := CreateDataset (ctx , fs , fs , & nextDs , & prevDs , privKey , SaveSwitches {ShouldRender : true })
420+ path , err := CreateDataset (ctx , fs , fs , event . NilBus , & nextDs , & prevDs , privKey , SaveSwitches {ShouldRender : true })
378421 if err != nil {
379422 t .Fatalf ("CreateDataset: %s" , err )
380423 }
@@ -403,7 +446,7 @@ func TestWriteDataset(t *testing.T) {
403446 info := testPeers .GetTestPeerInfo (10 )
404447 pk := info .PrivKey
405448
406- if _ , err := WriteDataset (ctx , & sync.Mutex {}, fs , & dataset.Dataset {}, pk , SaveSwitches {Pin : true }); err == nil || err .Error () != "cannot save empty dataset" {
449+ if _ , err := WriteDataset (ctx , & sync.Mutex {}, fs , event . NilBus , & dataset.Dataset {}, pk , SaveSwitches {Pin : true }); err == nil || err .Error () != "cannot save empty dataset" {
407450 t .Errorf ("didn't reject empty dataset: %s" , err )
408451 }
409452
@@ -426,7 +469,7 @@ func TestWriteDataset(t *testing.T) {
426469
427470 ds := tc .Input
428471
429- got , err := WriteDataset (ctx , & sync.Mutex {}, fs , ds , pk , SaveSwitches {Pin : true })
472+ got , err := WriteDataset (ctx , & sync.Mutex {}, fs , event . NilBus , ds , pk , SaveSwitches {Pin : true })
430473 if ! (err == nil && c .err == "" || err != nil && err .Error () == c .err ) {
431474 t .Errorf ("case %d error mismatch. expected: '%s', got: '%s'" , i , c .err , err )
432475 continue
@@ -1011,7 +1054,7 @@ func BenchmarkCreateDatasetCSV(b *testing.B) {
10111054 _ , dataset := GenerateDataset (b , sampleSize , "csv" )
10121055
10131056 b .StartTimer ()
1014- _ , err := CreateDataset (ctx , fs , fs , dataset , nil , privKey , SaveSwitches {ShouldRender : true })
1057+ _ , err := CreateDataset (ctx , fs , fs , event . NilBus , dataset , nil , privKey , SaveSwitches {ShouldRender : true })
10151058 if err != nil {
10161059 b .Errorf ("error creating dataset: %s" , err .Error ())
10171060 }
0 commit comments