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  }