github.com/lenfree/buffalo@v0.7.3-0.20170207163156-891616ea4064/flash_test.go (about)

     1  package buffalo
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/gobuffalo/buffalo/render"
     7  	"github.com/markbates/willie"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func Test_FlashAdd(t *testing.T) {
    12  	r := require.New(t)
    13  	f := newFlash(&Session{})
    14  
    15  	r.Equal(f.data, map[string][]string{})
    16  
    17  	f.Add("error", "something")
    18  	r.Equal(f.data, map[string][]string{
    19  		"error": []string{"something"},
    20  	})
    21  
    22  	f.Add("error", "other")
    23  	r.Equal(f.data, map[string][]string{
    24  		"error": []string{"something", "other"},
    25  	})
    26  }
    27  
    28  func Test_FlashRender(t *testing.T) {
    29  	r := require.New(t)
    30  	a := Automatic(Options{})
    31  	rr := render.New(render.Options{})
    32  
    33  	a.GET("/", func(c Context) error {
    34  		c.Flash().Add("errors", "Error AJ set")
    35  		c.Flash().Add("errors", "Error DAL set")
    36  
    37  		return c.Render(201, rr.String(errorsTPL))
    38  	})
    39  
    40  	w := willie.New(a)
    41  	res := w.Request("/").Get()
    42  
    43  	r.Contains(res.Body.String(), "Error AJ set")
    44  	r.Contains(res.Body.String(), "Error DAL set")
    45  }
    46  
    47  func Test_FlashRenderEmpty(t *testing.T) {
    48  	r := require.New(t)
    49  	a := Automatic(Options{})
    50  	rr := render.New(render.Options{})
    51  
    52  	a.GET("/", func(c Context) error {
    53  		return c.Render(201, rr.String(errorsTPL))
    54  	})
    55  
    56  	w := willie.New(a)
    57  
    58  	res := w.Request("/").Get()
    59  	r.NotContains(res.Body.String(), "Flash:")
    60  }
    61  
    62  const errorsTPL = `{{#each flash.errors as |k value|}}
    63  	Flash:
    64      {{k}}:{{value}}
    65  {{/each}}`
    66  
    67  func Test_FlashRenderEntireFlash(t *testing.T) {
    68  	r := require.New(t)
    69  	a := Automatic(Options{})
    70  	rr := render.New(render.Options{})
    71  
    72  	a.GET("/", func(c Context) error {
    73  		c.Flash().Add("something", "something to say!")
    74  		return c.Render(201, rr.String(keyTPL))
    75  	})
    76  
    77  	w := willie.New(a)
    78  	res := w.Request("/").Get()
    79  	r.Contains(res.Body.String(), "something to say!")
    80  }
    81  
    82  const keyTPL = `{{#each flash as |k value|}}
    83  	Flash:
    84      {{k}}:{{value}}
    85  {{/each}}`
    86  
    87  func Test_FlashRenderCustomKey(t *testing.T) {
    88  	r := require.New(t)
    89  	a := Automatic(Options{})
    90  	rr := render.New(render.Options{})
    91  
    92  	a.GET("/", func(c Context) error {
    93  		c.Flash().Add("something", "something to say!")
    94  		return c.Render(201, rr.String(keyTPL))
    95  	})
    96  
    97  	w := willie.New(a)
    98  	res := w.Request("/").Get()
    99  	r.Contains(res.Body.String(), "something to say!")
   100  }
   101  
   102  func Test_FlashRenderCustomKeyNotDefined(t *testing.T) {
   103  	r := require.New(t)
   104  	a := Automatic(Options{})
   105  	rr := render.New(render.Options{})
   106  
   107  	a.GET("/", func(c Context) error {
   108  		return c.Render(201, rr.String(customKeyTPL))
   109  	})
   110  
   111  	w := willie.New(a)
   112  	res := w.Request("/").Get()
   113  	r.NotContains(res.Body.String(), "something to say!")
   114  }
   115  
   116  const customKeyTPL = `
   117  	{{#each flash.other as |k value|}}
   118  		{{value}}
   119  	{{/each}}`