github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/cmd/stringers_test.go (about) 1 package cmd 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/qri-io/dataset" 8 "github.com/qri-io/qri/config" 9 reporef "github.com/qri-io/qri/repo/ref" 10 ) 11 12 func TestPeerStringer(t *testing.T) { 13 setNoColor(false) 14 cases := []struct { 15 description string 16 peer *config.ProfilePod 17 expect string 18 }{ 19 // Online & multiple NetworkAddrs 20 {"Peer Stringer - Online & multiple addresses", 21 &config.ProfilePod{ 22 Peername: "cassie", 23 Online: true, 24 ID: "Qm...yay", 25 NetworkAddrs: []string{"address_1", "address_2", "address_3"}, 26 }, "\u001b[32;1mcassie\u001b[0m | \u001b[33monline\u001b[0m\nProfile ID: Qm...yay\nAddresses: address_1\n address_2\n address_3\n\n"}, 27 // online & no NetworkAddrs 28 {"Peer Stringer - Online & no addresses", 29 &config.ProfilePod{ 30 Peername: "justin", 31 Online: true, 32 ID: "Qm...woo", 33 }, "\u001b[32;1mjustin\u001b[0m | \u001b[33monline\u001b[0m\nProfile ID: Qm...woo\n\n"}, 34 // Not online & one NetworkAddrs 35 {"Peer Stringer - Not Online & one address", 36 &config.ProfilePod{ 37 Peername: "brandon", 38 Online: true, 39 ID: "Qm...hi", 40 NetworkAddrs: []string{"address_1"}, 41 }, "\u001b[32;1mbrandon\u001b[0m | \u001b[33monline\u001b[0m\nProfile ID: Qm...hi\nAddress: address_1\n\n"}, 42 // Not Online 43 {"Peer Stringer - Not Online", 44 &config.ProfilePod{ 45 Peername: "ricky", 46 Online: false, 47 ID: "Qm...wee", 48 }, "\u001b[32;1mricky\u001b[0m\nProfile ID: Qm...wee\n\n"}, 49 } 50 for _, c := range cases { 51 peerStr := peerStringer(*c.peer).String() 52 53 if c.expect != peerStr { 54 t.Errorf("case '%s', expected: '%s', got'%s'", c.description, c.expect, peerStr) 55 } 56 } 57 58 } 59 60 func TestRefStringer(t *testing.T) { 61 setNoColor(false) 62 cases := []struct { 63 description string 64 ref *reporef.DatasetRef 65 expect string 66 }{ 67 {"RefStringer - all fields, singular", 68 &reporef.DatasetRef{ 69 Name: "ds_name", 70 Peername: "peer", 71 Path: "/network/hash", 72 Dataset: &dataset.Dataset{ 73 Structure: &dataset.Structure{ 74 Length: 1, 75 Entries: 1, 76 ErrCount: 1, 77 }, 78 NumVersions: 1, 79 Meta: &dataset.Meta{ 80 Title: "Dataset Title", 81 }, 82 }, 83 }, "\u001b[32;1mpeer/ds_name\u001b[0m\nDataset Title\n\u001b[2m/network/hash\u001b[0m\n1 B, 1 entry, 1 error, 1 version\n\n", 84 }, 85 {"RefStringer - all fields, plural", 86 &reporef.DatasetRef{ 87 Name: "ds_name", 88 Peername: "peer", 89 Path: "/network/hash", 90 Dataset: &dataset.Dataset{ 91 Structure: &dataset.Structure{ 92 Length: 10, 93 Entries: 10, 94 ErrCount: 10, 95 }, 96 NumVersions: 10, 97 Meta: &dataset.Meta{ 98 Title: "Dataset Title", 99 }, 100 }, 101 }, "\u001b[32;1mpeer/ds_name\u001b[0m\nDataset Title\n\u001b[2m/network/hash\u001b[0m\n10 B, 10 entries, 10 errors, 10 versions\n\n", 102 }, 103 {"RefStringer - only peername & name", 104 &reporef.DatasetRef{ 105 Peername: "peer", 106 Name: "ds_name", 107 }, "\u001b[32;1mpeer/ds_name\u001b[0m\n\n", 108 }, 109 } 110 for _, c := range cases { 111 refStr := refStringer(*c.ref).String() 112 if c.expect != refStr { 113 t.Errorf("case '%s', expected: '%s', got'%s'", c.description, c.expect, refStr) 114 } 115 } 116 } 117 118 func TestLogStringer(t *testing.T) { 119 setNoColor(false) 120 time := time.Date(2001, 01, 01, 01, 01, 01, 01, time.UTC) 121 cases := []struct { 122 description string 123 log *reporef.DatasetRef 124 expect string 125 }{ 126 {"LogStringer - all fields", 127 &reporef.DatasetRef{ 128 Peername: "peer", 129 Path: "/network/hash", 130 Dataset: &dataset.Dataset{ 131 Commit: &dataset.Commit{ 132 Timestamp: time, 133 Title: "commit title", 134 Message: "commit message", 135 }, 136 }, 137 }, "\u001b[32mpath: /network/hash\u001b[0m\nAuthor: peer\nDate: Jan 1 01:01:01\n\n commit title\n commit message\n\n", 138 }, 139 {"LogStringer - no message", 140 &reporef.DatasetRef{ 141 Peername: "peer", 142 Path: "/network/hash", 143 Dataset: &dataset.Dataset{ 144 Commit: &dataset.Commit{ 145 Timestamp: time, 146 Title: "commit title", 147 }, 148 }, 149 }, "\u001b[32mpath: /network/hash\u001b[0m\nAuthor: peer\nDate: Jan 1 01:01:01\n\n commit title\n\n", 150 }, 151 } 152 for _, c := range cases { 153 logStr := logStringer(*c.log).String() 154 if c.expect != logStr { 155 t.Errorf("case '%s', expected: '%s', got'%s'", c.description, c.expect, logStr) 156 } 157 } 158 }