github.com/wawandco/oxplugins@v0.7.11/tools/buffalo/template/generator_test.go (about)

     1  package template
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"testing"
     7  )
     8  
     9  func Test_GenerateTemplate(t *testing.T) {
    10  	g := Generator{}
    11  
    12  	t.Run("generate template", func(t *testing.T) {
    13  		dir := t.TempDir()
    14  		if err := os.MkdirAll(filepath.Join(dir, "app", "templates"), os.ModePerm); err != nil {
    15  			t.Errorf("creating templates folder should not be error, but got %v", err)
    16  		}
    17  
    18  		if err := g.generateTemplate(dir, "amazon"); err != nil {
    19  			t.Errorf("should not be error, but got %v", err)
    20  		}
    21  	})
    22  
    23  	t.Run("generate template with subfolder", func(t *testing.T) {
    24  		dir := t.TempDir()
    25  		if err := os.MkdirAll(filepath.Join(dir, "app", "templates"), os.ModePerm); err != nil {
    26  			t.Errorf("creating templates folder should not be error, but got %v", err)
    27  		}
    28  
    29  		if err := g.generateTemplate(dir, "partials/sidebar"); err != nil {
    30  			t.Errorf("should not be error, but got %v", err)
    31  		}
    32  	})
    33  
    34  	t.Run("generate template with subfolder 2", func(t *testing.T) {
    35  		dir := t.TempDir()
    36  		if err := os.MkdirAll(filepath.Join(dir, "app", "templates"), os.ModePerm); err != nil {
    37  			t.Errorf("creating templates folder should not be error, but got %v", err)
    38  		}
    39  
    40  		if err := g.generateTemplate(dir, "templates/index"); err != nil {
    41  			t.Errorf("should not be error, but got %v", err)
    42  		}
    43  	})
    44  
    45  	t.Run("generated template already exists", func(t *testing.T) {
    46  		dir := t.TempDir()
    47  		templatesPath := filepath.Join(dir, "app", "templates")
    48  		if err := os.MkdirAll(templatesPath, os.ModePerm); err != nil {
    49  			t.Errorf("creating templates folder should not be error, but got %v", err)
    50  		}
    51  
    52  		if _, err := os.Create(filepath.Join(templatesPath, "ebay.plush.html")); err != nil {
    53  			t.Errorf("should not be error, but got %v", err)
    54  		}
    55  
    56  		if err := g.generateTemplate(dir, "ebay"); err == nil {
    57  			t.Errorf("should error, but got %v", err)
    58  		}
    59  	})
    60  
    61  	t.Run("generate template when templates folder do not exists", func(t *testing.T) {
    62  		if err := g.generateTemplate("", "user"); err == nil {
    63  			t.Errorf("should error, but got %v", err)
    64  		}
    65  	})
    66  }
    67  
    68  func Test_GenerateFilePath(t *testing.T) {
    69  	g := Generator{}
    70  	cases := []struct {
    71  		expected string
    72  		fileName string
    73  		testName string
    74  	}{
    75  		{
    76  			testName: "normal filename",
    77  			fileName: "user",
    78  			expected: "user.plush.html",
    79  		},
    80  		{
    81  			testName: "filename with extension 1",
    82  			fileName: "amazon.plush.html",
    83  			expected: "amazon.plush.html",
    84  		},
    85  		{
    86  			testName: "filename with extension 2",
    87  			fileName: "ebay.html",
    88  			expected: "ebay.plush.html",
    89  		},
    90  	}
    91  
    92  	for _, c := range cases {
    93  		t.Run(c.testName, func(t *testing.T) {
    94  			filePath := g.generateFilePath("", c.fileName)
    95  
    96  			if filePath != c.expected {
    97  				t.Errorf("test was expecting %s, got %s", c.expected, filePath)
    98  			}
    99  		})
   100  	}
   101  }