github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/lib/load_test.go (about) 1 package lib 2 3 import ( 4 "testing" 5 6 "github.com/qri-io/dataset" 7 "github.com/qri-io/qri/base/dsfs" 8 "github.com/qri-io/qri/dsref" 9 dsrefspec "github.com/qri-io/qri/dsref/spec" 10 "github.com/qri-io/qri/event" 11 ) 12 13 func TestLoadDataset(t *testing.T) { 14 tr := newTestRunner(t) 15 defer tr.Delete() 16 17 fs := tr.Instance.Repo().Filesystem() 18 19 if _, err := (*datasetLoader)(nil).LoadDataset(tr.Ctx, ""); err == nil { 20 t.Errorf("expected loadDataset on a nil instance to fail without panicing") 21 } 22 23 loader := &datasetLoader{inst: nil} 24 if _, err := loader.LoadDataset(tr.Ctx, ""); err == nil { 25 t.Errorf("expected loadDataset on a nil instance to fail without panicing") 26 } 27 28 loader = &datasetLoader{inst: tr.Instance} 29 dsrefspec.AssertLoaderSpec(t, loader, func(ds *dataset.Dataset) (*dsref.Ref, error) { 30 // Allocate an initID for this dataset 31 owner := tr.Instance.repo.Profiles().Owner(tr.Ctx) 32 initID, err := tr.Instance.logbook.WriteDatasetInit(tr.Ctx, owner, ds.Name) 33 if err != nil { 34 return nil, err 35 } 36 // Create the dataset in the provided storage 37 ref := &dsref.Ref{ 38 InitID: initID, 39 Username: owner.Peername, 40 Name: ds.Name, 41 } 42 path, err := dsfs.CreateDataset( 43 tr.Ctx, 44 fs, 45 fs.DefaultWriteFS(), 46 event.NilBus, 47 ds, 48 nil, 49 tr.Instance.repo.Profiles().Owner(tr.Ctx).PrivKey, 50 dsfs.SaveSwitches{}, 51 ) 52 if err != nil { 53 return nil, err 54 } 55 // Save the reference that the loader will use to laod 56 ref.Path = path 57 ds.Path = path 58 ds.ID = initID 59 if err = tr.Instance.logbook.WriteVersionSave(tr.Ctx, owner, ds, nil); err != nil { 60 return nil, err 61 } 62 return ref, nil 63 }) 64 }