github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/base/dsfs/dstest/dstest_test.go (about)

     1  package dstest
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/qri-io/dataset"
    10  )
    11  
    12  func TestDatasetChecksum(t *testing.T) {
    13  	expect := "085e607818aae2920e0e4b57c321c3b58e17b85d"
    14  	sum := DatasetChecksum(&dataset.Dataset{})
    15  	if sum != expect {
    16  		t.Errorf("empty pod hash mismatch. expected: %s, got: %s", expect, sum)
    17  	}
    18  }
    19  
    20  func TestLoadTestCases(t *testing.T) {
    21  	tcs, err := LoadTestCases("testdata")
    22  	if err != nil {
    23  		t.Error(err)
    24  	}
    25  	if len(tcs) == 0 {
    26  		t.Errorf("expected at least one test case to load")
    27  	}
    28  }
    29  
    30  func TestBodyFilepath(t *testing.T) {
    31  	fp, err := BodyFilepath("testdata/complete")
    32  	if err != nil {
    33  		t.Error(err.Error())
    34  		return
    35  	}
    36  	if fp != "testdata/complete/body.csv" {
    37  		t.Errorf("%s != %s", "testdata/complete/body.csv", fp)
    38  	}
    39  }
    40  
    41  func TestReadInputTransformScript(t *testing.T) {
    42  	if _, _, err := ReadInputTransformScript("bad_dir"); err != os.ErrNotExist {
    43  		t.Error("expected os.ErrNotExist on bad tf script read")
    44  	}
    45  }
    46  
    47  func TestNewTestCaseFromDir(t *testing.T) {
    48  	var err error
    49  	if _, err = NewTestCaseFromDir("testdata"); err == nil {
    50  		t.Errorf("expected error")
    51  		return
    52  	}
    53  
    54  	tc, err := NewTestCaseFromDir("testdata/complete")
    55  	if err != nil {
    56  		t.Errorf("error reading test dir: %s", err.Error())
    57  		return
    58  	}
    59  
    60  	name := "complete"
    61  	if tc.Name != name {
    62  		t.Errorf("expected name to equal: %s. got: %s", name, tc.Name)
    63  	}
    64  
    65  	fn := "body.csv"
    66  	if tc.BodyFilename != fn {
    67  		t.Errorf("expected BodyFilename to equal: %s. got: %s", fn, tc.BodyFilename)
    68  	}
    69  
    70  	data := []byte(`city,pop,avg_age,in_usa
    71  toronto,40000000,55.5,false
    72  new york,8500000,44.4,true
    73  chicago,300000,44.4,true
    74  chatham,35000,65.25,true
    75  raleigh,250000,50.65,true
    76  `)
    77  	if !bytes.Equal(tc.Body, data) {
    78  		t.Errorf("data mismatch")
    79  	}
    80  
    81  	mf := tc.BodyFile()
    82  	if mf.FileName() != tc.BodyFilename {
    83  		t.Errorf("filename mismatch: %s != %s", mf.FileName(), tc.BodyFilename)
    84  	}
    85  
    86  	if ts, ok := tc.TransformScriptFile(); !ok {
    87  		t.Errorf("expected tranform script to load")
    88  	} else {
    89  		if ts.FileName() != "transform.star" {
    90  			t.Errorf("expected TransformScript filename to be transform.star")
    91  		}
    92  	}
    93  	tc.TransformScript = nil
    94  	if _, ok := tc.TransformScriptFile(); ok {
    95  		t.Error("shouldn't generate TransformScript File if bytes are nil")
    96  	}
    97  
    98  	if vz, ok := tc.VizScriptFile(); !ok {
    99  		t.Errorf("expected viz script to load")
   100  	} else {
   101  		if vz.FileName() != "template.html" {
   102  			t.Errorf("expected VizScript filename to be template.html")
   103  		}
   104  	}
   105  	tc.VizScript = nil
   106  	if _, ok := tc.VizScriptFile(); ok {
   107  		t.Error("shouldn't generate VizScript File if bytes are nil")
   108  	}
   109  
   110  	mfdata, err := ioutil.ReadAll(mf)
   111  	if err != nil {
   112  		t.Errorf("error reading file: %s", err.Error())
   113  	}
   114  
   115  	if !bytes.Equal(mfdata, data) {
   116  		t.Errorf("memfile data mismatch")
   117  	}
   118  
   119  	rendered, err := tc.RenderedFile()
   120  	if err != nil {
   121  		t.Errorf("reading %s: %s", RenderedFilename, err)
   122  	}
   123  	if rendered == nil {
   124  		t.Error("expected rendered to not equal nil")
   125  	}
   126  }