github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/base/component/list_dir_test.go (about)

     1  package component
     2  
     3  import (
     4  	"encoding/json"
     5  	"sort"
     6  	"testing"
     7  
     8  	"github.com/google/go-cmp/cmp"
     9  )
    10  
    11  func TestListDirectoryComponents(t *testing.T) {
    12  	components, err := ListDirectoryComponents("./testdata/valid_mappings/some_json_components/")
    13  	if err != nil {
    14  		t.Fatalf(err.Error())
    15  	}
    16  
    17  	names := getComponentNames(components)
    18  	expect := []string{"body", "meta", "readme"}
    19  	if diff := cmp.Diff(expect, names); diff != "" {
    20  		t.Fatalf("component names (-want +got):\n%s", diff)
    21  	}
    22  
    23  	err = ExpandListedComponents(components, nil)
    24  	if err != nil {
    25  		t.Fatalf(err.Error())
    26  	}
    27  
    28  	bodyComponent := components.Base().GetSubcomponent("body").(*BodyComponent)
    29  	bodyComponent.LoadAndFill(nil)
    30  	data, err := json.Marshal(bodyComponent.Value)
    31  	if err != nil {
    32  		t.Fatalf(err.Error())
    33  	}
    34  	expectStr := "[[1,2,3],[4,5,6]]"
    35  	if diff := cmp.Diff(expectStr, string(data)); diff != "" {
    36  		t.Errorf("body component (-want +got):\n%s", diff)
    37  	}
    38  
    39  	metaComponent := components.Base().GetSubcomponent("meta").(*MetaComponent)
    40  	metaComponent.LoadAndFill(nil)
    41  	data, err = json.Marshal(metaComponent.Value)
    42  	if err != nil {
    43  		t.Fatalf(err.Error())
    44  	}
    45  	expectStr = "{\"qri\":\"md:0\",\"title\":\"title\"}"
    46  	if diff := cmp.Diff(expectStr, string(data)); diff != "" {
    47  		t.Errorf("meta component (-want +got):\n%s", diff)
    48  	}
    49  
    50  	readmeComponent := components.Base().GetSubcomponent("readme").(*ReadmeComponent)
    51  	readmeComponent.LoadAndFill(nil)
    52  	expectStr = "# Readme\n\nDescribes this dataset.\n"
    53  	if diff := cmp.Diff(expectStr, readmeComponent.Value.Text); diff != "" {
    54  		t.Errorf("readme component (-want +got):\n%s", diff)
    55  	}
    56  }
    57  
    58  func TestIsKnownFilename(t *testing.T) {
    59  	known := GetKnownFilenames()
    60  
    61  	goodCases := []struct {
    62  		description string
    63  		filename    string
    64  	}{
    65  		{"body csv file", "body.csv"},
    66  		{"meta json file", "meta.json"},
    67  		{"readme file", "readme.md"},
    68  		{"readme file - uppercase", "README.md"},
    69  		{"transform file", "transform.star"},
    70  		{"dataset json", "dataset.json"},
    71  		{"dataset yaml", "dataset.yaml"},
    72  	}
    73  
    74  	badCases := []struct {
    75  		description string
    76  		filename    string
    77  	}{
    78  		{"body bad extension", "body.bin"},
    79  		{"meta bad extension", "meta.jpg"},
    80  		{"unknown filename", "my_content.csv"},
    81  		{"vi temporary", ".body.csv.swp"},
    82  		{"emacs temporary", "#body.csv"},
    83  	}
    84  
    85  	for i, c := range goodCases {
    86  		if !IsKnownFilename(c.filename, known) {
    87  			t.Errorf("error for good case %d: %s", i, c.description)
    88  		}
    89  	}
    90  	for i, c := range badCases {
    91  		if IsKnownFilename(c.filename, known) {
    92  			t.Errorf("error for bad case %d: %s", i, c.description)
    93  		}
    94  	}
    95  }
    96  
    97  func getComponentNames(comp Component) []string {
    98  	names := make([]string, 0)
    99  	for _, name := range AllSubcomponentNames() {
   100  		sub := comp.Base().GetSubcomponent(name)
   101  		if sub != nil {
   102  			names = append(names, name)
   103  		}
   104  	}
   105  	sort.Strings(names)
   106  	return names
   107  }
   108  
   109  func TestIsKnownFilenameAllowNil(t *testing.T) {
   110  	goodFilename := "structure.json"
   111  	badFilename := "structure.format"
   112  	if !IsKnownFilename(goodFilename, nil) {
   113  		t.Errorf("expected goodFilename to be a known filename")
   114  	}
   115  	if IsKnownFilename(badFilename, nil) {
   116  		t.Errorf("expected badFilename to not be a known filename")
   117  	}
   118  }