Add API Framework Revel Source Files
[iec.git] / src / foundation / api / revel / results_test.go
diff --git a/src/foundation/api/revel/results_test.go b/src/foundation/api/revel/results_test.go
new file mode 100644 (file)
index 0000000..ce375d1
--- /dev/null
@@ -0,0 +1,73 @@
+// Copyright (c) 2012-2016 The Revel Framework Authors, All rights reserved.
+// Revel Framework source code and usage is governed by a MIT style
+// license that can be found in the LICENSE file.
+
+package revel
+
+import (
+       "fmt"
+       "net/http/httptest"
+       "strings"
+       "testing"
+)
+
+// Added test case for redirection testing for strings
+func TestRedirect(t *testing.T) {
+       startFakeBookingApp()
+       redirect := RedirectToURLResult{fmt.Sprintf("/hotels/index/foo")}
+       resp := httptest.NewRecorder()
+       c := NewTestController(resp, showRequest)
+       redirect.Apply(c.Request, c.Response)
+       if resp.Header().Get("Location") != "/hotels/index/foo" {
+               t.Errorf("Failed to set redirect header correctly. : %s", resp.Header().Get("Location"))
+       }
+}
+
+// Test that the render response is as expected.
+func TestBenchmarkRender(t *testing.T) {
+       startFakeBookingApp()
+       resp := httptest.NewRecorder()
+       c := NewTestController(resp, showRequest)
+       if err := c.SetAction("Hotels", "Show"); err != nil {
+               t.Errorf("SetAction failed: %s", err)
+       }
+       result := Hotels{c}.Show(3)
+       result.Apply(c.Request, c.Response)
+       if !strings.Contains(resp.Body.String(), "300 Main St.") {
+               t.Errorf("Failed to find hotel address in action response:\n%s", resp.Body)
+       }
+}
+
+func BenchmarkRenderChunked(b *testing.B) {
+       startFakeBookingApp()
+       resp := httptest.NewRecorder()
+       resp.Body = nil
+       c := NewTestController(resp, showRequest)
+       if err := c.SetAction("Hotels", "Show"); err != nil {
+               b.Errorf("SetAction failed: %s", err)
+       }
+       Config.SetOption("results.chunked", "true")
+       b.ResetTimer()
+
+       hotels := Hotels{c}
+       for i := 0; i < b.N; i++ {
+               hotels.Show(3).Apply(c.Request, c.Response)
+       }
+}
+
+func BenchmarkRenderNotChunked(b *testing.B) {
+       startFakeBookingApp()
+       resp := httptest.NewRecorder()
+       resp.Body = nil
+       c := NewTestController(resp, showRequest)
+       if err := c.SetAction("Hotels", "Show"); err != nil {
+               b.Errorf("SetAction failed: %s", err)
+       }
+       Config.SetOption("results.chunked", "false")
+       b.ResetTimer()
+
+       hotels := Hotels{c}
+       for i := 0; i < b.N; i++ {
+               hotels.Show(3).Apply(c.Request, c.Response)
+       }
+}