github.com/fortexxx/gqlgen@v0.10.3-0.20191216030626-ca5ea8b21ead/codegen/templates/templates_test.go (about) 1 package templates 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestToGo(t *testing.T) { 12 require.Equal(t, "ToCamel", ToGo("TO_CAMEL")) 13 require.Equal(t, "ToCamel", ToGo("to_camel")) 14 require.Equal(t, "ToCamel", ToGo("toCamel")) 15 require.Equal(t, "ToCamel", ToGo("ToCamel")) 16 require.Equal(t, "ToCamel", ToGo("to-camel")) 17 18 require.Equal(t, "RelatedURLs", ToGo("RelatedURLs")) 19 require.Equal(t, "ImageIDs", ToGo("ImageIDs")) 20 require.Equal(t, "FooID", ToGo("FooID")) 21 require.Equal(t, "IDFoo", ToGo("IDFoo")) 22 require.Equal(t, "FooASCII", ToGo("FooASCII")) 23 require.Equal(t, "ASCIIFoo", ToGo("ASCIIFoo")) 24 require.Equal(t, "FooUTF8", ToGo("FooUTF8")) 25 require.Equal(t, "UTF8Foo", ToGo("UTF8Foo")) 26 require.Equal(t, "JSONEncoding", ToGo("JSONEncoding")) 27 28 require.Equal(t, "A", ToGo("A")) 29 require.Equal(t, "ID", ToGo("ID")) 30 require.Equal(t, "ID", ToGo("id")) 31 require.Equal(t, "", ToGo("")) 32 33 require.Equal(t, "RelatedUrls", ToGo("RelatedUrls")) 34 require.Equal(t, "ITicket", ToGo("ITicket")) 35 require.Equal(t, "FooTicket", ToGo("fooTicket")) 36 } 37 38 func TestToGoPrivate(t *testing.T) { 39 require.Equal(t, "toCamel", ToGoPrivate("TO_CAMEL")) 40 require.Equal(t, "toCamel", ToGoPrivate("to_camel")) 41 require.Equal(t, "toCamel", ToGoPrivate("toCamel")) 42 require.Equal(t, "toCamel", ToGoPrivate("ToCamel")) 43 require.Equal(t, "toCamel", ToGoPrivate("to-camel")) 44 45 require.Equal(t, "relatedURLs", ToGoPrivate("RelatedURLs")) 46 require.Equal(t, "imageIDs", ToGoPrivate("ImageIDs")) 47 require.Equal(t, "fooID", ToGoPrivate("FooID")) 48 require.Equal(t, "idFoo", ToGoPrivate("IDFoo")) 49 require.Equal(t, "fooASCII", ToGoPrivate("FooASCII")) 50 require.Equal(t, "asciiFoo", ToGoPrivate("ASCIIFoo")) 51 require.Equal(t, "fooUTF8", ToGoPrivate("FooUTF8")) 52 require.Equal(t, "utf8Foo", ToGoPrivate("UTF8Foo")) 53 require.Equal(t, "jsonEncoding", ToGoPrivate("JSONEncoding")) 54 55 require.Equal(t, "relatedUrls", ToGoPrivate("RelatedUrls")) 56 require.Equal(t, "iTicket", ToGoPrivate("ITicket")) 57 58 require.Equal(t, "rangeArg", ToGoPrivate("Range")) 59 60 require.Equal(t, "a", ToGoPrivate("A")) 61 require.Equal(t, "id", ToGoPrivate("ID")) 62 require.Equal(t, "id", ToGoPrivate("id")) 63 require.Equal(t, "", ToGoPrivate("")) 64 } 65 66 func Test_wordWalker(t *testing.T) { 67 68 helper := func(str string) []*wordInfo { 69 resultList := []*wordInfo{} 70 wordWalker(str, func(info *wordInfo) { 71 resultList = append(resultList, info) 72 }) 73 return resultList 74 } 75 76 require.Equal(t, []*wordInfo{{Word: "TO"}, {Word: "CAMEL"}}, helper("TO_CAMEL")) 77 require.Equal(t, []*wordInfo{{Word: "to"}, {Word: "camel"}}, helper("to_camel")) 78 require.Equal(t, []*wordInfo{{Word: "to"}, {Word: "Camel"}}, helper("toCamel")) 79 require.Equal(t, []*wordInfo{{Word: "To"}, {Word: "Camel"}}, helper("ToCamel")) 80 require.Equal(t, []*wordInfo{{Word: "to"}, {Word: "camel"}}, helper("to-camel")) 81 82 require.Equal(t, []*wordInfo{{Word: "Related"}, {Word: "URLs", HasCommonInitial: true}}, helper("RelatedURLs")) 83 require.Equal(t, []*wordInfo{{Word: "Image"}, {Word: "IDs", HasCommonInitial: true}}, helper("ImageIDs")) 84 require.Equal(t, []*wordInfo{{Word: "Foo"}, {Word: "ID", HasCommonInitial: true, MatchCommonInitial: true}}, helper("FooID")) 85 require.Equal(t, []*wordInfo{{Word: "ID", HasCommonInitial: true, MatchCommonInitial: true}, {Word: "Foo"}}, helper("IDFoo")) 86 require.Equal(t, []*wordInfo{{Word: "Foo"}, {Word: "ASCII", HasCommonInitial: true, MatchCommonInitial: true}}, helper("FooASCII")) 87 require.Equal(t, []*wordInfo{{Word: "ASCII", HasCommonInitial: true, MatchCommonInitial: true}, {Word: "Foo"}}, helper("ASCIIFoo")) 88 require.Equal(t, []*wordInfo{{Word: "Foo"}, {Word: "UTF8", HasCommonInitial: true, MatchCommonInitial: true}}, helper("FooUTF8")) 89 require.Equal(t, []*wordInfo{{Word: "UTF8", HasCommonInitial: true, MatchCommonInitial: true}, {Word: "Foo"}}, helper("UTF8Foo")) 90 91 require.Equal(t, []*wordInfo{{Word: "A"}}, helper("A")) 92 require.Equal(t, []*wordInfo{{Word: "ID", HasCommonInitial: true, MatchCommonInitial: true}}, helper("ID")) 93 require.Equal(t, []*wordInfo{{Word: "id", HasCommonInitial: true, MatchCommonInitial: true}}, helper("id")) 94 require.Equal(t, []*wordInfo{}, helper("")) 95 96 require.Equal(t, []*wordInfo{{Word: "Related"}, {Word: "Urls"}}, helper("RelatedUrls")) 97 require.Equal(t, []*wordInfo{{Word: "ITicket"}}, helper("ITicket")) 98 } 99 100 func TestCenter(t *testing.T) { 101 require.Equal(t, "fffff", center(3, "#", "fffff")) 102 require.Equal(t, "##fffff###", center(10, "#", "fffff")) 103 require.Equal(t, "###fffff###", center(11, "#", "fffff")) 104 } 105 106 func TestTemplateOverride(t *testing.T) { 107 f, err := ioutil.TempFile("", "gqlgen") 108 if err != nil { 109 t.Fatal(err) 110 } 111 defer f.Close() 112 defer os.RemoveAll(f.Name()) 113 err = Render(Options{Template: "hello", Filename: f.Name()}) 114 if err != nil { 115 t.Fatal(err) 116 } 117 }