github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/cmd/preview_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/qri-io/qri/registry"
     8  	"github.com/qri-io/qri/registry/regserver"
     9  )
    10  
    11  func TestPreviewCommand(t *testing.T) {
    12  	run := NewTestRunner(t, "test_peer_preview_command", "qri_test_preview_command")
    13  	defer run.Delete()
    14  
    15  	ctx, cancel := context.WithCancel(context.Background())
    16  
    17  	reg, cleanup, err := regserver.NewTempRegistry(ctx, "temp_registry", "", run.TestCrypto)
    18  	if err != nil {
    19  		t.Fatal(err)
    20  	}
    21  	defer cleanup()
    22  	// TODO(b5): need to defer in this order. the deferred cleanup command blocks on done,
    23  	// which is in turn blocked on cancel. deferring in the other order deadlocks.
    24  	// the smarter way to deal with this is to refactor TempRegistry to use the Done pattern
    25  	defer cancel()
    26  
    27  	// Create a mock registry, point our test runner to its URL
    28  	_, httpServer := regserver.NewMockServerRegistry(*reg)
    29  	run.RepoRoot.GetConfig().Registry.Location = httpServer.URL
    30  	err = run.RepoRoot.WriteConfigFile()
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  
    35  	// Save one commit
    36  	run.MustExec(t, "qri save --body testdata/movies/body_ten.csv --file testdata/movies/meta_override.yaml --file testdata/movies/about_movies.md me/movies_preview_test")
    37  
    38  	// Publish to the registry
    39  	run.MustExec(t, "qri publish test_peer_preview_command/movies_preview_test")
    40  	run.MustExec(t, "qri delete --all me/movies_preview_test")
    41  
    42  	// Search, verify that we get the dataset back
    43  	results, err := reg.Search.Search(registry.SearchParams{
    44  		Q:      "",
    45  		Limit:  2,
    46  		Offset: 0,
    47  	})
    48  	if err != nil {
    49  		t.Fatal(err)
    50  	}
    51  
    52  	if len(results) != 1 {
    53  		t.Errorf("expected: 1 result, got %d results", len(results))
    54  	}
    55  
    56  	result := run.MustExecCombinedOutErr(t, "qri preview test_peer_preview_command/movies_preview_test")
    57  	t.Log(result)
    58  }