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  }