github.com/GGP1/kure@v0.8.4/commands/card/ls/ls_test.go (about) 1 package ls 2 3 import ( 4 "testing" 5 6 cmdutil "github.com/GGP1/kure/commands" 7 "github.com/GGP1/kure/db/card" 8 "github.com/GGP1/kure/pb" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestLs(t *testing.T) { 14 db := cmdutil.SetContext(t) 15 16 err := card.Create(db, &pb.Card{ 17 Name: "test", 18 Number: "1500135", 19 }) 20 assert.NoError(t, err, "Failed creating the card") 21 22 cases := []struct { 23 desc string 24 name string 25 filter string 26 hide string 27 qr string 28 }{ 29 { 30 desc: "List one", 31 name: "test", 32 }, 33 { 34 desc: "List one and show qr", 35 name: "test", 36 qr: "true", 37 }, 38 { 39 desc: "Filter by name", 40 name: "te*", 41 filter: "true", 42 }, 43 { 44 desc: "List all", 45 name: "", 46 }, 47 { 48 desc: "List one and hide", 49 name: "test", 50 hide: "true", 51 }, 52 } 53 54 cmd := NewCmd(db) 55 f := cmd.Flags() 56 57 for _, tc := range cases { 58 t.Run(tc.desc, func(t *testing.T) { 59 cmd.SetArgs([]string{tc.name}) 60 f.Set("filter", tc.filter) 61 f.Set("hide", tc.hide) 62 f.Set("qr", tc.qr) 63 64 err := cmd.Execute() 65 assert.NoError(t, err) 66 }) 67 } 68 } 69 70 func TestLsErrors(t *testing.T) { 71 db := cmdutil.SetContext(t) 72 73 err := card.Create(db, &pb.Card{Name: "test"}) 74 assert.NoError(t, err, "Failed creating the card") 75 76 cases := []struct { 77 desc string 78 name string 79 filter string 80 qr string 81 }{ 82 { 83 desc: "Card does not exist", 84 name: "non-existent", 85 filter: "false", 86 }, 87 { 88 desc: "No cards found", 89 name: "non-existent", 90 filter: "true", 91 }, 92 { 93 desc: "Filter syntax error", 94 name: "[error", 95 filter: "true", 96 }, 97 { 98 desc: "No data to encode", 99 name: "test", 100 qr: "true", 101 }, 102 } 103 104 cmd := NewCmd(db) 105 106 for _, tc := range cases { 107 t.Run(tc.desc, func(t *testing.T) { 108 cmd.SetArgs([]string{tc.name}) 109 f := cmd.Flags() 110 f.Set("filter", tc.filter) 111 f.Set("qr", tc.qr) 112 113 err := cmd.Execute() 114 assert.Error(t, err) 115 }) 116 } 117 } 118 119 func TestPostRun(t *testing.T) { 120 NewCmd(nil).PostRun(nil, nil) 121 }