resource_test.go (2269B)
1 package resource 2 3 import ( 4 "context" 5 "errors" 6 "testing" 7 ) 8 9 func codeGet(ctx context.Context, nodeSym string) ([]byte, error) { 10 switch nodeSym { 11 case "bar": 12 return []byte("deafbeef"), nil 13 } 14 return nil, errors.New("unknown code") 15 } 16 17 func menuGet(ctx context.Context, menuSym string) (string, error) { 18 switch menuSym { 19 case "baz": 20 return "xyzzy", nil 21 } 22 return "", errors.New("unknown code") 23 24 } 25 26 func templateGet(ctx context.Context, nodeSym string) (string, error) { 27 switch nodeSym { 28 case "tinkywinky": 29 return "inky pinky {{.foo}} blinky clyde", nil 30 } 31 return "", errors.New("unknown code") 32 } 33 34 func entryFunc(ctx context.Context, nodeSym string, input []byte) (Result, error) { 35 return Result{ 36 Content: "42", 37 }, nil 38 } 39 40 func funcGet(ctx context.Context, loadSym string) (EntryFunc, error) { 41 switch loadSym { 42 case "dipsy": 43 return entryFunc, nil 44 } 45 return nil, errors.New("unknown code") 46 } 47 48 func TestMenuResourceSetters(t *testing.T) { 49 var err error 50 ctx := context.Background() 51 rs := NewMenuResource() 52 _, err = rs.GetCode(ctx, "foo") 53 if err == nil { 54 errors.New("expected error") 55 } 56 57 rs.WithCodeGetter(codeGet) 58 _, err = rs.GetCode(ctx, "foo") 59 if err == nil { 60 errors.New("expected error") 61 } 62 63 rs.WithCodeGetter(codeGet) 64 _, err = rs.GetCode(ctx, "bar") 65 if err != nil { 66 t.Fatal(err) 67 } 68 69 _, err = rs.GetMenu(ctx, "bar") 70 if err == nil { 71 errors.New("expected error") 72 } 73 74 rs.WithMenuGetter(menuGet) 75 _, err = rs.GetMenu(ctx, "bar") 76 if err == nil { 77 errors.New("expected error") 78 } 79 80 rs.WithMenuGetter(menuGet) 81 _, err = rs.GetMenu(ctx, "baz") 82 if err != nil { 83 t.Fatal(err) 84 } 85 86 _, err = rs.GetTemplate(ctx, "baz") 87 if err == nil { 88 errors.New("expected error") 89 } 90 91 rs.WithTemplateGetter(templateGet) 92 _, err = rs.GetTemplate(ctx, "baz") 93 if err == nil { 94 errors.New("expected error") 95 } 96 97 rs.WithTemplateGetter(templateGet) 98 _, err = rs.GetTemplate(ctx, "tinkywinky") 99 if err != nil { 100 t.Fatal(err) 101 } 102 103 _, err = rs.FuncFor(ctx, "tinkywinky") 104 if err == nil { 105 errors.New("expected error") 106 } 107 108 rs.WithEntryFuncGetter(funcGet) 109 _, err = rs.FuncFor(ctx, "tinkywinky") 110 if err == nil { 111 errors.New("expected error") 112 } 113 114 rs.WithEntryFuncGetter(funcGet) 115 _, err = rs.FuncFor(ctx, "dipsy") 116 if err != nil { 117 t.Fatal(err) 118 } 119 }